如何優(yōu)雅地在 Word 中實現(xiàn)替換敏簿?

我們生活在一個程序的世界,編程并非是程序員的專利宣虾,每個人都可以通過編程來使自己的工作和生活更加輕松惯裕,減少對程序員的依賴。只要你愿意绣硝,用任何一種語言來輔助自己的工作都不是難事蜻势。當然,我們需要一個好的學習方法鹉胖,多少人吐槽譚浩強先生的《C 語言程序設計》握玛,說明了至少存在誤導的因素。學習編程甫菠,要有一個明確的目的挠铲,根據(jù)目的選擇合適的工具,而不是為了學習而學習寂诱。

大家都知道拂苹,MS Office 套件帶有一個宏語言:VBA。VBA 當然不是一門先進的語言痰洒,但因為在 Office 中內嵌瓢棒,我們用它來解決問題還是可以的浴韭。

今天說說 Office 的域,說說域中一個叫做 DocVariable 的東西脯宿。

本人工作中經(jīng)常要出文案囱桨,這些商業(yè)文案呢都有一些套路性的東西。比如說我們做項目售前的時候嗅绰,要出《方案建議書》〔蠹蹋《方案建議書》的文檔結構類似窘面,我一般是基于模板,增加針對客戶具體的情況變化的部分叽躯。在模板中财边,會有多處出現(xiàn)客戶名稱、項目名稱等点骑。這個每一個客戶和項目都不一樣酣难,怎么辦呢?難道每次都是查找/替換黑滴?當然不是不是必須的憨募,要靈活,就必須用到 Word 域袁辈。并且 Word 批量替換還有副作用菜谣,各位看官有木有碰到?這里就不展開講什么是 Word 域晚缩,不熟悉的同學自己 Google 去尾膊。DocVariable 是域的一種,但需要 VBA 代碼配合荞彼,所以知道的人少冈敛,平時用的也少見。

定義 DocVariable

ALT+F11鸣皂,進入 VBE 環(huán)境抓谴,通過菜單【插入】-【模塊】,插入一個模塊寞缝,編寫如下代碼:

Option Explicit

Public Sub AddDocVariables()
    ' delete doc variables if any
    Dim doc_var As Variable
    For Each doc_var In ActiveDocument.Variables
        doc_var.Delete
    Next
    
    ' add new doc variables
    ActiveDocument.Variables.Add Name:="cname", Value:="XXX有限公司" ' customer name'
    ActiveDocument.Variables.Add Name:="csname", Value:="XXX公司"  ' customer short name'
    ActiveDocument.Variables.Add Name:="pname", Value:="SAP實施項目" ' project name'
End Sub

代碼很直觀齐邦,先刪除所有文檔變量,然后重新定義三個文檔變量:

cname: customer name
pname: project name
csname: customer short name

文檔中插入 DocVariable

將上面的代碼運行一次(將光標放在過程中間第租,然后 F5)措拇,回到 Word 編輯界面,通過菜單【插入】-【文檔部件】- 【域】(注:我的 Word 版是 2013)

word_doc_variable_01.jpg

然后找到類別為 “文檔自動化” 域名為 DocVariable慎宾,選中該域丐吓,新名稱中輸入 cname浅悉,就是我們前面 VBA 定義的文檔變量。

word_doc_variable_02.jpg

點擊 “確定” 按鈕券犁,客戶名稱就插入了术健。


word_doc_variable_03.jpg

是不是感覺操作有點麻煩?Office 提供快捷鍵粘衬,可以非常方便插入域代碼:

  • 快捷鍵:Ctrl + F9
  • Word 文檔出現(xiàn)一對對應的大括號 {}荞估,中間為灰色,我們在大括號中間輸入 {docviarable cname}稚新,然后再按 F9 就可以了勘伺。

平時我們都用這種方法來插入域代碼。對這個域代碼褂删,我們可以通過 Shift + F9 來切換顯示飞醉,Word 會交替顯示 {docviarable cname} 和 “XXX有限公司” 。

如果文檔中有多個域代碼屯阀,我們就使用 Alt + F9 來切換顯示缅帘。操作就這幾招。

總結一下

  • Ctrl + F9: 插入域代碼
  • F9: 執(zhí)行域代碼
  • Shift + F9: 單個域代碼切換顯示
  • Alt + F9: 整篇文檔的域代碼切換顯示
  • 定義 DocVariable 類型的域代碼难衰,必須使用 VBA钦无,沒有手工定義的方法
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盖袭,隨后出現(xiàn)的幾起案子铃诬,更是在濱河造成了極大的恐慌,老刑警劉巖苍凛,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趣席,死亡現(xiàn)場離奇詭異,居然都是意外死亡醇蝴,警方通過查閱死者的電腦和手機宣肚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悠栓,“玉大人霉涨,你說我怎么就攤上這事〔咽剩” “怎么了笙瑟?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長癞志。 經(jīng)常有香客問我往枷,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任错洁,我火速辦了婚禮秉宿,結果婚禮上,老公的妹妹穿的比我還像新娘屯碴。我一直安慰自己描睦,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布导而。 她就那樣靜靜地躺著忱叭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪今艺。 梳的紋絲不亂的頭發(fā)上韵丑,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音洼滚,去河邊找鬼。 笑死技潘,一個胖子當著我的面吹牛遥巴,可吹牛的內容都是我干的。 我是一名探鬼主播享幽,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼铲掐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了值桩?” 一聲冷哼從身側響起摆霉,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奔坟,沒想到半個月后携栋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡咳秉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年婉支,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澜建。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡向挖,死狀恐怖,靈堂內的尸體忽然破棺而出炕舵,到底是詐尸還是另有隱情何之,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布咽筋,位于F島的核電站溶推,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜悼潭,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一庇忌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舰褪,春花似錦皆疹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晃酒,卻和暖如春表牢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贝次。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工崔兴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蛔翅。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓敲茄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親山析。 傳聞我的和親對象是個殘疾皇子堰燎,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容