Eric tiene una base de datos de Excel con información de la empresa. Quiere usar una macro de Excel para copiar direcciones e información de la base de datos en diferentes documentos de Word. Eric siente curiosidad por saber cómo puede hacer que una macro de Excel abra un documento de Word específico en el que se pegará la información.

Una forma de realizar esta tarea es simplemente no usar Excel. En su lugar, utilice la función de combinación de correspondencia de Word para extraer información de una base de datos de Excel.

Este enfoque funciona mejor si está creando un documento a partir de información bien definida. Sin embargo, si necesita abrir una serie de documentos y copiar los datos de la base de datos de Excel en los documentos, la combinación de correspondencia no funcionará.

Word tiene un nombre especial para usar macros para trabajar con diferentes aplicaciones de Office: Automatización de Office. Crear macros de Office Automation es un poco más complejo que crear una macro que funcionará únicamente dentro de una aplicación específica, como Excel. Una de las cosas que puede querer hacer es descargar un archivo de ayuda gratuito que incluye mucha información sobre las aplicaciones de Office Automation. Puede descargar el archivo en la siguiente página de Microsoft:

http://support.microsoft.com/kb/302460

El procedimiento básico para abrir un documento de Word desde una macro de Excel es crear un objeto que haga referencia a la aplicación de Word y luego usar ese objeto para abrir el documento. El siguiente código ilustra este concepto:

Sub OpenWord()

Dim wdApp As Object     Dim wdDoc As Object     Set wdApp = CreateObject("Word.application")

Set wdDoc = wdApp.Documents.Open _       (FileName:="C:\Path\myTestDoc.doc")



' put your code here for working with Word ' This is Word VBA code, not Excel code

wdDoc.Close savechanges:=False     Set wdDoc = Nothing     wdApp.Quit     Set wdApp = Nothing End Sub

Deberá cambiar la ruta y el nombre del documento que desea abrir, pero este código demuestra muy bien lo que debe hacerse para abrir el documento. Tal como está escrito, el documento de Word (de hecho, toda la aplicación de Word) no estará visible en la pantalla. Si prefiere tener la aplicación visible, debe usar esta línea de código cerca del comienzo de la macro:

wdApp.Visible = True

Otro método para trabajar con un archivo de Word desde dentro de su macro de Excel es usar DDE y la función SendKeys para copiar la información.

Considere el siguiente comando DDE:

ChannelNumber=Application.DDEInitiate{ _   app:="WinWord", topic:=FullPath

El método DDEInitiate usa dos propiedades: aplicación y tema. La propiedad de la aplicación indica la aplicación que está abriendo a través de DDE. Los ejemplos típicos podrían ser «calc» para la calculadora o «WinWord» (en este caso)

para la aplicación Word. La propiedad del tema indica la ruta completa al archivo del documento que está abriendo. En este caso, la ruta completa está contenida en la variable FullPath.

Con este método, puede abrir un documento y luego usar SendKeys para copiar información a ese documento:

Sub PasteExcel2Word()

Dim channelNumber As String  'Application Handle     Dim FullPath As String

FullPath = 'C:\MyFolder\MyFile.Doc'     'Replace above with a file or loop of files

Selection.Copy  'Assumes you hilighted what you want copied

channelNumber = Application.DDEInitiate( _       app:="WinWord", topic:=FullPath     SendKeys "^v", False

Application.DDETerminate channelNumber End Sub

El método Copiar se usa para copiar información al Portapapeles, y luego SendKeys usa ^ v (Ctrl + V) para pegar la información en el documento de Word abierto usando DDEInitiate.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2423) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.