(本篇圖文及程式於2022年2月更新)
2009年應朋友要求寫了 Word VBA 利用Find/Replace功能做大量字串的取代(參見「如何用find/replace做大量不同字串的取代?」),後來再寫了這一篇示範 Excel VBA的寫法。最近有網友來信詢問本文程式執行時的問題,才發現貼在部落格裡的程式碼貼上之後被弄亂(UDN部落格有這個問題),於是利用休假空閒時間,將程式稍為改寫,圖文也都重做。
記得那位朋友說,需要把一些 Word 文件檔裡面的 "第一章" 全部改成 "第1章"、 "第一款" 全部改成 "第1款"、......諸如此類,字串非常多,最多會到第一百多章、第一百多款 (可能是討論法規) 。使用 Excel 實務會遇到的情況,例如:為了資料一致性,需要把地址資料裡的 "1段"、"2段" ...... 改成 "一段"、"二段" ... ...。
我們可以使用 Windows 的 " 記事本"(有 64KB 的限制) 或 "Wordpad",建立一個取代字串的對照文字檔,另存新檔,編碼選擇 ANSI (副檔名 txt ),像這樣:
然後按 Alt+F11 進入 VBA 編輯狀態,在這個活頁簿裡面 "插入"-> "模組",Excel 會將它命名為module1,把本篇文章稍後將列出來的程式碼 "複製-貼上" 到 module1 裡面。
再按一次 Alt+F11 回到 Excel 工作表畫面,按 Alt+F8,選擇 MassReplace 巨集,"執行" 它:
這個巨集程式首先會顯示對話視窗,讓我們選擇取代字串的對照文字檔,此時就要選擇剛
才建立的文字檔:
按下 "開啟",片刻後,就可以看到檔案裡面字串取代的結果。
底下是把股號改成股名的例子:
[程式碼(文字)]
[程式碼(截圖)]
*若要索取本文的 VBA 程式碼,來信主旨請寫:「Excel 大量字串取代 VBA」
email 請寄way2cheng@gmail.com
*相關文章:
[Word VBA]如何用findeplace做大量不同字串的取代?
- 2樓. betty2010/09/30 17:12請幫忙
大大想問一下
為什麼我都key進去了,但出現找到到指名引數?
Function ReplaceText(Src As String, Rpl As String)
你的程式裡可能有Key錯, 請檢查
Call Replace(.......) 這一行括弧裡的東西有沒有key錯
若仍找不出問題, 請把你 key 的程式碼 copy & paste 到
email 裡寄給我:
way_kkiimmoo@yahoo.com.tw
ThisIsTheWay 於 2010/10/04 08:37回覆 - 1樓. 電腦搞不定2009/08/28 15:28如何改寫模組!
您好:
我在工作上正傷透腦筋後求助很多周遭的人,經由介紹您的網頁教學,得知有"大量字串取代的做法"
測試成功,非常好用,但是有個問題請教你,想讓"取代"功能更理想
Excel裡如果不要整個工作表做字串取代,我只要其中儲存格F行,由上至最下取代
如何改寫模組呢? 謝謝!
還有我碰到更複雜的難題就是...我能傳E-maul Excel檔範例給你看嗎? 謝謝!
在程式裡先選取 F 欄:
Columns("F:F").Select
然後才 call ReplaceText()
在 ReplaceText 裡,把 Cells.Replace ......... 改成 Selection.Replace ..........
就會只針對 F 欄做取代。
作家簡介裡有我的email信箱,只是我近來事情很多很忙,身體很累,
所以會較慢回覆,先請原諒。
ThisIsTheWay 於 2009/08/30 20:51回覆