domingo, 27 de noviembre de 2011

Comunicación con Word

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:

Nos vamos a la opción Referencias del menú Herramientas y nos aparece el siguiente cuadro.




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

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.