五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Word VBA:批量操作操作Word文件——通配符替換

2021-10-28 00:58 作者:ch_j  | 我要投稿

一、網(wǎng)友問題

今天用WordVBA解決一個知乎網(wǎng)友遇到的問題,問題如下圖所述:

網(wǎng)友問題

問題:網(wǎng)友想要實(shí)現(xiàn)的是把多個Word文檔里的“______”這種連續(xù)下劃線內(nèi)容左右兩邊加上大括號,變成“{_____}”這種形式。

二、解決思路

網(wǎng)友提到了單個文檔用通配符替換解決,最好批量處理(這是標(biāo)準(zhǔn)的辦公自動化問題)。

三、通配符方案和VBA批處理思路

1????通配符替換——對單篇文檔處理該問題

查找:([_]{1,})

替換為:{\1}

勾選【使用通配符】

然后點(diǎn)【全部替換】,即可。替換前后效果如下:

替換前
替換后

2????VBA批處理

Word VBA處理此問題,只需要遍歷所有文件。打開每個文件,用代碼執(zhí)行上述操作,保存關(guān)閉文檔即可。

為了不懂代碼的朋友能直接操作,這里用到了【FileDialog】對象來選擇文件(可多選),操作會有提示。

我們用【Documents.Open】方法打開【FileDialog】對象獲取的每個文件,下面代碼是對獲取的每個文件進(jìn)行替換操作,然后保存并退出的過程。

 ? ?For Each 文件名 In 篩選器.SelectedItems
 ? ? ? ?If Not Right(文件名, Len(文件名) - InStrRev(文件名, ".")) Like "doc*" Then GoTo 1
 ? ? ? ?Set 文件 = Documents.Open(文件名)
 ? ? ? ?With 文件.Content.Find
 ? ? ? ? ? ?.ClearFormatting
 ? ? ? ? ? ?.MatchWildcards = True
 ? ? ? ? ? ?.Wrap = wdFindStop
 ? ? ? ? ? ?.Text = "([_]{1,})" '引號內(nèi)為通配符替換的查找框文本,可根據(jù)需要更改
 ? ? ? ? ? ?With .Replacement
 ? ? ? ? ? ? ? ?.ClearFormatting
 ? ? ? ? ? ? ? ?.Text = "{\1}" ?'引號內(nèi)為通配符替換的替換框文本,可根據(jù)需要更改
 ? ? ? ? ? ?End With
 ? ? ? ? ? ?.Execute Replace:=wdReplaceAll
 ? ? ? ?End With
 ? ? ? ?文件.Close wdSaveChanges
 ? ? ? ?Debug.Print 文件名 & " 已處理完成!"
 ? ? ? ?計數(shù) = 計數(shù) + 1
 ? ? ? ?Set 文件 = Nothing
1: ?Next

四、批量處理完整代碼

Sub 批量通配符替換_VBA()
 ? ?Dim 篩選器 As FileDialog, 文件名, 文件 As Document, pd, 計數(shù) As Integer
 ? ?Set 篩選器 = Application.FileDialog(msoFileDialogFilePicker)
 ? ?With 篩選器
 ? ? ? ?.AllowMultiSelect = True
 ? ? ? ?pd = MsgBox("請選擇需要處理的文件:(可多選)", vbOKCancel + vbInformation, "選擇文件")
 ? ? ? ?If pd = vbCancel Then
 ? ? ? ? ? ?MsgBox "選擇已取消,將退出程序!"
 ? ? ? ? ? ?Exit Sub
 ? ? ? ?End If
 ? ? ? ?.Show
 ? ?End With
 ? ?For Each 文件名 In 篩選器.SelectedItems
 ? ? ? ?If Not Right(文件名, Len(文件名) - InStrRev(文件名, ".")) Like "doc*" Then GoTo 1
 ? ? ? ?Set 文件 = Documents.Open(文件名)
 ? ? ? ?With 文件.Content.Find
 ? ? ? ? ? ?.ClearFormatting
 ? ? ? ? ? ?.MatchWildcards = True
 ? ? ? ? ? ?.Wrap = wdFindStop
 ? ? ? ? ? ?.Text = "([_]{1,})" '引號內(nèi)為通配符替換的查找框文本,可根據(jù)需要更改
 ? ? ? ? ? ?With .Replacement
 ? ? ? ? ? ? ? ?.ClearFormatting
 ? ? ? ? ? ? ? ?.Text = "{\1}" ?'引號內(nèi)為通配符替換的替換框文本,可根據(jù)需要更改
 ? ? ? ? ? ?End With
 ? ? ? ? ? ?.Execute Replace:=wdReplaceAll
 ? ? ? ?End With
 ? ? ? ?文件.Close wdSaveChanges
 ? ? ? ?Debug.Print 文件名 & " 已處理完成!"
 ? ? ? ?計數(shù) = 計數(shù) + 1
 ? ? ? ?Set 文件 = Nothing
1: ?Next
 ? ?Set 篩選器 = Nothing
 ? ?MsgBox "已完成!共處理了" & 計數(shù) & "個文件。"
End Sub


Word VBA:批量操作操作Word文件——通配符替換的評論 (共 條)

分享到微博請遵守國家法律
韶山市| 承德市| 古丈县| 广东省| 光山县| 齐河县| 诸暨市| 那坡县| 桐乡市| 宁晋县| 白玉县| 英吉沙县| 霍林郭勒市| 茂名市| 蒙阴县| 海林市| 长白| 大悟县| 平谷区| 天柱县| 贺州市| 格尔木市| 玉山县| 黔西| 武宁县| 吴忠市| 建德市| 喜德县| 南汇区| 平塘县| 绥滨县| 祁阳县| 久治县| 定襄县| 海阳市| 泸水县| 任丘市| 辽中县| 赣州市| 临澧县| 阜城县|