另一個可能棘手的挑戰,爲您的專家!字自動更正 - AddRichText虛假字符和字符串到範圍轉換
我試圖開發一個宏,將MSWord 2016文檔中的表格格式化的條目添加到自動更正庫(存儲在normal.dotx中,就像通常的格式化條目一樣)。
在文檔中,我有一個包含兩列的表,左列有短文本,右列有自動更正條目的格式化長文本。
我有一個宏,它適用於存儲使用行AutoCorrect.Entries.Add Name:=ShortText, Value:=LongText
的無格式文本。我試圖修改它以使用AutoCorrect.Entries.AddRichText ShortText, longtext
函數,該函數應該在表格中選取字體和斜體屬性。
我試過兩種方法,每種都有問題,我找不到解決方案。下面詳細...
FIRST - testAddRichText1
下面的代碼(去掉了一些化妝品的)
Sub testAddRichText1()
Set oDoc = ActiveDocument
For i = 1 To oDoc.Tables(2).Rows.Count
If oDoc.Tables(2).Rows(i).Cells(1).Range.Characters.Count > 1 Then
ShortText = oDoc.Tables(2).Cell(Row:=i, Column:=1)
ShortText = Left(ShortText, Len(ShortText) - 2) 'remove the trailing CR and LF
longtext = oDoc.Tables(2).Cell(Row:=i, Column:=2)
StatusBar = "Adding " & ShortText & " = " & longtext.Text
AutoCorrect.Entries.AddRichText ShortText, longtext
End If
Next i
MsgBox "done"
End Sub
使用此代碼,還有在文本的末尾一些不可打印的字符從細胞中提取,主要是Chr(13)。我嘗試在字符串上運行清理程序來刪除所有不可打印的字符,但有些東西不會消失,並在使用自動更正時在正確的文本末尾導致黑框。我認爲這是表格單元格中的某種祕密字代碼。試圖打印它的ASC值返回13,但刪除它沒有效果(只是刪除黑箱符號之前的字符)。
第二testAddRichText2
於是我嘗試的只是增加斜體我的文字串在我的工作模型,然後用它與AddRichText方法的方法。由於AddRichText需要一個範圍,並且我還沒有能夠將文本字符串轉換爲範圍,所以這陷入了一個漏洞。 繼承人代碼
Sub testAddRichText2()
Set oDoc = ActiveDocument
Dim LongTextrng As Range
For i = 1 To oDoc.Tables(2).Rows.Count
If oDoc.Tables(2).Rows(i).Cells(1).Range.Characters.Count > 1 Then
ShortText = oDoc.Tables(2).Cell(Row:=i, Column:=1)
ShortText = Left(ShortText, Len(ShortText) - 2)
longtext = oDoc.Tables(2).Cell(Row:=i, Column:=2).Range
longtext = Left(longtext, Len(longtext) - 2)
LongTextrng.Text = longtext 'Fails
LongTextrng.Italic = True
StatusBar = "Adding " & ShortText & " = " & longtextrng.Text
AutoCorrect.Entries.Add Name:=ShortText, Value:=LongTextrng
End If
Next i
MsgBox "done"
End Sub
在任的這些任何援助將是多少appreciated
乾杯
...史蒂夫
感謝蒂姆。這真棒,完美的作品!感謝您的解釋和更優雅的編碼!乾杯......史蒂夫 – SteveP