如何在字典函数中使用通配符

时间:2017-11-07 11:24:06

标签: vba word-vba

有四种情况

  1. PROC。国家科。科学院。科学。 )([!U,C])
  2. Proc Natl Acad Sci)([!U])
  3. PROC。国家科。科学院。科学。 U.S.A。
  4. PROC。国家科。科学院。科学。美国
  5. 我希望当我发现这四个案件时, .text="Proc. Natl. Acad. Sci. )([!U])"
    .text="Proc. Natl. Acad. Sci. )([!U])"
    .text="Proc. Natl. Acad. Sci. U.S.A."
    .text="Proc. Natl. Acad. Sci. U S A"

    我用" Proc替换了它们。国家科。科学院。科学。美国" ,
    .replacement.text = "Proc. Natl. Acad. Sci. USA"

    和我的代码如下。但是当它运行时,msgbox:

    enter image description here

    我错在哪里,字典功能不能使用通配符?

      

    Sub proc_usa()
    Dim pattern_array As Variant, reminder_array As Variant
    Call layout_search_replace.jump_to_reference_section
        pattern_array = Split("(Proc. Natl. Acad. Sci. )([!U])<<>>(Proc Natl Acad Sci )([!U])<<>>Proc. Natl. Acad. Sci. U.S.A.<<>>Proc. Natl. Acad. Sci. U S A", "<<>>")
        Set dict = CreateObject("Scripting.Dictionary")
        dict.Add 0, "\1USA "
        dict.Add 1, "Proc. Natl. Acad. Sci. \2"
        dict.Add 2, "Proc. Natl. Acad. Sci. USA"
        dict.Add 3, "Proc. Natl. Acad. Sci. USA"
        For i = LBound(pattern_array) To UBound(pattern_array)
        With selection.Find
            .Text = pattern_array(i)
            .MatchWildcards = True
            .Wrap = wdFindContinue
            .Forward = True
            Do
                .Execute
                If Not .Found Then
                Exit Do
                End If
                If .Found Then
                 .Replacement.Text = dict(i)
                 .Execute Replace:=wdReplaceOne
    
                selection.MoveRight unit:=wdCharacter, count:=1
                End If
                Loop
        End With
        Next i
        Set dict = Nothing
    End Sub
    

0 个答案:

没有答案