轉載請注明出處:博客園【clayyjh】https://www.cnblogs.com/clayyjh/p/15640619.html
本文介紹Word中圖的索引的生成和修改,表的索引與此相同,涉及到題注功能,更高級的功能需要用到宏。
1、基礎使用
1)新建一個Word,建立“標題1”樣式4章,每章插入1個圖,每個章標題前用自動編號,編 1 2 3 4.自動編號不要含有中文,否則會造成題注編號章號是中文:圖一.1
2)在圖片下方插入題注
如果是圖就寫圖,是表則寫表
然后點擊確定,即可生成題注
修改題注格式
但此時發現圖后面會自動生成1個空格,這不是我們想要的,可以選擇查找替換的方法,也可以采用下文提到的高級方法。
下面生成索引
2)高級做法
為了使得插入題注后圖后面的空格,可以采用宏的方式自動刪除
1. 開啟信任中心,啟用宏
2. 將上面的文檔另存為.docm使用宏的文檔
3. 右鍵菜單欄,自定義功能區,勾選開發工具
4. 添加宏
在本文檔對應處,添加一下代碼
Sub InsertCaption() '修改系統插入“題注”命令 '功能:自動刪除標簽與編號間的空格(英文除外),並在題注數字后添加一個空格;適用於:Word 2003 - 2013,不兼容WPS文字! '真正從原理上協同系統插入題注,無任何前提條件;用戶照常插入題注即可,甚至感覺不到程序的存在! 'Endlesswx於2015年8月4日 '另,如果插入的始終未域代碼而不是數字,非程序問題,Alt+F9一次即可 Dim Lab As String, startPt As Long, endPt As Long, myrang As Range 'On Error Resume Next '發生錯誤時讓程序繼續執行下一句代碼 ' Application.ScreenUpdating = False '關閉屏幕更新,2013在此處關閉更新會導致輸入框灰色不可選,故修正在調出對話框之后 startPt = Selection.Start 'startPt標注起始點 '***將if條件隱藏隱藏即可實現----手動替換題注空格*** If Application.Dialogs(357).Show = -1 Then '插入“題注”對話框秀出來,如果按確定結束時執行以下程序,避免按取消后的空格,357也可換成wdDialogInsertCaption Application.ScreenUpdating = False '關閉屏幕更新 Lab = Dialogs(357).Label endPt = Selection.Start 'endPt標記插入的題注部分終點 Selection.Start = startPt '選定插入的整個題注 '刪除標簽與編號間的空格(英文后的保留) With Selection.Find .Text = Lab & " " .Forward = True 'False=向上查找,(True=向下查找) .MatchWildcards = False '不使用通配符 If Lab Like "*[0-9a-zA-Z.]" Then '此處判斷標簽的最后一個字符是否為英文或數字,是則不刪除空格 Else .Replacement.Text = Lab .Execute Replace:=wdReplaceOne '替換找到的第一個,此處用作刪除空格 endPt = endPt - 1 '刪除空格后,末位減1 Selection.End = endPt End If End With '在題注數字后添加一個空格 Selection.Fields.ToggleShowCodes '切換域代碼,這樣才能用^d查找域 With Selection.Find .Text = "^d" .Replacement.Text = "^& " .Forward = False 'False=向上查找,(True=向下查找) .MatchWildcards = False '不使用通配符 .Execute Replace:=wdReplaceOne '替換找到的第一個,此處用作添加空格 End With '選定整個插入的題注內容,將域代碼切換回來 endPt = endPt + 1 '增加空格后,末位加1 With Selection .Start = startPt .End = endPt .Fields.ToggleShowCodes '切換域代碼(切換回來) End With '將光標定位至題注所在段尾處 ' Selection.MoveRight Unit:=wdCharacter, Count:=1 '此句光標返回插入題注前的原始位置,對於已經輸好標題的情況並不合適 '選擇段尾回車符 With Selection.Find .Text = "^13" .Forward = True 'False=向上查找,(True=向下查找) .MatchWildcards = False '不使用通配符 .Wrap = wdFindContinue '繼續查找 .Execute End With Selection.MoveLeft Unit:=wdCharacter, Count:=1 '定位到段尾回車前 End If Application.ScreenUpdating = True '恢復屏幕更新 End Sub
保存,添加題注,可自動去除''圖''后的空格
關於Word宏,也可以手動選擇錄制宏,設定一些快捷鍵,方便使用