Macro para pegar rangos Excell

15/10/2007 - 10:36 por violeta | Informe spam
Hola a todos, os cuento lo que me pasa:

Al ejecutar una macro que pega o que vincula distintos rangos de excell a un
documento de word, la ejecuta pegando o vinculando solamente el último rango
marcado. El código que genera la macro es siguiente:


Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 15/10/2007
'
Selection.MoveDown Unit:=wdLine, Count:q
Selection.MoveUp Unit:=wdLine, Count:
Selection.PasteExcelTable False, False, False
Selection.MoveDown Unit:=wdLine, Count:ƒ
Selection.PasteExcelTable False, False, False
Selection.MoveDown Unit:=wdLine, Count:x
Selection.PasteExcelTable False, False, False
Selection.MoveDown Unit:=wdLine, Count:=2
End Sub


Gracias, espero me podais ayudar.

Preguntas similare

Leer las respuestas

#1 Tux
15/10/2007 - 16:07 | Informe spam
Hola Violeta,

Hola a todos, os cuento lo que me pasa:

Al ejecutar una macro que pega o que vincula distintos rangos de excell a un
documento de word, la ejecuta pegando o vinculando solamente el último rango
marcado. El código que genera la macro es siguiente:


Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 15/10/2007
'
Selection.MoveDown Unit:=wdLine, Count:q
Selection.MoveUp Unit:=wdLine, Count:
Selection.PasteExcelTable False, False, False
Selection.MoveDown Unit:=wdLine, Count:ƒ
Selection.PasteExcelTable False, False, False
Selection.MoveDown Unit:=wdLine, Count:x
Selection.PasteExcelTable False, False, False
Selection.MoveDown Unit:=wdLine, Count:=2
End Sub


Gracias, espero me podais ayudar.






Pues se supone según el codigo que expones, que estas pegando en word
una tabla de excel de [ rangos o celdas ] que estan en el Clipboard o
portapapeles, [ osea se copiar y pegar ] y sin vincularlos.

Pero esto solo funcionara con el ultimo valor copiado , es decir que el
codigo siempre te tomara el ultimo valor del rango, celda ,tabla copiado
de excel para pegarlo en word , entonces

Pregunto :

Necesitas traerte rangos de excel a word vinculados ?

Comentanos como tienes extruturado el documento de word para poder
importar esos datos de excel,


Comentanos ok? :)

Saludos
Monica



Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

» Now We are free [Enya]
» United states of love [ Westbam and the love commitee ]

www.fermu.com
Respuesta Responder a este mensaje
#2 violeta
16/10/2007 - 10:05 | Informe spam
"Tux" escribió:

Hola Violeta,

> Hola a todos, os cuento lo que me pasa:
>
> Al ejecutar una macro que pega o que vincula distintos rangos de excell a un
> documento de word, la ejecuta pegando o vinculando solamente el último rango
> marcado. El código que genera la macro es siguiente:
>
>
> Sub Macro1()
> '
> ' Macro1 Macro
> ' Macro grabada el 15/10/2007
> '
> Selection.MoveDown Unit:=wdLine, Count:q
> Selection.MoveUp Unit:=wdLine, Count:
> Selection.PasteExcelTable False, False, False
> Selection.MoveDown Unit:=wdLine, Count:ƒ
> Selection.PasteExcelTable False, False, False
> Selection.MoveDown Unit:=wdLine, Count:x
> Selection.PasteExcelTable False, False, False
> Selection.MoveDown Unit:=wdLine, Count:=2
> End Sub
>
>
> Gracias, espero me podais ayudar.
>
>
>

Pues se supone según el codigo que expones, que estas pegando en word
una tabla de excel de [ rangos o celdas ] que estan en el Clipboard o
portapapeles, [ osea se copiar y pegar ] y sin vincularlos.

Pero esto solo funcionara con el ultimo valor copiado , es decir que el
codigo siempre te tomara el ultimo valor del rango, celda ,tabla copiado
de excel para pegarlo en word , entonces

Pregunto :

Necesitas traerte rangos de excel a word vinculados ?

Comentanos como tienes extruturado el documento de word para poder
importar esos datos de excel,


Comentanos ok? :)

Saludos
Monica



Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

» Now We are free [Enya]
» United states of love [ Westbam and the love commitee ]

www.fermu.com


Hola Mónica,



El documento Word en el que tengo que incluir determinados rangos de excell
es el resultante de una combinación, y por eso había pensado en una macro,
para ejecutarla una vez obtenido el documento final de la combinación, pero
mejor si se puede hacer con vínculos. Lo que ocurre es que al hacer la
combinación me genera un documento distinto, con lo cual tendría que volver a
insertar los vínculos.

