Steuer Excel aus Word mit VBA in Microsoft Excel 2010
Es gibt Zeiten, in denen Daten aus einem Word-Dokument in eine Excel-Datei kopiert werden müssen. Wecan kann dies sehr einfach mit einem Makro in allen Office-Versionen tun. Das Makro öffnet eine vorhandene / neue Excel-Datei, kopiert den Inhalt und speichert und schließt die Datei. Mal sehen, wie das gemacht wird.
Option Explicit __ Sub OpenAndReadWordDoc ()
Dim tString As String Dim p As Long, r As Long Dim wrdApp As Object, wrdDoc As Object Dim wb As Workbook Dim trange As Variant _Set wb = Workbooks.Add With wb.Worksheets (1) .Range (“A1”)
wrdApp.Visible = True Set wrdDoc = wrdApp.Documents.Open („B: \ Test \ MyNewWordDoc.docx“) _ _With wrdDoc Für p = 1 bis .Paragraphs.Count Set trange = .Range (Start: =. Paragraphs (p ) .Range.Start, _ End: =. Absätze (p) .Range.End)
tString = trange.Text tString = Left (tString, Len (tString) -1) _ Wenn Instr (1, tString, „1“)> 0 Dann wb.Worksheets (1) .Range („A“ & r) .Value = tString r = r + 1 End If Next p .Close End With wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True End Sub Um den obigen Code in Ihre Datei zu kopieren, drücken Sie Alt + F11 auf der Tastatur On Auf der linken Seite sehen Sie Microsoft Excel-Objekte. Klicken Sie mit der rechten Maustaste und wählen Sie Einfügen. Klicken Sie dann auf Modul. * Kopieren Sie den Code in das Codefenster auf der rechten Seite. Jetzt sehen wir, wie dieser Code funktioniert. Zuerst deklarieren wir die benötigten Variablen – Zeichenfolge als Zeichenfolge für Text (wir werden später sehen, welcher Text). 2 Variablen „p“ & „r“ als Zähler. Diese sind vom „langen“ Typ. Dann haben wir die 2 Objektvariablen wrdApp und wrdDoc. wrdApp ist das Word-Anwendungsobjekt und wrdDoc ist das Word-Dokumentobjekt. Wb ist unsere Arbeitsmappenvariable für die neue Arbeitsmappe, die im Code erstellt wird. Wenn Sie eine vorhandene Arbeitsmappe öffnen, können Sie diese Variable stattdessen dieser zuweisen. Die letzte Variable ist der Variable-Typ der seltsamen Variante, der den Inhalt enthält, der vom Word-Dokument in die Excel-Datei übertragen werden muss.
Set wb = Workbooks.Add Hiermit wird die neue Arbeitsmappe der Variablen wb zugewiesen. Wenn Sie keine neue Arbeitsmappe hinzufügen, sondern eine vorhandene Arbeitsmappe öffnen möchten, können Sie diese Zeile wie folgt ändern: * Set wb – Workbooks.Open („B: \ Test \ File1.xlsx“) _Mit wb.Worksheets ( 1) .Range („A1“)
Diese Codezeilen werden in den Text „Word Document Contents:“ mit einer fetten Schrift und Schriftgröße 14 in Zelle A1 des 1. Arbeitsblatts in der neuen Arbeitsmappe eingefügt. Und dann .Offset (1,0) .Select wählt die nächste Zeile aus.
r = 3 Der Variablen „r“ wird der Wert 3 zugewiesen, da dies die Startzeile in der Excel-Datei für die Daten ist, die aus dem Word-Dokument kopiert werden sollen.
Set wrdApp = CreateObject („Word.Application“) _ Wenn Word bereits in Ihrem System ausgeführt wird, erstellt _CreateObject * eine neue Instanz von Word. In dieser Zeile wird der Word-Anwendung die Objektvariable wrdApp zugewiesen, die Sie später im Code verwenden können.
wrdApp.Visible = True Die neu erstellte Instanz von Word ist beim Erstellen nicht sichtbar. Um es sichtbar zu machen, müssen Sie wrdApp.Visible = True setzen, damit es sichtbar ist.
_Set wrdDoc = wrdApp.Documents.Open („B: \ Test \ MyNewWordDoc.docx“) _ Wir haben die neue Instanz der Wortanwendung erstellt, aber noch kein Quellwortdokument geöffnet. Dieser Befehl öffnet also das Word-Dokument. Das Objekt wrdDoc wurde diesem Dokument zugewiesen, damit wir es später im Code verwenden können.
Mit wrdDoc… .End With Dies ist unsere „With“ -Schleife, die vollständig mit dem wrdDoc-Objekt funktioniert. Sobald Sie diese Schleife geöffnet haben, müssen Sie den Text „wrdDoc“ in dieser Schleife nicht erneut wiederholen. Sie können direkt mit dem Punkt („.“)
beginnen vor Objekten im Zusammenhang mit wrdDoc. Diese Schleife endet mit der Anweisung End With. Nachdem die End With-Anweisung eingegeben wurde, können Sie nach wrdDoc nicht mehr nur mit dem „.“ Auf die Objekte verweisen.
Für p = 1 bis .Paragraphs.Count Dies ist die „For“ -Schleife, die vom 1. bis zum letzten Absatz im Word-Dokument wiederholt wird. Die Wortdatei, die die Daten enthält, enthält 100 Informationszeilen, die jeweils als separater Absatz gespeichert sind. Die Schleife wird von 1 auf 100 erhöht und die Absätze kopiert. Wenn bestimmte Bedingungen festgelegt sind, basiert das Kopieren und Einfügen auf diesen Bedingungen.
_Set trange = .Range (Start: =. Absätze (p) .Range.Start, End: =. Paragraphen (p) .Range.End) _ Hiermit werden Anfang und Ende jedes Absatzes dem Bereich zugewiesen, wenn die Schleife inkrementiert wird.
_tString = trange.text tString = Left (tString, len (tString) -1) _ Zuerst wird der Text von trange an TString weitergeleitet. Dann hat jeder Absatz am Ende des Satzes ein Absatzzeichen. Dies wird mit der Funktion Links entfernt. Auf der linken Seite werden alle Zeichen außer dem letzten in der Variablen tString gespeichert.
Wenn Instr (1, tString, „1“)> 0, dann wb.Worksheets (1) .Range („A“ & r) .Value = tString r = r + 1 End If Diese IF-Funktion prüft, ob der Text in tString enthält die Zahl 1. Wenn dies der Fall ist, wird der Inhalt von tString in die nächste verfügbare Zeile in der Arbeitsmappe kopiert. „R“ hatte zuerst den Wert 3. Mit r = r + 1 erhöhen wir ihn um 1, damit der nächste Eintrag unter dem vorherigen Eintrag platziert werden kann.
Next p .Close Die Codezeile Next p wird zum nächsten Absatz inkrementiert.
.Close schließt das Dokument, sobald alle Absätze bearbeitet wurden. Dies ist die Ausgabe, die wir in der Excel-Datei erhalten –
Sie werden sehen, dass nur die Absätze in der Ausgabe enthalten sind, die irgendwo in der Nummer die Nummer 1 enthalten.
wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True wrdApp.Quit schließt das Wort Application. Set wrdDoc = Nothing und Set wrdApp = Nothing geben den von diesen beiden Objektvariablen belegten Speicher frei und setzen sie auf Nothing. wb.Saved = True speichert die Arbeitsmappe.
Mit dem obigen Code können wir steuern, welche Daten von der Word-Datei in die Excel-Datei kopiert werden sollen.