ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 17832|回复: 18

[求助] .Wrap = wdFindContinue和=1;Replace:=wdReplaceAll 和=2有什么区别?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-10-16 11:33 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
昨天在弄一个在excel vba中调用word字符替换的功能
弄了大半天,硬是死活不能替换
后来网上搜了下原因,有人指出将
.Wrap = wdFindContinue   改为=1
Replace:=wdReplaceAll   改为=2
结果,这代码在excel中能正常运行了!

源代码如下,有些我查了注释,并写了下来
(有些在按F1的帮助文档里查不到,不知道是不是我的安装包不完整的问题)
希望有人能在在 三个问号的注释处帮我解释一下啊???

Sub ReplaceWord() '要在工具菜单中引用Microsoft Word xx.0 Object Library
    Dim WdApp, Wd
    Application.ScreenUpdating = False

    Set WdApp = CreateObject("word.application")

    Set Wd = WdApp.Documents.Open(ThisWorkbook.Path & "\测试.doc*")

    WdApp.Visible = False

      WdApp.Selection.Find.ClearFormatting '???
            WdApp.Selection.Find.Replacement.ClearFormatting '???
            With WdApp.Selection.Find
                    .Text = "name" ' 待查字符串为name
                    .Replacement.Text = "姓名" '找到后替换为姓名
                    .Forward = True '向前继续搜索吗?
                    .Wrap = 1 '???这是啥意思? 原来为 .Wrap = wdFindContinue   改为=1后运行正常
                    .Format = False '???
                    .MatchCase = False '区分大小写吗
                    .MatchWholeWord = False '全字符匹配
                    .MatchByte = True '???
                    .MatchWildcards = False '使用通配符吗
                    .MatchSoundsLike = False '要返回一个与待查字符发音相近的单词吗?
                    .MatchAllWordForms = False '??? 如果为 True,意为 需查找待查文本的所有形式?
            End With
            WdApp.Selection.Find.Execute Replace:=2 '这是啥意思? 原来为 Replace:=wdReplaceAll   改为=2后运行正常

    Wd.SaveAs ThisWorkbook.Path & "\测试1.doc"
    Wd.Close
    WdApp.Quit
    Set Wd = Nothing
    Set WdApp = Nothing
    Application.ScreenUpdating = True
    MsgBox "转换完成", vbOKOnly, ""
End Sub

TA的精华主题

TA的得分主题

发表于 2014-10-16 20:46 | 显示全部楼层
WdApp.Selection.Find.ClearFormatting '???清除查找格式
WdApp.Selection.Find.Replacement.ClearFormatting '???清除替换格式
                      .Wrap = 1 '???这是啥意思? 原来为 .Wrap = wdFindContinue   1代表wdFindAsk 结束对所选内容或区域的搜索后,Word 会显示一条消息,询问是否搜索文档的其余部分。
                    .Format = False '不查找格式
                    .MatchByte = True '区分全角和半角
                     .MatchAllWordForms = False '??? 如果为 True,意为 需查找待查文本的所有形式,即英语单词的各种时态

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-17 15:04 | 显示全部楼层
doitbest 发表于 2014-10-16 20:46
WdApp.Selection.Find.ClearFormatting '???清除查找格式
WdApp.Selection.Find.Replacement.ClearFormatt ...

感谢前辈解惑  `(*∩_∩*)′
那还有这条呢
Replace:=wdReplaceAll  '这是替换所有找到的待查字符吧
他改为Replace:=2 '这是啥意思?  2就代表wdReplaceAll还是其他的呢?
我这边的F1里按不出来

TA的精华主题

TA的得分主题

发表于 2014-10-17 15:33 | 显示全部楼层
2代表wdReplaceNone,不替换
WdReplace 可以是下列 WdReplace 常量之一:
wdReplaceAll
wdReplaceNone
wdReplaceOne

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-17 15:40 | 显示全部楼层
doitbest 发表于 2014-10-17 15:33
2代表wdReplaceNone,不替换
WdReplace 可以是下列 WdReplace 常量之一:
wdReplaceAll

终于搞懂了 Thx  :)

TA的精华主题

TA的得分主题

发表于 2016-7-17 09:44 | 显示全部楼层
纠正一下,Wrap = wdFindContinue,表示使用通配符时,查找包含字符最多(连续的字符区域)的、符合查找条件的查找结果
Wrap = wdFindstop则指包容字符最少的查找结果;没有“wrap=3”这样的结果,不知会有Wrap=wdFindAsk

TA的精华主题

TA的得分主题

发表于 2016-7-17 11:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如果是前期引用应该是可以的,不用改的

TA的精华主题

TA的得分主题

发表于 2017-4-6 19:43 | 显示全部楼层
doitbest 发表于 2014-10-16 20:46
WdApp.Selection.Find.ClearFormatting '???清除查找格式
WdApp.Selection.Find.Replacement.ClearFormatt ...

word find.excute的参数中,有的用数值表示,有的用英文表示,其中数值不只代表什么意思?
比喻:
matchcase:=true(或flase),true和false用数字,分别是什么?
还有replace有
WdReplaceAll
WdReplaceNone
WdReplaceOne
这些常量若是用数值表示,各是什么?

TA的精华主题

TA的得分主题

发表于 2017-4-6 20:02 | 显示全部楼层
wdReplaceAll    2    替换所有匹配项。   
wdReplaceNone    0    不替换任何匹配项。   
wdReplaceOne    1    替换遇到的第一个匹配项
matchcase:=true 区分大小写
一般参数英文和数值可以互相代替,英文参数更“去专业化”,但在执行时要增加编译的环节

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-4-6 20:39 | 显示全部楼层
doitbest 发表于 2017-4-6 20:02
wdReplaceAll    2    替换所有匹配项。   
wdReplaceNone    0    不替换任何匹配项。   
wdReplaceOn ...

谢谢你的讲解。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 08:16 , Processed in 0.037144 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表