Hi,
zu 1. appWord.Visible = True bedeutet, dass die Word-Application (also Word als Programm) sichtbar ist. Du kannst es natürlich natürlich auch auf False setzen (oder die Zeile weglassen), dann läuft alles im Hintergrund ab ohne dass der Bearbeiter etwas merkt. Du hast allerdings ein Problem, falls das Programm (aus was für Gründen auch immer) mal mitten im Code abstürzt und Word bereits (unsichtbar) geöffnet ist: du musst den Rechner neu starten damit Word zurückgesetzt wird, denn anders kannst du nichts mehr mit Word machen, da es ja ausgeblendet ist.
zu 2. die Wordtabelle wird weiter oben im Code ja als Ganzes in die Array-Variable arrDaten eingelesen. Setze mal eine Überwachung auf die Variable und schau dir den Inhalt an - jede Zeile der Tabelle befindet sich in einem Feld des Arrays. Mit dieser Codezeile nun wird das Array ins Tabellenblatt geschrieben, wobei jedes Feld in eine Zelle in Spalte A eingetragen wird. In der nächsten Codezeile wird mittels Daten -> Text in Spalten die Spalte A in ihre einzelnen Bestandteile aufgelöst und in einzelne Spalten aufgeteilt. Dadurch kann dann das 2. Feld der 2. Zeile der Wordtabelle (entspricht B2 in der Exceltabelle) ausgelesen werden.
Man kann die Ausführung allerdings auch vereinfachen, indem man nicht das gesamte Array ausgibt, sondern nur das 2. Feld:
With ThisWorkbook.Worksheets("Tabelle1").Columns(1)
loLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
Worksheets("Tabelle2").Range("A1") = arrDaten(1)
Worksheets("Tabelle2").Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=Chr(13)
.Cells(loLetzte, 1) = Worksheets("Tabelle2").Range("B1")
Worksheets("Tabelle2").UsedRange.Clear
End With
In deinem konkreten Fall kann man sich allerdings auch den Umweg über ein Hilfstabellenblatt sparen, da man den Wert direkt aus dem Array relativ einfach extrahieren kann: definiere eine neue Variable strInhalt As String und ersetzte den gesamten Teilcode:
With ThisWorkbook.Worksheets("Tabelle1").Columns(1)
loLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
strInhalt = Mid(arrDaten(1), InStr(arrDaten(1), Chr(13)) + 1)
strInhalt = Mid(strInhalt, 1, InStr(strInhalt, Chr(13)) - 1)
.Cells(loLetzte, 1) = strInhalt
End With
Bei Wordtabellen mit vielen Spalten und der Notwendigkeit des Auslesens eines Feldes irgendwo in der Mitte der Zeile (oder auch wenn mehrere Felder ausgelesen werden sollen) ist das Zerlegen in Teil-Strings wesentlich komplizierter, weshalb sich da der Umweg über ein Hilfstabellenblatt anbietet.
Bis später,
Karin