Manipulación de contenido en Microsoft Word con VBScript o VBA
He venido aquí para recibir muchos consejos sobre cómo desarrollar aplicaciones VBScript y VBA usando Excel, pero ahora me he enfrentado a un nuevo desafío: desarrollar una aplicación VBScript / VBA para Word.
Sé, en Excel, si quería escribir"my name"
en la celda B3, escribiría esto:
Range("B3").Value = "my name"
Necesito poder localizar dónde se ingresaría el nombre y la dirección de una carta formal, así como la fecha de hoy y mis iniciales como firma.
Pensé que podría encontrar la programación de VBScript / VBA para Word en Internet como lo hice para Excel, pero parece que trabajar con Word no es tan popular. Si alguien tiene algún fragmento para comenzar, o un enlace realmente bueno a un sitio en Internet donde pueda hacer la codificación yo mismo, sería muy apreciado.
ACTUALIZAR
Aquí está el código con el que estoy trabajando en este momento:
Public Sub WordVbaDemo()
Dim doc As Document: Set doc = ActiveDocument ' Or any other document
DateText = doc.Range(doc.Paragraphs(1).Range.End - 20, doc.Paragraphs(1).Range.End - 18).Text
End Sub`
Necesito que el código funcione para una carta formal donde la fecha está justificada correctamente:
Date: November 7th, 2016
El código que tengo arriba copiará el texto de la fecha después de "Fecha:". La plantilla original no tiene una fecha precargada. Si ingreso uno, el campo "Miembro:" se ve así:
Date: November 7th, 2016
Member:
Estoy buscando una manera de ingresar texto sin alterar la alineación.
ACTUALIZACIÓN 2
Olvidé mencionar que esto tiene que funcionar como un script externo. Esto significa que si tuviera que abrir NotePad y crear un script que completara una carta en un documento de Word, así es como debería funcionar. Me disculpo por esto ... me adelanté y olvidé ese detalle.
ACTUALIZACIÓN 3
Estoy usando el siguiente código derivado del código que uso para encontrar cualquier ventana abierta de Internet Explorer. Sé que IE y Word son dos cosas diferentes, pero esperaba poder usar Shell para encontrar el documento de Word y poder manipular el contenido.
Dim WinDoc, Window, TitleFound
Dim WShell, objShell
Function Check_Document()
On Error Resume Next
Set WShell = CreateObject("WScript.Shell")
Set objShell = CreateObject("Shell.Application")
On Error GoTo 0
Window = "non-member template.docx" 'Tried this without the .docx and failed
TitleFound = False
For Each WinDoc In objShell.Windows()
If Err.Number = 0 Then
If InStr(WinDoc.Document.Title, (Window)) Then
Set objWord = WinDoc
TitleFound = True
Exit For
End If
End If
Next
If TitleFound = False Then
MsgBox "Word doc not found"
Else
MsgBox "Found Word doc!!"
End If
End Function