关于在DOC文档里查找特定字符串并进行替换的问题!

逍遥散人 2011-04-25 09:52:04
程序要求:
在DOC文档中存在 [XXXXXXXX] 这样的特定内容,现需要把这样的字符串循环抽取出来,每抽取到一个字符串就和一个数组中的内容进行对比,如果字符串相同,则把数组的值替换该字符串(包含括弧)。

我原来是打算循环提取数组的值在DOC中进行判定和替换,可是这样做的话等于每换一个数组的值都要重头检索doc文档,效率似乎不高啊,有没有什么可以提高效率的办法呢?

我是考虑用正则从doc里面循环抽取这样字符串,每抽到一个就和数组进行比对,相同就进行替换,这样做是不是可以效率呢?

对VB不熟悉,不太清楚应该如何下手啊!各位多多指教啊!非常感谢

...全文
311 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
逍遥散人 2011-04-27
  • 打赏
  • 举报
回复
非常感谢各位的帮助!散分
无·法 2011-04-26
  • 打赏
  • 举报
回复
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "替换前"'可能office2007会支持正则匹配查找
.Replacement.Text = "替换后"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

dbcontrols 2011-04-26
  • 打赏
  • 举报
回复
word本身有查找替换功能,能否记录宏调用,试一下
赵4老师 2011-04-26
  • 打赏
  • 举报
回复
例如,可用星号 (*) 通配符搜索字符串(使用“s*d”将找到“sad”和“started”)。

单击“编辑”菜单中的“查找”或“替换”命令。
如果看不到“使用通配符”复选框,请单击“高级”按钮。
选中“使用通配符”复选框。
在“查找内容”框中输入通配符,请执行下列操作之一:
若要从列表中选择通配符,请单击“特殊字符”按钮,再单击所需通配符,然后在“查找内容”框键入要查找的其他文字。
在“查找内容”框中直接键入通配符。
如果要替换该项,请在“替换为”框键入替换内容。
单击“查找下一处”、“替换”或者“全部替换”按钮。
按 Esc 可取消正在执行的搜索。

注释

选中“使用通配符”复选框后,Word 只查找与指定文本精确匹配的文本(请注意,“区分大小写”和“全字匹配”复选框会变灰而不可用,表明这些选项已自动选中,您不能关闭这些选项)。
要查找已被定义为通配符的字符,请在该字符前键入反斜扛 (\),例如,要查找问号,可键入“\?”。
赵4老师 2011-04-26
  • 打赏
  • 举报
回复
如果要查找:
任意单个字符
键入 ?
例如,s?t 可查找“sat”和“set”。
任意字符串
键入 *
例如,s*d 可查找“sad”和“started”。
单词的开头
键入 <
例如,<(inter) 查找“interesting”和“intercept”,但不查找“splintered”。

单词的结尾
键入 >
例如,(in)> 查找“in”和“within”,但不查找“interesting”。
指定字符之一
键入 [ ]
例如,w[io]n 查找“win”和“won”。

指定范围内任意单个字符
键入 [-]
例如,[r-t]ight 查找“right”和“sight”。必须用升序来表示该范围。
中括号内指定字符范围以外的任意单个字符
键入 [!x-z]
例如,t[!a-m]ck 查找“tock”和“tuck”,但不查找“tack”和“tick”。

n 个重复的前一字符或表达式
键入 {n}

例如,fe{2}d 查找“feed”,但不查找“fed”。

至少 n 个前一字符或表达式
键入 {n,}

例如,fe{1,}d 查找“fed”和“feed”。

n 到 m 个前一字符或表达式
键入 {n,m}

例如,10{1,3} 查找“10”、“100”和“1000”。

一个以上的前一字符或表达式
键入 @

例如,lo@t 查找“lot”和“loot”。

注释

可使用括号对通配符和文字进行分组,以指明处理次序,例如,可以通过键入“<(pre)*(ed)>”来查找“presorted”和“prevented”。
可使用 \n 通配符搜索表达式,然后将其替换为经过重新排列的表达式,例如,在“查找内容”框键入“(Newton)(Christie)”,在“替换为”框键入“\2\1”,Word 将找到“Newton Christie”并将其替换为“Christie Newton”。
赵4老师 2011-04-26
  • 打赏
  • 举报
回复
Sub Macro1()
'
' Macro1 Macro
' 宏在 2011-04-26 由 MC SYSTEM 录制
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "\[*\]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute
Selection.Find.Execute
Selection.Find.Execute
End Sub
贝隆 2011-04-25
  • 打赏
  • 举报
回复

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