字體:小 中 大 | |
|
|
2009/03/11 16:02:53瀏覽4241|回應1|推薦3 | |
有位朋友說,他有個Word文件檔案裡有 001~150 的編號,他想在每個編號前面就換個新頁,但要如何利用VBA將這個動作自動化呢? 我們知道Word尋找\取代功能的 "指定方式" 選單裡,提供了一些表示方法來代表檔案裡的特殊記號,讓我們在 "尋找目標" 和 "取代為" 的欄位裡可以使用,例如:^p 代表段落標記、^t 代表定位字元、......諸如此類還有很多,其中 "^m" 就是手動分頁符號。 這位朋友說他的檔案裡除了編號就沒有其他的數字,因此,我們可以利用前一篇 ("如何用findeplace做大量不同字串的取代?") 裡的那個 ReplaceText() function 執行尋找\取代功能,用 "^m001" 取代 "001"、用 "^m002" 取代 "002"......依此類推,把每個編號前面加上一個手動分頁符號,就達成目標了。 底下的程式碼原理很簡單,就是用迴圈的遞增值 i = 1~150 製出 001~150 的字串,然後再做出前面加 ^m 換頁符號的 "^m001" 這樣的字串,然後傳送給 ReplaceText() (參見程式註解)。 Option Explicit Sub AutoNewPage() For i = 1 To 150 End Sub Function ReplaceText(Src As String, Rpl As String) Selection.HomeKey Unit:=wdStory, Extend:=wdMove End Function 在這個程式裡,原本我想用 srcStr = Right("00" & i, 3) 的方式來製出 001~150 的字串,例如 i=14,在左邊加兩個 0 就成了 "0014",然後取其最右的三個字元就是 "014" 了。沒想到 Word的 VBA 編譯器在 Right() 和 Left() 的參數檢查方面似乎有問題 (雖然看 help 裡的說明是和 Excel 用法一樣),試了很久,決定改用 Format() 的做法。不知 Word 新版是否仍舊有此現象 (我用的是2003版)?
|
|
( 興趣嗜好|電腦3C ) |