目前此代码运行时没有出现错误消息,但未进行请求的替换:
Private Sub TestingButton_Click()
Dim RngFound As Range
Dim FileToProcess As Word.Document
Dim WordInstance As Object
Set WordInstance = CreateObject("Word.Application") 'For these tests I close Word first.
Set FileToProcess = WordInstance.Documents.Open("c:\sarah\junk\Attach.doc")
WordInstance.ActiveDocument.Range.Select 'Gets the whole document
Toolbox.SetupFind (WordInstance.ActiveDocument.Range)
With WordInstance.ActiveDocument.Range.Find
.Text = "rock"
.Replacement.Text = "found it!"
.Execute
End With
End Sub
在工具箱模块中:
Public Function SetupFind(ByRef RngPassed As Word.Range)
With RngPassed.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
End Function
上面的代码来自我为故障排除而创建的测试数据库。我的目的地是一个Access表单,其目的是从一组文档中提取一些信息,并将信息放在数据库中。它工作正常。在经历了特别壮观的撞车后,它停止了工我在表单处于中断模式时尝试删除标签。 (我知道,......深感遗憾)即使用ctrl-break也无法关闭Access。可能最奇怪的是,类似的代码现在不再适用于数据库的备份副本。
以下是我尝试过但没有奏效的事情:
将所有对象重新导入新数据库。同样,重建后端数据库。打破表单的代码(几千行) 进入模块。将所有代码复制到记事本中,保存,然后创建一个 一个新的空数据库中的按钮。重新创建潜艇功能 键入,然后一旦存在,粘贴从Wordpad的代码。重启 表单的引用,包括MSWord。制作一个全新的形式 在新数据库中,只有一个按钮只显示 码。使用定义的范围:这一切都是在我获得持久性时开始的 RngToSearch.find.execute中的错误:findtext:=“reason”。错误 突出显示.find并说'参数不是可选的'。除此之外 事情,我切换到选择而不是我的定义范围 试图孤立问题。但是与一个范围合作 而选择是我真正需要再次结束的地方。
可能相关的观察结果:
同一数据库中的其他表单有很多后端代码可以正常工作。所以其他例程也是如此。 只有一个文件是开放的。据我所知,这份文件并没有什么不寻常之处。我试过多个文件。 要查找的文本存在于表格外的文档中。
有效的事情,因为它们可能是线索: 直接在Word中,没有代码,没有任何代码,使用“查找”来选择目标单词。 WordInstance.ActiveDocument.Range.Text =替换(WordInstance.ActiveDocument.Range.Text,“摇滚”,“找到它!”)。麻烦的是,我最终需要再次做的事情比替换可以处理的更复杂。
答案 0 :(得分:1)
指定替换的范围。代码在Access 2010中为我提供了TestingButton_Click()
...
'.Execute
.Execute Replace:=wdReplaceAll
Toolbox.SetupFind
也会调用.Execute
。由于查找和替换文本在该点都是空字符串且未指定范围,.Execute
不会造成损害......但它似乎也没有用。