鑑於其中包含修訂的範圍,我需要重建原始文本和修改後的文本。第一個解決方案是:Word VBA中的克隆變量
Sub OriginalText (ByVal Rng as Range)
Rng.Revisions.RejectAll
OriginalText = Rng.Text
End sub
然而,事實證明,BYVAL是不是真的BYVAL。在RejectAll被調用的那一刻,原始文檔中的所有更改都被拒絕,並且無法應用它們 - 它們從ThisDocument.Revisions中消失。
是否有一個(最好方便的)方法來將變量Rng複製到子中的任何(比如說Rng2),以便我可以在不影響源的情況下使用範圍的副本?
有沒有一種方法來序列化的範圍,並把它放在一起,也許?
Upd:讓我這樣說吧。是否有機會複製對象(在我的情況下爲Range),以便對副本所做的更改不會影響源代碼?我認爲這仍然是最快和最優雅的解決方案。
當在子程序中調用'.RejectAll'時,它將清除所有修訂(大概是第0個「修訂」,因爲在該範圍內沒有文本) – jonsca
問題不在於如何訪問文本字符串,但更多的是如何從現有的範圍創建新的範圍。範圍保留修改,這些文本顯然沒有。 – user962409
@ user962409你問爲什麼ByVal範圍沒有工作,它不工作,因爲你發送範圍,這是一個位置的標記或標記,所以你可以改變範圍(即開始和結束點)和ByVal會來進入遊戲,但如果您通過Rejectall更改文本,則您正在更改範圍的內容,即文本,所以ByVal毫無意義。 – Fionnuala