在Word中,我有一個書籤的列表,並且希望向這些書籤插入交叉引用(複製文本並具有超鏈接)。隨着宏錄製和調整參數,我得到這個與的myBookmark
文本替換myRange
,使一個超鏈接到書籤:VBA Word - 插入對書籤的交叉引用,但保留上下文的樣式
myRange.InsertCrossReference _
ReferenceType:=wdRefTypeBookmark, _
ReferenceKind:=wdContentText, _
ReferenceItem:=myBookmark, _
InsertAsHyperlink:=True
這個工程除了一件事罰款:如果我改變我的書籤文字的樣式(例如使其爲粗體)並更新交叉引用,然後交叉引用也採用該風格 - 我需要複製只有書籤中的文本,但樣式(顏色,粗體,無論)應該保留交叉引用的上下文(例如,文本應該保持斜體或藍色或其他)。
手動更改交叉引用的樣式不會有太大的幫助 - 更新交叉引用字段後,樣式會回退到書籤的樣式。
我不能相信這是沒有選擇,我甚至都沒有看到如何手動獲取這種書籤/交叉引用(沒有VBA)。任何提示?注意:當我在將書籤加入書籤之前做了一個ClearFormatting
的範圍(並且之後再設置該樣式),那麼交叉引用在更新字段後仍然保持其樣式(迄今爲止很好),除非(原文如此! )他們沒有風格,那麼他們會採用改變的書籤風格 - 如果書籤是純文本的,這不是問題,但如果它在 - 比如說 - 一個帶有斜體字的表格中,我對於所有沒有風格的交叉引用,我們將採用這種斜體格式。那麼,什麼是通用解決方案?
您計劃成爲我的VBA英雄吧?萬物現在工作正常。有一件事我還不明白:在'myRange.InsertCrossReference'之後''myRange'中應該有一個'Field',但Word不會看到它,除非我用'myRange.End = myRange.End + 1'。還有一個附加說明:在我添加'myRange.Fields(1).Code.Text = myRange.Fields(1).Code.Text&「\ * CharFormat」'我必須手動'myRange.Fields(1).Update '因爲'\ * CharFormat'在我執行'myRange.InsertCrossReference'時沒有激活。非常感謝您的寶貴幫助。 – outofmind
旁註:似乎'Fields'不能混合格式化 - 在更新'Field'後格式化是第一個字符 - 但我想這是Word中的一個普遍問題 - 我可以忍受這個 – outofmind
另一個注意事項:如果要交叉引用的文本的格式以新的格式開始,則可能必須使用'Selection.CopyFormat'和'Selection.PasteFormat' - 插入交叉引用似乎插入了採用_Format_的新運行(Cindy,糾正我,如果我錯了:-)) – outofmind