2016-03-18 4 views
-2

Ich arbeite an einem Dokument der Pressemitteilung Artikel und versuchen, die Firmennamen aus dieser Word-Datei in Excel-Arbeitsblatt zu extrahieren.Wie VBA zu dem Extrahieren von Text in einer Zeichenfolge zwischen zwei Zeichen verwandt wird?

zum Beispiel: aus diesem kurzen Absatz unten, ich will MI Developments Inc

AURORA, ON, den 29. März/PRNewswire/bekommen - MI Developments Inc. (TSX: MIM. A, MIM.B; NYSE: MIM) ("MID" oder die "Gesellschaft") heute.

Im Moment habe ich ein Muster um den Namen zu identifizieren gefunden, ist der Name zwischen „/ -„und ‚(‘

Zum Beispiel, wenn ich an den nächsten Eigenschaften sieht nur vor und nach der Name im Zusammenhang wird der Name von MI Developments Inc gezeigt werden, wie fließt:

/ - MI Developments Inc. (

aber ich bin nicht sicher, wie ein Recht VBA-Code auf Wort laufen, den Namen von Unternehmen zu extrahieren Arbeitsblatt zu übertreffen

+3

Willkommen bei StackOverflow. Bitte nehmen Sie sich einen Moment Zeit, um die Richtlinien zum Stellen von Fragen in der [Hilfe] zu lesen. Sie werden sehen, dass dies kein kostenloser Code-Schreib- oder Tutorial-Service ist. Von Ihnen wird erwartet, dass Sie bereits Grundlagenforschung betreiben und sehr spezifische, gezielte Fragen zu Code stellen, der nicht funktioniert. Deine Frage ist viel zu weit gefasst. –

+0

Benötigt mehr Informationen, wenn Sie eine allgemeine Lösung wünschen –

+1

@CindyMeister @ Tim Williams, ich entschuldige mich für meine rücksichtslose Post ohne durch die Anleitungen der Hilfe zu gehen, habe ich meinen Beitrag bereits bearbeitet.Danke für deinen Rat. –

Antwort

0

Sie können Microsoft Office-Platzhaltersuche verwenden. https://support.office.com/en-gb/article/Replace-text-using-wildcards-5cda8b1b-2feb-45a6-af0e-824173d3d6e4 http://word.mvps.org/faqs/general/usingwildcards.htm

Ich bekam Antwort von Gemeinschaft. Versuchen Sie, dies zu optimieren.

Sub demo() 
With ActiveDocument 
Dim StrOut As String, DocNew As Document 
    With .Range 
    With .Find 
     .ClearFormatting 
     .Replacement.ClearFormatting 
     .Forward = True 
     .Format = False 
     .MatchWildcards = True 
     .Wrap = wdFindStop 
     .Text = "\/ - * \(" 
     .Replacement.Text = "" 
     .Execute 
    End With 
    Do While .Find.Found 
     StrOut = StrOut & Replace(Replace(.Text, "/ - ", ""), " (", "") & vbCr 
     .Collapse wdCollapseEnd 
     .Find.Execute 
    Loop 
    End With 
End With 
'Do whatever yo want to do with strOut. 
'I don't have excel experience. 
'I generally save it as text and chnge the ext from .txt to .csv which will open ok with excel. 
Set DocNew = Documents.Add 
With DocNew 
    .Range.Text = StrOut 
    .SaveAs2 FileName:="C:\Users\" & Environ("Username") & "\Desktop\i.txt", _ 
    FileFormat:=wdFormatText, AddToRecentFiles:=False 
    .Close 
End With 
Set DocNew = Nothing 
End Sub 
+0

Vielen Dank, es funktioniert gut! –

0

Suchen InStr:

https://www.google.co.uk/url?sa=t&source=web&rct=j&url=https://msdn.microsoft.com/en-us/library/8460tsh1(v%3Dvs.90).aspx&ved=0ahUKEwi8jpqgoczLAhUDthQKHeJOCt0QFggbMAA&usg=AFQjCNFYY7KkIa4AWNr35OghC--C7GJeVQ&sig2=0vAixZ8y8x9zlX_lNz6I4g

Und Mid nachschauen:

https://msdn.microsoft.com/en-us/library/05e63829(v=vs.90).aspx

Und sehen die Trim mich thoden:

https://msdn.microsoft.com/en-us/library/h9wz3dez(v=vs.90).aspx

Verwenden InStr die erste Zeichenposition zu finden - und (.

Ermitteln Sie die Anzahl der Zeichen zwischen zwei Positionen.

Verwenden Sie jetzt Mid, um den Text in eine andere Variable zu extrahieren.

Ich würde dann Trim verwenden, um Whitespace loszuwerden.

+0

Vielen Dank, sehr nützliche Möglichkeiten, mit diesen massiven Materialien umzugehen –

+0

Gern geschehen. Würde es Ihnen etwas ausmachen, mir bitte eine Aufwertung zu geben? :) –

+1

Ja, natürlich. Ich habe bereits eine Verbesserung gegeben, leider erscheint ein Dialogfeld mit der Aussage: "Sobald Sie 15 Wiederholungen verdienen, können Ihre Stimmen angezeigt werden." Daher nehme ich an, dass der Upvote bald gezeigt werden wird, ich arbeite noch daran, mehr Reputation zu bekommen. ;) –

Verwandte Themen