最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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文件——通配符替換的評論 (共 條)

分享到微博請遵守國家法律
蒙城县| 安溪县| 邵武市| 平顺县| 平陆县| 南澳县| 汉沽区| 深圳市| 秭归县| 舞钢市| 繁昌县| 宜春市| 开平市| 石柱| 铜陵市| 莱芜市| 石柱| 原阳县| 吉首市| 改则县| 承德市| 元朗区| 浦东新区| 兴国县| 临桂县| 华亭县| 峨山| 鄂托克旗| 柏乡县| 卢湾区| 洪湖市| 增城市| 天柱县| 武平县| 塔河县| 内丘县| 余江县| 锡林郭勒盟| 胶南市| 苗栗县| 无为县|