我們生活在一個程序的世界,編程并非是程序員的專利宣虾,每個人都可以通過編程來使自己的工作和生活更加輕松惯裕,減少對程序員的依賴。只要你愿意绣硝,用任何一種語言來輔助自己的工作都不是難事蜻势。當然,我們需要一個好的學習方法鹉胖,多少人吐槽譚浩強先生的《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)
然后找到類別為 “文檔自動化” 域名為 DocVariable慎宾,選中該域丐吓,新名稱中輸入 cname
浅悉,就是我們前面 VBA 定義的文檔變量。
點擊 “確定” 按鈕券犁,客戶名稱就插入了术健。
是不是感覺操作有點麻煩?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钦无,沒有手工定義的方法