lunes, 13 de abril de 2015

VBA: Pasar imagen de Excel a Word.

Hoy veremos un sencillo código para traspasar, mediante macros, una imagen desde nuestra hoja de cálculo a un documento de Word (insertado en una Tabla).
De especial en este ejemplo, es que generamos una Tabla en nuestro documento de Word, en la cual insertamos la imagen.
Además verificaremos si existe el fichero .docx o no, tomando el nombre del fichero de la celda G1.


Tenemos la siguiente imagen superpuesta en un rango de celdas... la idea es seleccionar el rango y copiarlo como imagen, para luego copiar y pegarlo en un documento de Word.

VBA: Pasar imagen de Excel a Word.



Insertamos el código asociado al control CommandButton y ejecutamos el siguiente procedimiento:

Private Sub CommandButton1_Click()
'con la referencia Microsoft Word 15.0 Object Library
Dim tabla As Object
'copiamos el rango de la hoja de cálculo
Sheets("ExcelToWord").Select
Range("B1:E11").CopyPicture xlScreen, xlPicture

'definimos la ruta destino del documento de Word
'tomando como nombre de docx el valor de la celda G1
Dim archivo As String
archivo = "E:\excelforo\" & Range("G1") & ".docx"
'Creamos el documento
Set objWord = CreateObject("Word.Application")
'y lo hacemos visible
objWord.Visible = True

'verificamos si existe o no un .docx con ese nombre (celda G1)
With objWord
    If Dir(archivo) = "" Then
        'si no existe lo añadimos nuevo
        Set objDoc = objWord.Documents.Add
        objDoc.SaveAs (archivo)
     Else
        'si existe lo abrimos
        Set objDoc = .Documents.Open(archivo)
    End If
End With
'generamos una Tabla en el documento de Word
Set tabla = objDoc.Tables.Add(objDoc.Range, 1, 1)
'y pegamos en la celda 'A1' de la tabla de Word la imagen
tabla.cell(1, 1).Range.Paste
'acabamos guardando el Word
objDoc.Save
     
Set tabla = Nothing
End Sub



Tras ejecutar el proceso veremos nuestro documento Word:

VBA: Pasar imagen de Excel a Word.



NOTA: es importante activar/habilitar la referencia 'Microsoft Word 15.0 Object Library'

1 comentario: