Ejemplos de macros de Word y tutorial de VBA

¡Bienvenido a nuestra Mega-Guía de Word VBA / Macros!

Esta pagina contiene:

    1. PDF tutorial de Word VBA (descarga gratuita)
    2. "Hoja de referencia" de Word VBA que contiene una lista de los fragmentos de código de Word VBA más utilizados
    3. Tutorial completo de Word VBA / Macro.
    4. Lista de búsqueda de todos nuestros tutoriales de macros de Word VBA

También podría estar interesado en nuestro Tutorial interactivo de VBA para Excel. Si bien algunos de los ejemplos / ejercicios son específicos de Excel VBA, gran parte del contenido es genérico para todos los VBA y puede resultarle útil aprender conceptos como If Statements, Loops, MessageBoxes y más.

VBA PDF (descargas gratuitas)

¡Descargue nuestro tutorial gratuito de Microsoft Word VBA! ¡O tutoriales de VBA para otros programas de Office!

Descargar

Ejemplos de Word VBA "CheatSheet"

A continuación, encontrará ejemplos sencillos de código VBA para trabajar con Microsoft Word.

Seleccionar / Ir a

DescripciónCódigo VBARetrocesoSelection.TypeBackspaceSeleccionar todo el documentoSelection.HomeKey Unidad: = wdStory
Selección.ExtenderDupdoSelección. CopiarBorrarSelection.Delete Unit: = wdCharacter, Count: = 1Insertar despuésSelection.InsertAfter "texto"Principio de líneaSelection.HomeKey Unidad: = wdLineFin de la líneaSelection.EndKey Unidad: = wdLinePegarSelection.PasteSeleccionar todoSelección.WholeStorySeleccione toda la líneaUnidad Selection.EndKey: = wdLine, Extend: = wdExtendSubir párrafoUnidad Selection.MoveUp: = wdParagraph, Count: = 1Mover un personaje a la derechaUnidad Selection.MoveRight: = wdCharacter, Count: = 1Mover una celda a la derecha en la tablaUnidad Selection.MoveRight: = wdCellIr al inicio del documentoSelection.HomeKey Unidad: = wdStoryIr al final del documentoSelection.EndKey Unidad: = wdStoryIr a la página 1Selection.GoTo What: = wdGoToPage, Which: = wdGoToNext, Name: = ”1 ″Ir al principio de la páginaSelection.GoTo What: = wdGoToBookmark, Nombre: = ”\ Página”
Unidad Selection.MoveLeft: = wdCharacter, Count: = 1

volver a la cima

Marcadores

DescripciónCódigo VBAAgregarCon ActiveDocument.Bookmarks
.Añadir rango: = Selección.Rango, Nombre: = "Nombre"
.DefaultSorting = wdSortByName
.ShowHidden = Falso
Terminar conContarDim n como entero
n = ActiveDocument.Bookmarks.CountBorrarActiveDocument.Bookmarks ("BookmarkName"). Eliminar¿Existe?Si ActiveDocument.Bookmarks.Exists ("BookmarkName") = True, entonces
'Hacer algo
Terminara siIr aSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”SeleccioneActiveDocument.Bookmarks ("BookmarkName"). SeleccioneReemplazar textoSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter "Nuevo texto"
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Nombre: = ”BookmarkName”

volver a la cima

Documento

DescripciónCódigo VBAActivarDocumentos ("Example.doc"). ActivarAgregar a variableDim doc como documento
Set doc = Documents.AddAgregarDocumentos.AñadirAgregar (de otro documento)Documentos.Añadir plantilla: = ”C: \ Forms \ FormDoc.doc”, _
NewTemplate: = FalsoCerrarDocumentos ("Example.doc"). CerrarCerrar - Guardar cambiosDocumentos ("Example.doc"). Cierre SaveChanges: = wdSaveChangesCerrar - No guardarDocumentos ("Example.doc"). Cierre SaveChanges: = wdDoNotSaveChangesCerrar - Solicitar guardarDocumentos ("Example.doc"). Cierre SaveChanges: = wdPromptToSaveChanges

volver a la cima

Columnas

DescripciónCódigo VBAGuardar comoDocumentos ("Example.doc"). SaveAs ("C: \ Example \ Example.doc")AhorrarDocumentos ("Example.doc"). GuardarProtegerDocumentos ("Example.doc"). Contraseña de protección: = "contraseña"DesprotegerDocumentos ("Example.doc"). UnProtect Contraseña: = "contraseña"Número de páginasDim varNumberPages como variante
varNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)ImpresiónDocumentos ("Ejemplo.doc"). Imprimir

volver a la cima

¿Cansado de buscar ejemplos de código VBA? ¡Prueba AutoMacro!

Fuente

DescripciónCódigo VBATamañoSelection.Font.Size = 12NegritaSelection.Font.Bold = TrueCursivaSelection.Font.Italic = TrueSubrayarSelection.Font.Underline = wdUnderlineSingleTodas las mayúsculasSelection.Font.AllCaps = TrueColorSelection.Font.TextColor = vbRedNombreSelection.Font.Name = "Abadi"SubíndiceSelection.Font.Subscript = TrueSobrescritoSelection.Font.Superscript = TrueResaltar colorSelection.Range.HighlightColorIndex = wdYellowEstiloSelection.Style = ActiveDocument.Styles ("Normal")

volver a la cima

Insertar

DescripciónCódigo VBAInsertar texto automáticoSelection.TypeText Text: = ”a3 ″
Selection.Range.InsertAutoTextInsertar código de fechaInsertar archivoSelection.InsertFile ("C: \ Docs \ Something.doc")Insertar salto de páginaSelection.InsertBreak Tipo: = wdPageBreakInsertar símbolo de párrafoSelection.TypeText Text: = Chr $ (182)Insertar pestañaSelection.TypeText Text: = vbTabInsertar textoSelection.TypeText Text: = "Cualquier texto"Insertar tipo de párrafoSelection.TypeParagraphInsertar párrafoSelection.InsertParagraph

volver a la cima

Bucles

DescripciónCódigo VBAHacer hasta el final del documentoHacer hasta ActiveDocument.Bookmarks ("\ Sel") = ActiveDocument.Bookmarks ("\ EndOfDoc")
'Hacer algo
SubPara cada documento en DocumentosDim doc como documento
Para cada documento en documentos
'Hacer algo
Siguiente documentoRecorrer párrafosSub a través de párrafos
Dim i tan largo, iParCount tan largo
iParCount = ActiveDocument.Paragraphs.CountFori = 1 a iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Siguiente yo

volver a la cima

Párrafo

DescripciónCódigo VBAKeepLinesJuntosSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = TrueEspacio despuésSelection.ParagraphFormat.SpaceAfter = 12Espacio antesSelection.ParagraphFormat.SpaceBefore = 0Alinear al centroSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterAlinear a la derechaSelection.ParagraphFormat.Alignment = wdAlignParagraphRightAlinear a la izquierdaSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftSangría izquierdaSelection.ParagraphFormat.LeftIndent = Pulgadas a puntos (3.75)Sangría derechaSelection.ParagraphFormat.RightIndent = Pulgadas a puntos (1)Espaciado entre líneasCon Selection.ParagraphFormat
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Terminar conRecorrer todos los párrafosSub a través de párrafos
Dim i tan largo, iParCount tan largo
iParCount = ActiveDocument.Paragraphs.CountFori = 1 a iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Siguiente yo

volver a la cima

Tutorial de macros de Word VBA

Este es un tutorial para usar VBA con Microsoft Word. Este tutorial le enseñará cómo escribir una macro simple e interactuar con documentos, rangos, selecciones y párrafos.

Nota: Si es nuevo en Macros / VBA, también puede encontrar útil este artículo: Cómo escribir macros VBA desde cero.

VBA es el lenguaje de programación utilizado para automatizar los programas de Microsoft Office, incluidos Word, Excel, Outlook, PowerPoint y Access.

Macros son bloques de código VBA que realizan tareas específicas.

Cuando usted Grabar una macro, Word escribirá el código VBA en una macro, lo que le permitirá repetir sus acciones. Puede ver una lista de todas las macros disponibles en Ver> Macros.

Después de grabar una macro, podrá editar la macro desde la lista de macros:

Cuando haces clic Editar, abres el Editor de VBA. Con el Editor de VBA puede editar macros grabadas o escribir una macro de Word desde cero. Para acceder al Editor de VBA use el atajo ALT + F11 o haga clic en Visual Basic desde el Cinta de desarrollador.

Ejemplo de macro de palabra simple

Este es un ejemplo simple de una macro de Word VBA. Realiza las siguientes tareas:

  • Abre un documento de Word
  • Escribe en el documento
  • Cierra y guarda el documento de Word.
123456789101112131415 Sub WordMacroExample ()'Abrir documento y asignar a variableDim oDoc como documentoEstablecer oDoc = Documents.Open ("c: \ Users \ someone \ NewDocument.docx")'Escribir a DocSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph'Guardar y cerrar documentooDoc.SaveoDoc.CloseEnd Sub

Conceptos básicos de macro de palabras

Todo el código VBA debe almacenarse dentro de procedimientos como este. Para crear un procedimiento en VBA, escriba "Sub WordMacroExample" (donde "WordMacroExample" es su nombre de macro deseado) y presione INGRESAR. VBA agregará automáticamente el paréntesis y End Sub.

Objeto de documento de Word

Al interactuar con Microsoft Word en VBA, con frecuencia hará referencia a los "Objetos" de Word. Los objetos más comunes son:

Objeto de aplicación - Microsoft Word en sí

Objeto de documento - Un documento de Word

Objeto de rango - Una parte de un documento de Word

Objeto de selección - Un rango seleccionado o ubicación del cursor.

Solicitud

La aplicación es el objeto de "nivel superior". Se puede acceder a todos los demás objetos de Word a través de él.

Además de acceder a otros objetos de Word, existen configuraciones de "nivel de aplicación" que se pueden aplicar:

1 Application.Options.AllowDragAndDrop = True

Este es un ejemplo de cómo acceder a la "Selección" de "Windows (1)" en la Aplicación:

1 Aplicación.Windows (1) .Selección.Caracteres.Cuenta

Sin embargo, se puede acceder directamente a los objetos de Word más comunes, sin escribir la jerarquía completa. Entonces, en su lugar, puede (y debe) simplemente escribir:

1 Selección.Caracteres.Cuenta

Documentos

ActiveDocument

A menudo, tendrá dos o más documentos abiertos en Word y deberá especificar con qué documento de Word específico interactuar. Una forma de especificar qué documento se utilizará ActiveDocument. Por ejemplo:

1 ActiveDocument.PrintOut

… Imprimiría el ActiveDocument. ActiveDocument es el documento en Word que "tiene el foco"

Para cambiar el documento activo, use el comando Activar:

1 Documentos ("Example.docx"). Activar

Este documento

En lugar de utilizar ActiveDocument para hacer referencia al documento activo, puede utilizar ThisDocument para hacer referencia al documento donde se almacena la macro. ThisDocument nunca cambiará.

1 ThisDocument.PrintOut

Variables de documento

Sin embargo, para macros más complicadas, puede resultar difícil realizar un seguimiento del documento activo. También puede resultar frustrante alternar entre documentos.

En su lugar, puede utilizar variables de documento.

Esta macro asignará el ActiveDocument a una variable y luego imprimirá el documento usando la variable:

12345 Sub VarExample ()Dim oDoc como documentoEstablecer oDoc = ActiveDocumentoDoc.PrintOutEnd Sub

Métodos de documento

Abrir documento

Para abrir un documento de Word:

1 Documentos. Abra "c: \ Users \ SomeOne \ Desktop \ Test PM.docx"

Recomendamos siempre asignar un documento a una variable al abrirlo:

12 Dim oDoc como documentoEstablecer oDoc = Documents.Open ("c: \ Users \ SomeOne \ Desktop \ Test PM.docx")

Crear nuevo documento

Para crear un nuevo documento de Word:

1 Documentos.Añadir

Podemos indicarle a Word que cree un nuevo documento basado en alguna plantilla:

1 Documentos.Añadir plantilla: = "C: \ Archivos de programa \ Microsoft Office \ Templates \ MyTemplate.dotx"

Como siempre, es útil y un gran ahorro de problemas asignar un documento a una variable al crear o abrir:

12 Dim oDoc como documentoEstablecer oDoc = Documents.Add (Plantilla: = "C: \ Archivos de programa \ Microsoft Office \ Templates \ MyTemplate.dotx")

Guardar documento

Para guardar un documento:

1 ActiveDocument.Save

o Guardar como:

1 ActiveDocument.SaveAs FileName: = c: \ Users \ SomeOne \ Desktop \ test2.docx ", FileFormat: = wdFormatDocument

Cerrar documento

Para cerrar un documento y guardar cambios:

1 ActiveDocument.Close wdSaveChanges

o sin guardar cambios:

1 ActiveDocument.Close wdDoNotSaveChanges

Imprimir documento

Esto imprimirá el documento activo:

1 ActiveDocument.PrintOut

Rango, selección, párrafos

Distancia y Selección son probablemente los objetos más importantes en Word VBA, sin duda los más utilizados.

Distancia se refiere a una parte del documento, por lo general, pero no necesariamente, texto.

Selección se refiere al texto seleccionado (u otro objeto como imágenes) o, si no se selecciona nada, un punto de inserción.

Párrafos representar párrafos en el documento. Es menos importante de lo que parece, porque no puedes acceder directamente al texto del párrafo (necesitas acceder a un rango de párrafo en particular para hacer modificaciones).

Distancia

El rango puede ser cualquier parte del documento, incluido el documento completo:

12 Dim oRange As RangeEstablecer oRange = ActiveDocument.Content

o puede ser tan pequeño como un carácter.

Otro ejemplo, este rango se referiría a la primera palabra en el documento:

12 Dim oRange As RangeEstablecer oRange = ActiveDocument.Range.Words (1)

Por lo general, querrá obtener un rango que se refiere a una parte específica del documento y luego modificarlo.

En el siguiente ejemplo, pondremos en negrita la primera palabra del segundo párrafo:

123 Dim oRange As RangeEstablecer oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = Verdadero

Establecer texto de rango

Para establecer el valor de texto de un rango:

123 Dim oRange As RangeEstablecer oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = "Hola"

(Sugerencia: tenga en cuenta el espacio después de "Hola". Debido a que el objeto palabra incluye espacio tras palabra, con solo "hola" obtendríamos "Palabra Hellonext")

Hay cientos de cosas que puede hacer con rangos. Solo algunos ejemplos (estos asumen que ya está hecho variable de objeto naranja refiriéndose al rango de interés):

Cambiar fuente

1 oRange.Font.Name = "Arial"

Mostrar en el cuadro de mensaje el número de caracteres en un rango particular

1 MsgBox oRange.Characters.Count

Inserta un texto antes

1 oRange.InsertBefore "esto es texto insertado"

Agregar una nota al pie al rango

12 ActiveDocument.Footnotes.Add Rango: = oRange, _Text: = "Lea más en easyexcel.net".

Cópialo al portapapeles

1234 oRange. CopiarA menudo es necesario cambiar a lo que se refiere a un rango particular. Para que puedas empezar, es principio y finoRange.Start = 5oRange.End = 50

Después del código anterior, oRange se referiría al texto que comienza con el quinto y termina con el carácter 50 en el documento.

Selección

Selección es incluso más utilizado que Distancia, porque es más fácil trabajar con Trozos escogidos que Rangos, SI su macro SOLO interactúa con ActiveDocument.

Primero seleccione la parte deseada de su documento. Por ejemplo, seleccione el segundo párrafo en el documento activo:

1 ActiveDocument.Paragraphs (2) .Range.Select

Luego puede usar el Objeto de selección para escribir texto:

1 Selection.TypeText "Algún texto"

Podemos escribir algunos párrafos debajo de "Algún texto":

12 Selection.TypeText "Algún texto"Selection.TypeParagraph

A menudo, es necesario saber si se selecciona algún texto o si solo tenemos un punto de inserción:

12345 Si Selection.Type wdSelectionIP EntoncesSelection.Font.Bold = TrueDemásMsgBox "Debe seleccionar algún texto".Terminara si

Cuando trabajamos con el objeto de selección, queremos colocar el punto de inserción en un lugar particular y emitir comandos a partir de este punto.

Comienzo del documento:

1 Selection.HomeKey Unidad: = wdStory, Extend: = wdMove

Inicio de la línea actual:

1 Selection.HomeKey Unidad: = wdLine, Extend: = wdMove

El parámetro Extend wdMove mueve el punto de inserción. En su lugar, puede usar wdExtend, que seleccionará todo el texto entre el punto de inserción actual.

1 Selection.HomeKey Unidad: = wdLine, Extend: = wdExtend

Mover selección

El método más útil para cambiar la posición del punto de inserción es Mover. Para mover la Selección dos caracteres hacia adelante:

1 Selection.Move Unidad: = wdCharacter, Count: = 2

para moverlo hacia atrás, use un número negativo para el parámetro Count:

1 Selection.Move Unidad: = wdCharacter, Count: = - 2

El parámetro de unidad puede ser wdCharacter, wdWord, wdLine o más (use la ayuda de Word VBA para ver otros).

Para mover palabras en su lugar:

1 Selection.Move unidad: = wdWord, Count: = 2

Es más fácil trabajar con la selección (en comparación con los rangos) porque es como un robot que usa Word, imitando al usuario humano. Donde está el punto de inserción, se llevaría a cabo alguna acción. ¡Pero esto significa que debe tener cuidado donde está el punto de inserción! Esto no es fácil después de muchos pasos en el código. De lo contrario, Word cambiaría el texto en un lugar no deseado.

En el caso de que necesite alguna propiedad o método que no esté disponible en el objeto Selección, siempre puede obtener fácilmente el rango asociado con la selección:

1 Establecer oRange = Selection.Range

SUGERENCIA: Usar Selección a menudo es más fácil que usar rangos, pero también es mucho más lento (importante cuando se trata de documentos grandes)

Párrafos

No puede utilizar directamente el objeto Paragraphs para cambiar el texto:

1 ActiveDocument.Paragraphs (1) .Text = "No, no funcionaría"

Lo anterior no funcionaría (en realidad arrojará un error). Primero debe obtener el rango asociado con un párrafo en particular:

1 ActiveDocument.Paragraphs (1) .Range.Text = "Funciona ahora :)"

Pero puedes cambiar su estilo directamente:

1 ActiveDocument.Paragraphs (1) .Style = "Normal"

o cambiar su formato de nivel de párrafo:

1 ActiveDocument.Paragraphs (1) .LeftIndent = 10

o tal vez desee mantener este párrafo en la misma línea con el siguiente párrafo:

1 ActiveDocument.Paragraphs (1) .KeepWithNext = True

Hacer centrado en el párrafo:

1 ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter

Es MUY útil asignar un párrafo en particular a una variable de objeto. Si asignamos un párrafo en particular a una variable, no tenemos que preocuparnos si el primer párrafo se convierte en el segundo porque insertamos un párrafo antes:

12 dim oPara como párrafoEstablezca oPara = Selection.Paragraphs (1) 'aquí asignamos el primer párrafo de la selección actual a la variable

Aquí hay un ejemplo en el que insertamos un párrafo sobre el primer párrafo, pero aún podemos hacer referencia al antiguo primer párrafo porque se asignó a una variable:

1234567 SubpárrafoEjemplo ()Dim oPara como párrafoEstablecer oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore 'Insertar párrafoMsgBox oPara.Range.TextEnd Sub

El objeto de párrafo se usa con mucha frecuencia en bucles:

123456789101112 Sub LoopThroughParagraphs ()Dim oPara como párrafoPara cada oPara en ActiveDocument.Paragraphs'haz algo con él. Solo mostraremos'texto de párrafo si su estilo es "Título 4"Si oPara.Style = "Título 4", entoncesMsgBox oPara.Range.TextTerminara siSiguiente oParaEnd Sub

Conclusión del tutorial de Word VBA

Este tutorial cubrió los conceptos básicos de Word VBA. Si es nuevo en VBA, también debe revisar nuestro tutorial general de VBA para obtener más información sobre variables, bucles, cuadros de mensajes, configuraciones, lógica condicional y mucho más.

Ejemplos de macros de palabras

Ejemplos de macros de palabras
Plantillas
Agregar nuevos documentos
Contar palabras en la selección
Cajas de texto
Guardar como pdf
Marcadores
Mesas
Buscar y buscar y reemplazar
Abrir documentos

Preguntas frecuentes de Word VBA

¿Qué es una macro de Word?

Una macro es un término general que se refiere a un conjunto de instrucciones de programación que automatizan tareas. Word Macros automatiza tareas en Word usando el lenguaje de programación VBA.

¿Word tiene VBA?

Sí, Microsoft Word tiene el editor VBA. Se puede acceder presionando ALT + F11 o navegando a Desarrollador> Visual Basic.

¿Cómo uso VBA en Word?

1. Abra el Editor de VBA (ALT + F11 o Desarrollador> Visual Basic)
2. Vaya a Insertar> Módulo para crear un módulo de código.
3. Escribe "Sub HelloWorld" y presiona Enter.
4. Entre las líneas "Sub HelloWorld" y "End Sub", escriba "MsgBox" Hello World! "
5. ¡Ha creado una macro!
6. Ahora presione "F5" para ejecutar la macro

wave wave wave wave wave