【轉(zhuǎn)載】論文排版-Word插入題注時(shí)自動(dòng)刪除標(biāo)簽與編號(hào)前的空格,編號(hào)后添加空格

臨近畢業(yè),想必小伙伴們都忙著修改論文吧,最近發(fā)現(xiàn)了一些不錯(cuò)的方法,可以幫助大家論文排版節(jié)省不少時(shí)間,希望對(duì)大家有所幫助,祝愿大家都順利畢業(yè),找到心儀的工作!

本文轉(zhuǎn)自?Endlesswx的博客

http://blog.sina.com.cn/endlesswx123


問題提出:

不得不說,Word在插入題注上從03到13一直沒有針對(duì)中國(guó)用戶優(yōu)化。

1. 插入題注的標(biāo)簽與編號(hào)間有一個(gè)空格,當(dāng)標(biāo)簽是中文時(shí)需要用戶手動(dòng)刪除

2.?標(biāo)簽后竟然不插入空格!

當(dāng)上述兩條加到一起時(shí),我插入標(biāo)簽為“表格”,名稱為“12月消費(fèi)清單”的題注就呈現(xiàn)下左圖的丑樣:

打印出來就這樣,到底是表格1,還是表格11,表格112呢?這時(shí)就需要用戶前刪空格,后添空格,選來選去反正我是感覺有點(diǎn)煩!

功能演示:

程序功能:

1.?程序是調(diào)用系統(tǒng)的“插入題注對(duì)話框”,以前怎么插題注現(xiàn)在還怎么用,學(xué)習(xí)成本與多余步驟

2.?中文與編號(hào)間空格刪除,英文與編號(hào)見空格保留(見動(dòng)態(tài)圖中第3個(gè)Figure)

3.?編號(hào)數(shù)字與題注內(nèi)容見添加一個(gè)空格,予以區(qū)分

其實(shí)程序還支持插入時(shí)不填內(nèi)容、在文檔中輸好的內(nèi)容前插入等等,自行體驗(yàn)吧。

使用方法:

第一步:錄制一個(gè)宏(主要為了創(chuàng)建NewMacros模塊,以前錄制過的請(qǐng)?zhí)^此步)

03:工具→宏→錄制新宏→確定→單擊“停止”按鈕

10:?jiǎn)螕鬢ORD狀態(tài)欄的錄制宏按鈕(或開發(fā)工具→錄制宏)→確定→單擊“停止”按鈕

第二步:ALT+F11(打開VBA對(duì)話框)

將以上代碼粘貼到打開的NewMacros模塊中

第三步:用系統(tǒng)的插入題注即可

另,本人會(huì)為插入題注設(shè)置快捷鍵Alt+[,這個(gè)看個(gè)人喜好,設(shè)置方法參見另一博文:文本從PDF等粘貼到WORD中,智能刪除多余的空格和回車中使用方法部分

程序代碼:

Sub InsertCaption()'修改系統(tǒng)插入“題注”命令

??'功能:自動(dòng)刪除標(biāo)簽與編號(hào)間的空格(英文除外),并在題注數(shù)字后添加一個(gè)空格;適用于:Word 2003 - 2013,不兼容WPS文字!

??'真正從原理上協(xié)同系統(tǒng)插入題注,無任何前提條件;用戶照常插入題注即可,甚至感覺不到程序的存在!

??'Endlesswx于2015年8月4日

??'另,如果插入的始終未域代碼而不是數(shù)字,非程序問題,Alt+F9一次即可

??Dim Lab As String, startPt As Long, endPt As Long, myrang As Range

??'On Error Resume Next'發(fā)生錯(cuò)誤時(shí)讓程序繼續(xù)執(zhí)行下一句代碼

'?Application.ScreenUpdating = False??'關(guān)閉屏幕更新,2013在此處關(guān)閉更新會(huì)導(dǎo)致輸入框灰色不可選,故修正在調(diào)出對(duì)話框之后

??startPt = Selection.Start'startPt標(biāo)注起始點(diǎn)

??'***將if條件隱藏隱藏即可實(shí)現(xiàn)----手動(dòng)替換題注空格***

??If Application.Dialogs(357).Show = -1 Then '插入“題注”對(duì)話框秀出來,如果按確定結(jié)束時(shí)執(zhí)行以下程序,避免按取消后的空格,357也可換成wdDialogInsertCaption

????Application.ScreenUpdating = False??'關(guān)閉屏幕更新

????Lab = Dialogs(357).label

????endPt = Selection.Start'endPt標(biāo)記插入的題注部分終點(diǎn)

????Selection.Start = startPt'選定插入的整個(gè)題注

????'刪除標(biāo)簽與編號(hào)間的空格(英文后的保留)

????With Selection.Find

??????.Text = Lab & " "

??????.Forward = True?'False=向上查找,(True=向下查找)

??????.MatchWildcards = False '不使用通配符

??????If Lab Like "*[0-9a-zA-Z.]" Then'此處判斷標(biāo)簽的最后一個(gè)字符是否為英文或數(shù)字,是則不刪除空格

??????Else

????????.Replacement.Text = Lab

????????.Execute Replace:=wdReplaceOne'替換找到的第一個(gè),此處用作刪除空格

????????endPt = endPt - 1 '刪除空格后,末位減1

????????Selection.End = endPt

??????End If

????End With

????'在題注數(shù)字后添加一個(gè)空格

????Selection.Fields.ToggleShowCodes?'切換域代碼,這樣才能用^d查找域

????With Selection.Find

??????.Text = "^d"

??????.Replacement.Text = "^& "

??????.Forward = False?'False=向上查找,(True=向下查找)

??????.MatchWildcards = False '不使用通配符

??????.Execute Replace:=wdReplaceOne'替換找到的第一個(gè),此處用作添加空格

????End With

????'選定整個(gè)插入的題注內(nèi)容,將域代碼切換回來

????endPt = endPt + 1 '增加空格后,末位加1

????With Selection

??????.Start = startPt

??????.End = endPt

??????.Fields.ToggleShowCodes?'切換域代碼(切換回來)

????End With

????'將光標(biāo)定位至題注所在段尾處

'???Selection.MoveRight Unit:=wdCharacter, Count:=1'此句光標(biāo)返回插入題注前的原始位置,對(duì)于已經(jīng)輸好標(biāo)題的情況并不合適

????'選擇段尾回車符

????With Selection.Find

??????.Text = "^13"

??????.Forward = True?'False=向上查找,(True=向下查找)

??????.MatchWildcards = False'不使用通配符

??????.Wrap = wdFindContinue '繼續(xù)查找

??????.Execute

????End With

????Selection.MoveLeft Unit:=wdCharacter, Count:=1'定位到段尾回車前

??End If

??Application.ScreenUpdating = True?????'恢復(fù)屏幕更新

End Sub

后話:

?其實(shí)這個(gè)程序的方法有點(diǎn)“末端治理”的意思了,最美好的情況是微軟直接優(yōu)化“插入題注”的源程序了,只能期待吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容