【发布时间】:2016-11-07 13:44:14
【问题描述】:
我来这里是为了获得有关如何使用 Excel 开发 VBScript 和 VBA 应用程序的大量建议,但现在我面临着一个新挑战:为 Word 开发 VBScript/VBA 应用程序。
我知道,在 Excel 中,如果我想在单元格 B3 中输入 "my name",我会输入:
Range("B3").Value = "my name"
我需要能够找到输入正式信件的姓名和地址的位置,以及今天的日期,以及我作为签名的姓名首字母。
我想我可以像在 Excel 中一样在 Internet 上找到 Word 的 VBScript/VBA 编程,但似乎使用 Word 并没有那么流行。如果任何人有任何 sn-ps 让我开始,或者一个非常好的链接到互联网上的一个网站,我可以自己进行编码,将不胜感激。
更新
这是我目前正在使用的代码:
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`
我需要代码来处理日期右对齐的正式信函:
Date: November 7th, 2016
我上面的代码将复制“日期:”之后的日期文本。原始模板没有预填日期。如果我输入一个,“成员:”字段看起来像这样偏移:
Date: November 7th, 2016
Member:
我正在寻找一种在不打乱对齐方式的情况下输入文本的方法。
更新 2
我忘了提到这必须作为外部脚本工作。这意味着,如果我要打开记事本并创建一个脚本来填写 Word 文档中的一个字母,那么它应该是这样工作的。对此我深表歉意……我走得太远了,忘记了那个细节。
更新 3
我使用以下代码派生自用于查找任何打开的 Internet Explorer 窗口的代码。我知道 IE 和 Word 是两个不同的东西,但我希望我可以使用 Shell 来查找 Word 文档并能够操作内容。
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
【问题讨论】:
-
也许在单词的搜索功能中使用了通配符/奇怪的正则表达式?
-
我不确定如何使用正则表达式来查找我需要输入数据的位置,然后确保它不会偏移对齐。虽然,我确实看到了如何使用正则表达式替换并用所需的文本替换空格。你是这个意思吗?