如何將word中除了 中文 之外其他字元 符號...去除



贊助商連結


asa00322
2009-10-05, 03:30 AM
因為工作及興趣 掃描文件 但是遇到中文之外 很多 符號 逗點 字母之類的
想將中文保留 其他英文 或是符號 去除
可以用巨集的方式處裡嗎?
謝謝??
也就是下面這個的相反作法

Sub 去掉中文()
Selection.HomeKey wdStory
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Execute "^p", Replacewith:="^l", MatchWildcards:=False, Replace:=wdReplaceAll
.Execute "[!A-z 0-9 . ^t^l]", Replacewith:=" ", MatchWildcards:=True, Replace:=wdReplaceAll
.Execute "^l", Replacewith:="^p", MatchWildcards:=False, Replace:=wdReplaceAll
End With
End Sub

這個巨集是用[取代]的方式把中文字改為全形空白.
為什麼可以用取代? 因為Word 尋找/取代 有[萬用字元]的功能可以
自訂靈活的搜尋條件, 如同程式中的 [!A-z 0-9 . ^t^l].
若你不想把中文字取代為全形空白(也就是不預留中文字的位置),
那麼請把中間Replacewith:=" " 的全形空白去掉.

贊助商連結


bx2aa
2009-10-07, 01:54 AM
google
搜尋 WORD VBA 取代
http://www.google.com.tw/search?hl=zh-TW&q=WORD+VBA+%E5%8F%96%E4%BB%A3&meta=&aq=f&oq=

找到如下:

C:\下放一個 Replace.txt 內容改為
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
0,
a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
l,
m,
n,
o,
p,
q,
r,
s,
t,
u,
v,
w,
x,
y,
z,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
<,
>,
....... 其餘符號請自己加.


Option Base 0
Sub MassReplace()
Dim arrStr() As String, InputStr As String

Fn = FreeFile
Open "C:\Replace.txt" For Input As #Fn '開啟 Replace.txt 檔
Application.ScreenUpdating = False '畫面暫停更新
While Not EOF(Fn)
Line Input #Fn, InputStr '從檔案讀出一列,
If Len(InputStr) > 0 And Mid(InputStr, 1, 1) <> "" Then '若第一個字元是'就跳過此列
arrStr = Split(InputStr, ",")'把讀入的文字列依逗號分成兩個字串,置於 arrStr 陣列裡
Call ReplaceText(arrStr(0), arrStr(1)) '
End If
Wend
Application.ScreenUpdating = True '畫面恢復更新
Close #Fn
End Sub

Function ReplaceText(Src As String, Rpl As String)
'這個函式會在整個檔案裡搜尋 Src 字串, 將它取代為 Rpl 字串
Selection.HomeKey Unit:=wdStory, Extend:=wdMove
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = Src
.Replacement.Text = Rpl
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
.Execute Replace:=wdReplaceAll'全部取代
End With
End Function

asa00322
2009-10-07, 12:14 PM
感謝 太好用了 那就是直接編輯 "那個文字檔"就可以修正其他的辨識錯誤了
太好了