Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si desea ejecutar código de una aplicación de Microsoft Office que trabaje con los objetos de otra aplicación, siga estos pasos.
Para ejecutar el código
Establezca una referencia a la biblioteca de tipos de la otra aplicación en el cuadro de diálogo Referencias (menú Herramientas). A continuación, los objetos, las propiedades y los métodos aparecen en el Examinador de objetos, y la sintaxis se comprobará en tiempo de compilación. Además, puede obtener Ayuda contextual acerca de estos elementos.
Declare como tipos específicos las variables de objeto que harán referencia a los objetos de la otra aplicación. Cualifique cada tipo con el nombre de la aplicación que proporciona el objeto. Por ejemplo, la siguiente instrucción declara una variable que señala un documento de Microsoft Word y otra que hace referencia a un libro de Microsoft Excel.
Dim appWD As Word.Application, wbXL As Excel.Workbook
Nota Debe seguir los pasos anteriores si desea que el código esté enlazado en tiempo de ejecución.
Use la función CreateObject con los identificadores programáticos OLE del objeto con el que desee trabajar en otra aplicación, como se muestra en el siguiente ejemplo. Si desea ver la sesión de la otra aplicación, establezca la propiedad Visible en True.
Dim appWD As Word.Application Set appWD = CreateObject("Word.Application") appWd.Visible = True
Aplique las propiedades y métodos al objeto contenido en la variable. Por ejemplo, la siguiente instrucción crea un nuevo documento de Word.
Dim appWD As Word.Application Set appWD = CreateObject("Word.Application") appWD.Documents.Add
Una vez finalizado el trabajo con la otra aplicación, use el método Quit para cerrarla y, a continuación, establezca la variable de objetos como Nothing para liberar cualquier memoria que esté usando, como muestra el siguiente ejemplo.
appWd.Quit Set appWd = Nothing
Código de ejemplo proporcionado por: Bill Jelen, MrExcel.com El siguiente ejemplo de código crea un nuevo archivo de Word de Microsoft Office para cada fila de datos de una hoja de cálculo.
' You must pick Microsoft Word Object Library from Tools>References
' in the VB editor to execute Word commands.
Sub ControlWord()
Dim appWD As Word.Application
' Create a new instance of Word and make it visible
Set appWD = CreateObject("Word.Application.12")
appWD.Visible = True
' Find the last row with data in the spreadsheet
FinalRow = Range("A9999").End(xlUp).Row
For i = 1 To FinalRow
' Copy the current row
Worksheets("Sheet1").Rows(i).Copy
' Tell Word to create a new document
appWD.Documents.Add
' Tell Word to paste the contents of the clipboard into the new document.
appWD.Selection.Paste
' Save the new document with a sequential file name.
appWD.ActiveDocument.SaveAs Filename:="File" & i
' Close the new Word document.
appWD.ActiveDocument.Close
Next i
' Close the Word application.
appWD.Quit
End Sub
Código de ejemplo proporcionado por: Dennis Wallentin, VSTO & .NET & Excel Este ejemplo toma los valores de celdas de un rango con nombre, W_Data, que contiene tres valores e inserta esos valores en un documento de Word. Los valores se insertan en las ubicaciones de marcador denominadas td1, td2, y td3. Para ejecutar este ejemplo, debe tener un rango denominado W_Data que contenga tres valores en Sheet1 del libro. Debe tener un documento de Word llamado Test.docx guardado en la misma ubicación que el libro de Excel y el documento de Word debe tener tres marcadores denominados td1, td2 y td3.
' You must pick Microsoft Word Object Library from Tools>References
' in the Visual Basic editor to execute Word commands.
Option Explicit
Sub Add_Single_Values_Word()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRange1 As Word.Range
Dim wdRange2 As Word.Range
Dim wdRange3 As Word.Range
Dim wbBook As Workbook
Dim wsSheet As Worksheet
Dim vaData As Variant
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Sheet1")
vaData = wsSheet.Range("W_Data").Value
' Instantiate the Word Objects.
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\Test.docx")
With wdDoc
Set wdRange1 = .Bookmarks("td1").Range
Set wdRange2 = .Bookmarks("td2").Range
Set wdRange3 = .Bookmarks("td3").Range
End With
' Write values to the bookmarks.
wdRange1.Text = vaData(1, 1)
wdRange2.Text = vaData(2, 1)
wdRange3.Text = vaData(3, 1)
With wdDoc
.Save
.Close
End With
wdApp.Quit
' Release the objects from memory.
Set wdRange1 = Nothing
Set wdRange2 = Nothing
Set wdRange3 = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
Acerca de los colaboradores
Bill Jelen, MVP, es autor de más de veinticinco libros sobre Microsoft Excel. Es invitado habitual en TechTV con Leo Laporte y es el administrador de MrExcel.com, un sitio web que incluye más de 300 000 preguntas y respuestas sobre Excel.
Dennis Wallentin es el autor de VSTO & .NET & Excel, un blog que se centra en soluciones de .NET Framework para Excel y Excel Services. Dennis lleva más de veinte años desarrollando soluciones de Excel y es, además, coautor de "Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA and .NET (2nd Edition)".
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.