我有一个word文件doc1,里面有一个标签abc,里面原有文本“文本1”。现在要用vb操作这个doc1,将标签abc的文本替换为“文本2”,程序该如何写?谢谢!

解决方案 »

  1.   

    Sub Macro1()    Selection.GoTo What:=wdGoToBook, Name:="abc"    Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "文本1"
            .Replacement.Text = "文本2"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .CorrectHangulEndings = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
        With Selection
            If .Find.Forward = True Then
                .Collapse Direction:=wdCollapseStart
            Else
                .Collapse Direction:=wdCollapseEnd
            End If
            .Find.Execute Replace:=wdReplaceOne
            If .Find.Forward = True Then
                .Collapse Direction:=wdCollapseEnd
            Else
                .Collapse Direction:=wdCollapseStart
            End If
            .Find.Execute
        End With
    End Sub
      

  2.   

        Dim wdapp As Object
        Dim wddoc As Object
        Set wdapp = CreateObject("Word.Application")
        Set wddoc = wdapp.Documents.Open("c:\doc1.doc")
        
        wddoc.Books("abc").Range.text = "文本2"
        
        wddoc.Save
        wddoc.Close
        wdapp.Quit
        Set wdtab = Nothing
        Set wddoc = Nothing
        Set wdapp = Nothing
        
      

  3.   

    多了一句:   Set wdtab = Nothing 
      

  4.   

    wddoc.Books("abc").Range.text = "文本2" 是把书签"abc"的所有内容都替换为"文本2";如果是部分替换则需要查找替换。
      

  5.   

    谢谢ok999ok回复,我按你的程序试验了一下,果然可以。现在有一个问题:如果这个"abc" 书签是在文本框里面,则这段程序运行就出错,因为无法定位到文本框里的书签上。如何解决?谢谢!