Gracias por todo.










Respuesta Responder a este mensaje
#3 Tux
16/10/2007 - 14:15 | Informe spam
Hola Violeta :-)


Hola Mónica,



El documento Word en el que tengo que incluir determinados rangos de excell
es el resultante de una combinación, y por eso había pensado en una macro,
para ejecutarla una vez obtenido el documento final de la combinación, pero
mejor si se puede hacer con vínculos. Lo que ocurre es que al hacer la
combinación me genera un documento distinto, con lo cual tendría que volver a
insertar los vínculos.

Gracias por todo.



Bien prueba el siguiente codigo:

1- tendras que hacer referencia a la librería :

» Microsoft Excel Xx.0 Object Library [ donde » XX.0 dependera de tu
version de office ]

Para hacer referencia a la librería de excel:

Desde visual basic de word busca el menu :

menu » Herramientas » referencias , busca ahi la referencia

Microsoft Excel 11.0 Object Library

Y acepta.

Luego coloca el siguiente codigo en un modulo:

'[]

Sub rangos_excel_word()

Dim X As Excel.Application
Dim Y As Excel.Workbook
Dim problems As Boolean

On Error Resume Next

Set X = GetObject(, "Excel.Application")

If Err Then
problems = True
Set X = New Excel.Application
End If

On Error GoTo 0

Set Y = X.Workbooks.Open _
("G:\Documents and Settings\Monica\Escritorio\dos.xls")

Y.Sheets("hoja1").Range("a1:a10").Copy
Selection.PasteExcelTable False, False, False

X.Quit

Set Y = Nothing:
Set X = Nothing

End Sub

'[]


Luego es mejor que definas nombres en excel a las celdas de excel que
quieras traerte , por ejemplo seleccionas las celdas en excel las cuales
quieres traerte y les defines nombre y le pones por ejemplo: "lunes"
luego solo tendrias que cambiar en el codigo la siguiente linea:

Y.Sheets("hoja1").Range("a1:a10").Copy

Por:

Y.Sheets("hoja1").Range("lunes").Copy

Y si tienes que coger varios rangos se puede coger y añadir un inputbox
para coger diferentes rangos pero de momento prueba y nos comentas ok? :-)

Saludos
Monica



Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

» Now We are free [Enya]
» United states of love [ Westbam and the love commitee ]

www.fermu.com
Respuesta Responder a este mensaje
#4 violeta
25/10/2007 - 11:14 | Informe spam
Hola Mónica,

He probado escribiendo el código que me dices y lo primero que hace es darme
un error de compilación al ejecutarlo

Dim X As Excel.Application
"Me dice que no se ha definido el tipo definido por el usuario"

Pero aparte no entiendo si para poner los distintos rangos debo añadir
tantas veces como rangos quiera copiar, la instruccion:
Y.Sheets("hoja1").Range("meses").Copy
Selection.PasteExcelTable False, False, False

para cada rango que quiera copiar. Y otra cosa, cómo le digo el lugar exacto
del documento Word donde quiero que me ponga cada rango.

Gracias

"Tux" escribió:

Hola Violeta :-)


>> Hola Mónica,
>
> El documento Word en el que tengo que incluir determinados rangos de excell
> es el resultante de una combinación, y por eso había pensado en una macro,
> para ejecutarla una vez obtenido el documento final de la combinación, pero
> mejor si se puede hacer con vínculos. Lo que ocurre es que al hacer la
> combinación me genera un documento distinto, con lo cual tendría que volver a
> insertar los vínculos.
>
> Gracias por todo.

Bien prueba el siguiente codigo:

1- tendras que hacer referencia a la librería :

» Microsoft Excel Xx.0 Object Library [ donde » XX.0 dependera de tu
version de office ]

Para hacer referencia a la librería de excel:

Desde visual basic de word busca el menu :

menu » Herramientas » referencias , busca ahi la referencia

Microsoft Excel 11.0 Object Library

Y acepta.

Luego coloca el siguiente codigo en un modulo:

'[]

Sub rangos_excel_word()

Dim X As Excel.Application
Dim Y As Excel.Workbook
Dim problems As Boolean

On Error Resume Next

Set X = GetObject(, "Excel.Application")

If Err Then
problems = True
Set X = New Excel.Application
End If

On Error GoTo 0

Set Y = X.Workbooks.Open _
("G:\Documents and Settings\Monica\Escritorio\dos.xls")

Y.Sheets("hoja1").Range("a1:a10").Copy
Selection.PasteExcelTable False, False, False

