Word給自動生成的目錄頁碼添加括號
一些學校的畢業論文格式要求中,要求目錄的頁碼需要加括號如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kW5SI4pw-1582034649079)(C:\Users\weixin\AppData\Roaming\Typora\typora-user-images\image-20200218214156664.png)]
而Word自動生成的目錄格式中並沒有這一選項,因此很多人是自己手動一個一個輸上去的,要了老命。
而網上也有相關教程,但看來看去原理都是一樣,並不完美。
我們先來看看現有教程是怎麼搞的。
1.選中目錄內容
2.按ctrl+h,彈出替換框
3.在查找內容中填入“([0-9]{1,})”,而替換內容中填入“(\1)“,並且選中“使用通配符”選項,如下所示:
一頓操作後點全部替換,悲劇就出現了:
目錄中所有的數字全部替換成了帶括號的,而事實上我們只希望右邊那一排帶括號。
下面開始本教程的內容。
1.第一步我們完全照抄上面的做法,得到上面那個悲劇的結果。
2.觀察這個結果我們可以發現,右邊那串括號的左右均沒有字符,因此我們直接將左右有字符的括號全部替換掉,操作同上,只是查找內容改成“)(?)”及“(?)(”,替換內容改爲“\1”,如下:
分別運行後結果如下:
可以看到只剩下左邊這個括號是我們不想要的了。
4.這個時候我們再觀察可以看到左邊這個括號的右邊是數字字符,之後是一個“.”,因此我們可以將查找內容改成“(([0-9]{1,}).”替換內容改爲“\1.”,再次替換,就得到完美的結果了!!!
當然這需要四步操作是比較煩的事情,有人可能覺得還不如直接輸入方便,那我們把上面的操作直接寫成宏代碼,只需要選中目錄然後點一下就搞定,代碼如下:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([0-9]{1,})"
.Replacement.Text = "(\1)"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll, Wrap:=wdFindStop
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(?)("
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll, Wrap:=wdFindStop
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ")(?)"
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll, Wrap:=wdFindStop
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(([0-9]{1,})."
.Replacement.Text = "\1."
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll, Wrap:=wdFindStop