vba 查找替换问题

在excel中运行的vba 显示word 然后查找“闵行支行” 然后替换成zhihang变量,不知如何修改

从代码本身来看,应该没有问题。但鉴于你以前遇到过的情况,或许还是一些 VBA 常量的定义未初始化,请参照以下对照表,替换代码中的预定义常量:

名称 值 说明

wdReplaceAll 2 替换所有匹配项。

wdReplaceNone 0 不替换任何匹配项。

wdReplaceOne 1 替换遇到的第一个匹配项。

wdFindAsk 2 搜索完所选内容或范围后,Microsoft Word 会显示一条消息,询问是否搜索文档的其余部分。

wdFindContinue 1 到达搜索范围的开始或结尾时,继续执行查找操作。

wdFindStop 0 到达搜索范围的开始或结尾时,停止执行查找操作。追问

还是在我黄色的调试的地方报错

追答

晕!

原来你是在EXCEL的VBA中运行,当然不支持 VBA for WORD 中的对象和方法!


请在EXCEL的VBA编辑窗口,点击菜单:工具-引用,然后勾选“Microsoft Word 14.0 Object Library”


然后修改过程为:

Sub Selection_Find()
Dim myApp As Word.Application
Dim myDoc As Word.Document
Set myApp = GetObject(, "Word.Application")
Set myDoc = myApp.Documents(WORD文档的文件名)
myApp.Visible = True
With myApp.Selection.Find
    .ClearFormatting
    .Text = "闵行支行"
    .Replacement.ClearFormatting
    .Replacement.Text = "zhihang"
    .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
End Sub

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-14
sub selection_find()
Range("A1:G13").Select ' 这里是你选择需要替换的范围
Selection.Replace What:="闵行支行", Replacement:="zhihang", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
end sub

注意,代码中的“zhihang”是作为字符串处理的。如果是一个变量,那么,zhihang在代码中,就没有括号!!例如:
sub selection_find()
dim zhihang

zhihang = "我的支行"

Range("A1:G13").Select ' 这里是你选择需要替换的范围
Selection.Replace What:="闵行支行", Replacement:=zhihang, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
end sub追问

你好,这代码是在wrod中查找替换,刚刚代码运行没有错误,但是没有替换成功,我改成了这样

追答

我给你的代码是在Excel当中的。如果是在Word当中的话,代码如下:

Sub Selection_Find()
Dim zhihang As String
zhihang = "我的支行"
With Selection.Find
.Text = "闽行支行"
.Replacement.Text = zhihang
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

留意最后一行
Selection.Find.Execute Replace:=wdReplaceAll
这个是执行替换的语句。你原来的代码里面就缺了它。

追问

谢谢,但正如楼上所说 缺少了引用,so 分就给他了