pasar hoja de Excel a word con macro.

24/06/2005 - 18:18 por Dr_Rodriguez | Informe spam
Buenas tardes.

Necesito dentro de mi labor diaria pasar muchas veces un formulario que
tengo "prehecho" de excel a word como una imagen, lo hago usando la camara
de excel y copiando y pegando la imagen en word pero se hace muy tedioso a
medida que avanza la cantidad de informacion que manejamos.
Alguien sabria como hacer ese paso de la camara seleccionando un rango Ej:
a1:j42 y pasarlo como fotografia a un archivo nuevo de word??
Intente hacerlo grabando una macro y no pude lograrlo.

GRacias y saludos

Leo.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/06/2005 - 03:03 | Informe spam
hola, Leo !

... labor diaria pasar muchas veces un formulario... de excel a word como una imagen
... usando la camara... copiando y pegando la imagen en word
... muy tedioso a medida que avanza la cantidad de informacion
... hacer ese paso de la camara seleccionando... Ej: a1:j42 y pasarlo como fotografia a un archivo nuevo de word?



si suponemos que el rango de ejemplo es [realmente] la 'region actual' iniciando en 'A1'...
[y asi... 'a bote pronto'] prueba con las siguientes lineas de una macro...
en un modulo de codigo 'normal' ==Sub CopiarImagenAmsWord()
[a1].CurrentRegion.CopyPicture
With CreateObject("Word.Application")
.Visible = True
.Documents.Add
.Selection.Paste
End With
End Sub

[seguramente] habra alguos 'detalles que ajustar' [que espero ya comentaras] :))
saludos,
hector.
Respuesta Responder a este mensaje
#2 Dr_Rodriguez
28/06/2005 - 17:55 | Informe spam
Excelente!!!

Detalle: solo me toma el rango [a1] como esta definido en:
[a1].CurrentRegion.CopyPicture


Trayendo como resultado lo que deseo pero copiando solo la celda a1.
Siendo el
Existe forma de ampliarla por ejemplo a: Range("A1:K42")?
Intenté con [a1,k42] y no funciona.

Saludos

Leo.


"Héctor Miguel" wrote in message
news:%
hola, Leo !

> ... labor diaria pasar muchas veces un formulario... de excel a word


como una imagen
> ... usando la camara... copiando y pegando la imagen en word
> ... muy tedioso a medida que avanza la cantidad de informacion
> ... hacer ese paso de la camara seleccionando... Ej: a1:j42 y pasarlo


como fotografia a un archivo nuevo de word?

si suponemos que el rango de ejemplo es [realmente] la 'region actual'


iniciando en 'A1'...
[y asi... 'a bote pronto'] prueba con las siguientes lineas de una


macro...
en un modulo de codigo 'normal' ==> Sub CopiarImagenAmsWord()
[a1].CurrentRegion.CopyPicture
With CreateObject("Word.Application")
.Visible = True
.Documents.Add
.Selection.Paste
End With
End Sub

[seguramente] habra alguos 'detalles que ajustar' [que espero ya


comentaras] :))
saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
28/06/2005 - 17:59 | Informe spam
hola, Leo !

Detalle: solo me toma el rango [a1] como esta definido en:
[a1].CurrentRegion.CopyPicture


Trayendo como resultado lo que deseo pero copiando solo la celda a1.
Existe forma de ampliarla por ejemplo a: Range("A1:K42")?
Intente con [a1,k42] y no funciona.



debido a tu comentario de que la informacion era 'de/creciente'...
'asumi' que no habia [demasiadas] celdas vacias entre 'A1' y 'K42' :(
prueba modificando la instruccion...
de -> [a1].CurrentRegion.CopyPicture
a -> [a1:k42].CopyPicture
o -> Range("a1:k42").CopyPicture

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Dr_Rodriguez
29/06/2005 - 17:34 | Informe spam
Mr. Hector Miguel gracias por la ayuda, funciona excelente, la estructura
final es:

Private Sub translate_Click()
Range("B1:B22").Select
Range("B22").Activate
Selection.Copy
Sheets("Translate From").Select
Range("A1:A22").Select
ActiveSheet.Paste
Sheets("Release Number").Select
Range("A1:K42").Select
[a1:k42].CopyPicture
With CreateObject("Word.Application")
.Visible = True
.Documents.Add
.Selection.Paste
End With
End Sub

Al ejecutarla desde un "boton" puesto en la hoja donde pego los datos me da
error en:
Range("A1:A22").Select
ActiveSheet.Paste

Existe forma de que no moleste?
El libro tiene 3 hojas:
1.- Donde pego los datos "crudos" (raw data)
2.- Donde son traducidos (translate form)
3.- La que se copia a Word con los datos estructurados como plantilla.

Gracias y saludos desde la soleada Florida

Leo
Miami. Fl.

"Héctor Miguel" wrote in message
news:uzBGsp$
hola, Leo !

> Detalle: solo me toma el rango [a1] como esta definido en:
>> [a1].CurrentRegion.CopyPicture
> Trayendo como resultado lo que deseo pero copiando solo la celda a1.
> Existe forma de ampliarla por ejemplo a: Range("A1:K42")?
> Intente con [a1,k42] y no funciona.

debido a tu comentario de que la informacion era 'de/creciente'...
'asumi' que no habia [demasiadas] celdas vacias entre 'A1' y 'K42' :(
prueba modificando la instruccion...
de -> [a1].CurrentRegion.CopyPicture
a -> [a1:k42].CopyPicture
o -> Range("a1:k42").CopyPicture

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.


Respuesta Responder a este mensaje
#5 Héctor Miguel
29/06/2005 - 20:43 | Informe spam
hola, Leo !

... gracias... funciona... la estructura final es:
Private Sub translate_Click()
Range("B1:B22").Select [...]
... ejecutarla desde un "boton" puesto en la hoja donde pego los datos me da error en:
Range("A1:A22").Select [...]
... forma de que no moleste? El libro tiene 3 hojas:
1.- Donde pego los datos "crudos" (raw data)
2.- Donde son traducidos (translate form)
3.- La que se copia a Word con los datos estructurados como plantilla.



[probablemente] la falla se debe a que al usar 'directamente' CADA instruccion Range("...").Select
-> estando la macro en un modulo 'de clase' [objeto worksheet] por efectos de un objeto 'incrustado' [boton ActiveX]
el codigo 'asume' que el rango especificado se encuentra en la misma hoja que el modulo de codigo 'de clase' :-(
es decir... no esta 'tomando aviso' de que hubo un cambio de hoja [previamente con instrucciones Sheets("...").Select]
en este caso... 'confirmale' que el rango hace referencia a una hoja 'diferente' [de su modulo] pero... ES la hoja 'activa' ;)
[p.e.]
Sheets("Translate From").Select
ActiveSheet.Range("A1:A22").Select

otra alternativa es que 'omitas' toda [y tanta] re/seleccion de objetos [hojas y rangos] y apliques directamente las acciones... [p.e.]
Private Sub translate_Click()
Range("b1:b22").Copy Sheets("translate from").Range("a1")
Sheets("release number").Range("a1:h20").CopyPicture
With CreateObject("Word.Application")
.Visible = True
.Documents.Add
.Selection.Paste
End With
End Sub

si cualquier duda... comentas?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida