Manipulando conteúdo no Microsoft Word com VBScript ou VBA
Eu vim aqui para obter muitos conselhos sobre como desenvolver aplicativos VBScript e VBA usando o Excel, mas agora me deparei com um novo desafio: desenvolver um aplicativo VBScript / VBA para Word.
Eu sei, no Excel, se eu queria digitar"my name"
na célula B3, digitei isso:
Range("B3").Value = "my name"
Eu preciso ser capaz de localizar onde um nome e endereço para uma carta formal seriam inseridos, assim como a data de hoje e minhas iniciais como uma assinatura.
Eu pensei que poderia encontrar a programação VBScript / VBA para Word na Internet, como fiz no Excel, mas parece que trabalhar com o Word não é tão popular. Se alguém tiver alguns trechos para começar, ou um link realmente bom para um site na Internet onde eu possa fazer a codificação sozinho, seria muito apreciado.
ATUALIZAR
Aqui está o código com o qual estou trabalhando no 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`
Preciso que o código funcione para uma carta formal em que a data seja justificada:
Date: November 7th, 2016
O código que eu tenho acima copiará o texto da data após "Data:". O modelo original não tem uma data pré-preenchida. Se eu inserir um, o campo "Membro:" ficará deslocado assim:
Date: November 7th, 2016
Member:
Estou procurando uma maneira de inserir texto sem alterar o alinhamento.
ATUALIZAÇÃO 2
Eu esqueci de mencionar que isso tem que funcionar como um script externo. Isso significa que, se eu abrir o Bloco de Notas e criar um script que preencha uma carta em um documento do Word, é assim que deve funcionar. Peço desculpas por isso ... me adiantou e esqueci esse detalhe.
ATUALIZAÇÃO 3
Estou usando o seguinte código derivado do código usado para encontrar qualquer janela aberta do Internet Explorer. Eu sei que o IE e o Word são duas coisas diferentes, mas eu esperava poder usar o Shell para encontrar o documento do Word e poder manipular o conteúdo.
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