Word VBA:查找隐藏字符
目錄
一、問題復述
二、大家的討論
三、問題的結論
四、手動操作方法
1.顯示隱藏文字
2.設置隱藏文字
3.查找隱藏文本
4.得出的結論
五、用Word VBA代碼查找隱藏文本
1.沒有設置【顯示隱藏文字】
2.設置【顯示隱藏文字】后
六、總結
一、問題復述
問題意思:【在Word VBA中,如果需要提取Word文檔的的隱藏字符,需要先將隱藏字符取消隱藏才能用查找(替換)方法找到相應字符。那么不顯示隱藏字符能查找到對應字符嗎?】
前幾天,在一個VBA的交流群里有人提出了這個問題:
圖1.1 問題原文
二、大家的討論
因為關于Word隱藏字符,大家很少用到,Word VBA不像Excel VBA那樣普及,多數人是不知道或不確定。
圖2.1 大家討論01
題主也@了我,看看我能否解決。所以實測了一下,順便把【Word隱藏字符】相關的內容整理一下。
圖2.2 大家討論02
三、問題的結論
如果題主說的【取消隱藏】指的是在文本字體中將【隱藏】不勾選,即下圖內容
圖3.1
則:
不取消隱藏,可以提取到隱藏文本。但是這樣的話,如果文字由隱藏變為不隱藏,和其他內容無區別時,也不可能 提取到。
如果題主說的【取消隱藏】指的是下文這部分所述【顯示隱藏文字】
圖3.2
則不取消隱藏,不可以提取到隱藏文本。
但是有個前提條件:在【文件】-【選項】-【顯示】中,勾選【隱藏文字】。(也就是說要顯示隱藏文字)
四、手動操作方法
1.顯示隱藏文字
這樣做的目的是在后面設置了隱藏字符時,才可以看到效果。
圖4.1 單擊【文件】選項卡
圖4.2點擊【選項】
圖4.3 顯示隱藏文字的2種方法
2.設置隱藏文字
(1)隨機選取一些文本
*按住【ctrl】可以選中多處文本
圖4.4 選擇文本
(2)文本字體設置隱藏屬性
*點擊【字體】右下角,在彈出的對話框中,勾選【隱藏】,【確定】。
圖4.5 將文本設置為隱藏字符
(3)查看編輯視圖
在編輯視圖中,可以看見,每個隱藏文字下方都有【虛線標記】。
圖4.6 隱藏文字的編輯視圖
(4)查看打印預覽視圖
圖4.7 打印效果圖
對比效果:
圖4.8 對比打印視圖和編輯視圖的意外差異
(5)編輯視圖(普通視圖)不顯示隱藏文字的效果
如果將【四】-【1】中的【顯示隱藏文字】改為不顯示
4.9 編輯視圖不顯示隱藏文字的效果
則我們編輯時肉眼看不到這些隱藏文字。
排版時,一般不建議編輯視圖不顯示這些隱藏字符。因為編輯狀態,我們需要知道文檔里這種字符真正的組成,這與打印效果是相互不沖突的,也只有編輯時將各種隱藏標記處理好,才能打印出好的紙質文件。
(6)由此可知
隱藏字符在默認情況下是不會被打印出來。
3.查找隱藏文本
(1)步驟:
A.點擊【開始】-【替換】,點擊【查找內容】框,點擊左下角的【格式】-【字體】
圖4.10 高級查找-【字體】
B.在彈出的【字體】對話框中,將【效果】-【隱藏】勾選上,點擊確定。
圖4.11【字體】-【效果】-勾選【隱藏】
C.查找結果
a.如果上面【1.】步驟中沒有設置【顯示隱藏文字】的話,點擊【查找下一處】,會顯示【未查找到結果】。
圖4.12 沒有設置【顯示隱藏文字】時查找
b.如果上面【1.】步驟中有設置【顯示隱藏文字】的話,點擊【查找下一處】,會逐個顯示每個隱藏字符串,直到完成全文查找一遍。
圖4.13 設置【顯示隱藏文字】后查找
4.得出的結論
在Word高級查找中,如果需要手動查找到隱藏文字,需要將將在【選項】-【顯示】中將【隱藏文字】設置為顯示狀態。
五、用Word VBA代碼查找隱藏文本
1.沒有設置【顯示隱藏文字】
如果上面【四、】【1.】步驟中沒有設置【顯示隱藏文字】的話,運行程序,內容顯示為空,但開始和結束位置可以找到。
A.代碼
Sub 查找隱藏文本()With ActiveDocument.Content.Find '查找全文.ClearFormatting '清除查找框格式.Format = True '查找包含格式.Font.Hidden = True '查找字體格式為隱藏的.Forward = True '向前查找.Wrap = wdFindStop '查找完成后停止Do While .Execute '如果找到了'分別打印:找到的內容,找到內容的開始位置,找到內容的結束位置Debug.Print .Parent, .Parent.Start, .Parent.EndLoopEnd With End SubB.執行結果
圖5.1 不設置【顯示隱藏文字】時,VBA查找結果
2.設置【顯示隱藏文字】后
如果上面【四、】【1.】步驟中設置【顯示隱藏文字】后,運行程序,內容、開始和結束位置都可以找到。
A.代碼
*可先用變量x記錄下文檔是否顯示隱藏文字的狀態,然后設置為顯示;提取完成后,如果有必要,可恢復到原始狀態。
Sub 查找隱藏文本1()Dim x As Boolean '定義x為布爾型,用于記錄文檔是否顯示了隱藏文字x = ActiveDocument.ActiveWindow.ActivePane.View.ShowHiddenText '文檔是否顯示了隱藏文字的值賦值給xDebug.Print xActiveDocument.ActiveWindow.ActivePane.View.ShowHiddenText = True '將文檔設置為顯示隱藏文字的狀態With ActiveDocument.Content.Find '查找全文.ClearFormatting '清除查找框格式.Format = True '查找包含格式.Font.Hidden = True '查找字體格式為隱藏的.Forward = True '向前查找.Wrap = wdFindStop '查找完成后停止Do While .Execute '如果找到了'分別打印:找到的內容,找到內容的開始位置,找到內容的結束位置Debug.Print .Parent, .Parent.Start, .Parent.EndLoopEnd WithActiveDocument.ActiveWindow.ActivePane.View.ShowHiddenText = x '將文檔是否顯示隱藏文字恢復到開始的狀態 End SubB.執行結果
圖5.2 設置【顯示隱藏文字】時,VBA查找結果
如果不想改變文檔原有狀態,又需要用VBA提取隱藏文字,則本人推薦使用這種方法。
六、總結
本文從網友提問為切入點,介紹了Word中的【隱藏文字】相關的基礎設置、用高級查找手動查找隱藏文字的方法和用VBA查找隱藏文字的方法及處理技巧。希望對于Word軟件的入門級、中級和高級用戶都有所啟發。
廣大網友的認可與支持雖然不是創作的必要條件,但是,您的支持是創作的強大動力之一,如果認為本文對您使用Word有所幫助,記得幫忙點贊、收藏、評論和轉發。如果有Office辦公套件中的任何問題,歡迎大家提問,共同交流。
總結
以上是生活随笔為你收集整理的Word VBA:查找隐藏字符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 语言(文化)代码与国家地区对照表,各国手
- 下一篇: Word VBA中读取Excel表格中的