以下是引用cttc在2007-2-10 23:28:52的发言:版主: 你好! 我使用以下一段代码试图替换文字,但是在程序后却发现文本没有被替换,不知为什么,求教版主。 Dim WordApp Set WordApp = CreateObject("Word.Application") WordApp.Selection.Find.ClearFormatting WordApp.Selection.Find.Replacement.ClearFormatting With WordApp.Selection.Find .Text = "11111111" .Replacement.Text = "2222222222222222222222" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With WordApp.Selection.Find.Execute Replace:=wdReplaceAll ActiveDocument.Save 你的程序有问题了。 请看: Set WordApp = CreateObject("Word.Application") 你这是创建了一个WORD 程序对象,这只是一个Word.Application 你没有打开任何文档,也就是说,ACTIVEDOCUMENT对象你还没有,你怎么可以查找与替换呢? 请加上如 WordApp.Documents.Open YourDocument 然后再进行替换。 如果把WordApp.Document.OPEN(YourDocument)返回给一个Document对象,则更好。 请参考以下两种方法: '* +++++++++++++++++++++++++++++ '* Created By SHOUROU@ExcelHome 2007-2-11 8:22:31 '仅测试于System: Windows NT Word: 11.0 Language: 2052 '№ 0152^The Code CopyIn [ThisDocument-ThisDocument]^' '* ----------------------------- Option Explicit Sub Example() '此处为工程引用MS WORD Dim WordApp As Word.Application, wdDoc As Word.Document Set WordApp = CreateObject("Word.Application") Set wdDoc = WordApp.Documents.Open("F:\TEST.DOC") With wdDoc With .Content.Find .ClearFormatting .Execute FINDTEXT:="1111111", REPLACEWITH:="22222222222", Replace:=wdReplaceAll End With .Save '保存文档 End With WordApp.Visible = True '显示Word应用程序,如需退出,可加上WordApp.Quit End Sub '---------------------- Sub Example2() '此处为创建一个后期绑定的Word对象 Dim WordApp As Object, wdDoc As Object Set WordApp = CreateObject("Word.Application") Set wdDoc = WordApp.Documents.Open("F:\TEST.DOC") With wdDoc With .Content.Find .ClearFormatting .Execute FINDTEXT:="1111111", REPLACEWITH:="22222222222", Replace:=2 End With .Save End With WordApp.Visible = True End Sub '----------------------
至于查找与替换的代码写法,我写的是比较简单的一种,你可以仍然按录制宏中的方式进行。请注意创建后期绑定对象时的Word常数(wdReplaceAll)应使用实际值代替(2)。 |