我有一些代码在文档中搜索一些独特的文本“(交叉引用表2.1)”,然后用表2.1的交叉引用替换该文本。代码运行良好,除了在文档的一个部分中,插入交叉引用实际上删除了交叉引用之前的空格“”。例如,原始文本读取“引用(交叉引用表2.1)”变为“referTable2.1”时应该读取“引用表2.1”。这只发生在文档中的一个位置,似乎没有任何理由发生这种情况(即我的代码或单词模板中没有额外的“”,不应该有)。
Public Sub Master()
Call ReplaceTextWithCrossReferenceToTable(wrdDoc, _
"(cross reference Table 2.1)", "Table 2.1", wrdApp)
End Sub
Sub ReplaceTextWithCrossReferenceToTable(wrdDoc As Word.Document, _
ReferenceText As String, ReferenceSource As String, _
wrdApp As Word.Application)
Dim wrdTables As Variant, intTableNames As Integer, j As Integer
Dim k As Integer, RefValue As Integer
wrdTables = wrdDoc.GetCrossReferenceItems("Table")
For intTableNames = 1 To UBound(wrdTables)
If InStr(wrdTables(intTableNames), ReferenceSource) Then
RefValue = intTableNames
End If
Next i
If RefValue = 0 Then Exit Sub
With wrdDoc.Content.Find
.Text = ReferenceText
.Format = False
.Wrap = 0
Do While .Execute
k = k + 1
Loop
End With
For j = 1 To k
With wrdApp.Selection
.Find.Text = ReferenceText
.Find.Wrap = 1 'wdFindContinue
.Find.Execute FindText:=ReferenceText
.Delete
.InsertCrossReference "Table", wdOnlyLabelAndNumber, RefValue, True
End With
Next j
End Sub
您可以为空格字符的存在添加测试。
If not <range>.Previous(unit:=wdWord).Characters.Last = Chr$(32) Then
<range>.InsertBefore text = Chr$(32)
End If
您将用代表您刚插入的交叉引用的范围替换的位置。