X.Quit

Set Y = Nothing:
Set X = Nothing

End Sub

'[]


Luego es mejor que definas nombres en excel a las celdas de excel que
quieras traerte , por ejemplo seleccionas las celdas en excel las cuales
quieres traerte y les defines nombre y le pones por ejemplo: "lunes"
luego solo tendrias que cambiar en el codigo la siguiente linea:

Y.Sheets("hoja1").Range("a1:a10").Copy

Por:

Y.Sheets("hoja1").Range("lunes").Copy

Y si tienes que coger varios rangos se puede coger y añadir un inputbox
para coger diferentes rangos pero de momento prueba y nos comentas ok? :-)

Saludos
Monica



Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

» Now We are free [Enya]
» United states of love [ Westbam and the love commitee ]

www.fermu.com










Respuesta Responder a este mensaje
#5 Tux
25/10/2007 - 21:44 | Informe spam
Hola Violeta :-)

Hola Mónica,

He probado escribiendo el código que me dices y lo primero que hace es darme
un error de compilación al ejecutarlo

Dim X As Excel.Application
"Me dice que no se ha definido el tipo definido por el usuario"

Pero aparte no entiendo si para poner los distintos rangos debo añadir
tantas veces como rangos quiera copiar, la instruccion:
Y.Sheets("hoja1").Range("meses").Copy
Selection.PasteExcelTable False, False, False

para cada rango que quiera copiar. Y otra cosa, cómo le digo el lugar exacto
del documento Word donde quiero que me ponga cada rango.

Gracias




Bien ves al Editor de visual basic y busca el menu » herramientas »
Referencias y ahi busca :

Microsoft Excel 11.0 Object Library [ donde » XX.0 dependera de tu
version de office ]



Si tienes Excel 2003 sera la referencia » Microsoft Excel 11.0 object
Library

si tienes el Excel 2002 entoces sera » Microsfot excel 10.0 object
library y ect.

Lo seleccionas y aceptas :-)

Bien una vez tenemos eso ya podemos ejecutar el codigo con excel y
interactuar con el :-)

Bien te voy a pasar unos codigos » El primero te trae los datos mediante
un inputbox :

Ejecutas el codigo y te pide los rangos a poner [ puedes utilizar por
ejemplo » A1:A20 « o tambien puedes traerte los rangos si los has
definido como por ejemplo [ meses ] y te lo pegara alli donde tu tengas
el cursor :-)


'-el codigo --

Sub rangos_input_word()

Dim x As Excel.Application
Dim Y As Excel.Workbook
Dim problems As Boolean
Dim Definido As String

On Error Resume Next

Set x = GetObject(, "Excel.Application")

If Err Then
problems = True
Set x = New Excel.Application
End If

On Error GoTo 0

Set Y = x.Workbooks.Open _
("c:\libro1.xls")
Definido = InputBox("Pon el rango que quieras pegar ")

Y.Sheets("hoja1").Range(Definido).Copy
Selection.PasteExcelTable False, False, False

x.Quit

Set Y = Nothing:
Set x = Nothing

End Sub

'-fin del 1ºcodigo-


Y el segundo codigo te trae los datos ya en el documento perooo tendras
que crear marcadores en el documento de word para que cuando se ejecute
el codigo sepa donde poner los datos :)

POr ejemplo pon en el documento dos marcadores y llamalos »

Uno y dos

y luego ejecuta el siguiente codigo :

'segundo codigo -

Sub rangos_excels_word()

Dim x As Excel.Application
Dim Y As Excel.Workbook
Dim problems As Boolean

On Error Resume Next

Set x = GetObject(, "Excel.Application")

If Err Then
problems = True
Set x = New Excel.Application
End If

On Error GoTo 0

Set Y = x.Workbooks.Open _
("c:\libro1.xls")
With Y.Sheets("hoja1")
.[A1:a10].Copy
Selection.GoTo What:=wdGoToBookmark, Name:="uno"
Selection.PasteAndFormat (wdPasteDefault)
.[martes].Copy
Selection.GoTo What:=wdGoToBookmark, Name:="dos"
Selection.PasteExcelTable False, False, False
End With

x.Quit

Set Y = Nothing:
Set x = Nothing

End Sub

'fin del codigo

Bueno y si cualquier problema o duda o demas ya sabes nos comentas :-) :-)

saludos
Monica



Estado: A la Espera By Fermu

Tic-Tac-Tic-Tac...

» Now We are free [Enya]
» United states of love [ Westbam and the love commitee ]

www.fermu.com
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida