MS Word - znajdź liczby, a nie poszczególne cyfry


0

Poniższy kod przeszukuje dokument MS Word, wyodrębnia liczby i umieszcza je w programie Excel.

Potrzebuję tylko, jeśli dokument ma numer taki jak 12345, musi wyodrębnić 12345, a nie 1, 2, 3, 4 i 5. Mam w dokumentach liczby o różnej długości.

Zdaję sobie sprawę, że to wina .Text = "[0-9]"mojego braku wyrażenia regularnego, ale miałem nadzieję, że ktoś może pomóc.

Public Sub NumbersToExcel()
    Dim xlApp As Object
    Dim xlWbk As Object
    Dim xlWsh As Object
    Dim blnStartExcel As Boolean
    Dim i As Integer

    On Error Resume Next

    Set xlApp = GetObject(, "Excel.Application")
    If xlApp Is Nothing Then
        Set xlApp = CreateObject("Excel.Application")
        If xlApp Is Nothing Then
            MsgBox "Cannot activate Excel!", vbExclamation
            Exit Sub
        End If
        blnStartExcel = True
    End If

    On Error GoTo ErrHandler

    Set xlWbk = xlApp.Workbooks.Add
    Set xlWsh = xlWbk.Worksheets(1)

    With ActiveDocument.Content
        With .Find
            .ClearFormatting
            .Text = "[0-9]"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        While .Find.Execute
            i = i + 1
            xlWsh.Cells(i, 1) = "'" & .Text
        Wend
        .Find.MatchWildcards = False
    End With

ExitHandler:
    On Error Resume Next
    xlWbk.Close SaveChanges:=True
    If blnStartExcel Then
        xlApp.Quit
    End If
    Set xlWsh = Nothing
    Set xlWbk = Nothing
    Set xlApp = Nothing
    Exit Sub

ErrHandler:
    MsgBox Err.Description, vbExclamation
    Resume ExitHandler

End Sub

2
użycie.Text = "[0-9]{1,}"
Máté Juhász

też zajrzyj tutaj, może to pomóc: superuser.com/questions/993886/...
Máté Juhász

Dostaję teraz „Błąd automatyzacji” - nawet przy oryginalnym kodzie, który działał wcześniej
pee2pee

Masz wiele różnych problemów, które mogą być trudne do rozwiązania jednocześnie. 1. Pierwotnie zadane pytanie jest niezależne od VBA, nazywasz funkcję wyszukiwania Worda z makra, najpierw spróbuj znaleźć wyrażenie, które tam działa, a jeśli je masz, możesz dołączyć je do swojego wyrażenia. 2. „Błąd automatyzacji” jest dość szeroki, spróbuj debugować kod i podaj nam bardziej szczegółowe informacje, najlepiej w innym pytaniu.
Máté Juhász
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.