OLE (Object Linking and Embdding) es una tecnología que nos permite manipular objetos de otra aplicación directamente desde VBA Excel.
Para poder funcionar se necesita un servidor, llamado servidor OLE. Este servidor no es más que una aplicación que nos permite manipular sus objetos.
Para tener acceso a los objetos de la aplicación con la que queremos interactuar se debe de referenciar de la siguiente manera:
En él nos aparecen todos los servidores guardados con los que podemos trabajar, en este caso seleccionamos Microsof Word 12.0 Object Library y Microsoft ActiveX Data Objects 2.8 Library, puedes encontrarte con alguna versión superior dependiendo de la versión Office que utilices.
En el siguiente procedimiento veremos como pegar un gráfico de una hoja Excel en un documento Word para presentarlo.
Sub CopiarWord()
Dim appWord As New Word.Application
Dim docWord As New Word.Document
Dim rng As Range
' Agregamos un nuevo documento....
With appWord
.Visible = True
Set docWord = .Documents.Add
.Activate
End With
With appWord.Selection
' Le damos formato al documento......
.HomeKey unit:=wdLine, Extend:=wdExtend
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Font.Size = 18
With .Font
.Name = "Verdana"
.Size = 18
.Bold = True
.Italic = False
.Smallcaps = True
End With
' Copiar el grafico de excel.......
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
' Pegamos el grafico......
.TypeParagraph
.TypeParagraph
.Paste
End With
With docWord
'Guardamos el documento en la misma carpeta que el fichero Excel..
.SaveAs ThisWorkbook.Path & "\Prueba.doc"
' vista previa antes de imprimir
.PrintPreview
End With
Set appWord = Nothing
End Sub