【发布时间】:2021-02-02 04:54:23
【问题描述】:
我正在用 DocVariable 字段自动替换文本字符串。唯一的问题是,当这些字符串(以后我将其称为 TAGS)时,当 TAG 位于“TextBox”控件中时。
我使用两个模块将标签替换为 DOCVARIABLES
***标签示例: “DEPARTMENT_NAME” 字符串文本
文档变量示例: {DOCVARIABLE "Department_Name" * MERGEFORMAT}***
模块 1
Public Function PopulateDocuments() As Boolean
Dim Department_Name As String
Department_Name = "Department_Name"
ReplaceWithDocVar "DEPARTMENT_NAME", "Department_Name"
End Function
模块 2
Public Function ReplaceWithDocVar(strFind As String, strVarName As String) As Boolean
Dim oStory As Range
Dim TextColor As Range
Dim strDocName As String
Dim orgDocName As String
Dim orgPath As String
Dim intPos As Integer
Dim docpath As String
Dim docname As String
Application.DisplayAlerts = False
For Each oStory In ActiveDocument.StoryRanges
With oStory.Find
Do While .Execute(FindText:=strFind, MatchCase:=True, MatchWholeWord:=True)
oStory.Text = ""
'oStory.Text = wdBlue
oStory.Fields.Add Range:=oStory, _
Type:=wdFieldDocVariable, _
Text:=Chr(34) & strVarName & Chr(34), _
PreserveFormatting:=True
oStory.Collapse 0
Loop
End With
If oStory.StoryType <> wdMainTextStory Then
While Not (oStory.NextStoryRange Is Nothing)
Set oStory = oStory.NextStoryRange
With oStory.Find
Do While .Execute(FindText:=strFind, MatchCase:=True, MatchWholeWord:=True)
oStory.Text = ""
'oStory.Text = wdBlue
oStory.Fields.Add Range:=oStory, _
Type:=wdFieldDocVariable, _
Text:=Chr(34) & strVarName & Chr(34), _
PreserveFormatting:=True
'oStory.Font.ColorIndex = wdBlue
oStory.Collapse 0
Loop
End With
Wend
End If
Next oStory
Set oStory = Nothing
lbl_Exit:
Exit Function
End Function
注意:我不是这段代码的作者,但它运行得很好。
在替换那些我能找到的 TAG 时,我没有看到任何错误消息。除文本框中的标签外,所有标签均已正确替换为 DOCVARIABLES。
【问题讨论】:
-
这里有问题吗?
-
代码的作者是谁?来源是什么?
标签: ms-word textbox docvariable