Ich habe einen Ordner mit etwa 300 einzelnen Seiten Word-Dokumente. Jedes Dokument enthält ungefähr 3 Tabellen und auch etwas Text. In jedem Dokument gibt es beispielsweise eine Tabelle mit dem Tabellennamen "stackoverflow". HierSo finden Sie eine bestimmte Tabelle in mehreren Word-Dokumenten und extrahieren sie in einem einzigen Excel-Blatt
ist ein Bild meines Word-Dokument Beispiel:
ich viele Dokumente wie diese haben, aber alle verschieden sind, mit Ausnahme der Tatsache, dass sie alle einen Tisch mit „Stackoverflow“ haben in es (wie auf dem Bild).
Was ich tun möchte, ist, alle Namen aus diesen Tabellen aus allen Dokumenten zu einem einzigen Excel-Blatt zu extrahieren.
Was habe ich versucht, so weit ist dieses Stück Code:
Sub ImportWordTable()
Dim wdDoc As Object
Dim wdFileName As Variant
Dim TableNo As Integer 'table number in Word
Dim iRow As Long 'row index in Excel
Dim iCol As Integer 'column index in Excel
wdFileName = Application.GetOpenFilename("Word files (*.docx),*.docx", , _
"Browse for file containing table to be imported")
If wdFileName = False Then Exit Sub '(user cancelled import file browser)
Set wdDoc = GetObject(wdFileName) 'open Word file
With wdDoc
TableNo = wdDoc.tables.Count
If TableNo = 0 Then
MsgBox "This document contains no tables", _
vbExclamation, "Import Word Table"
ElseIf TableNo > 1 Then
TableNo = InputBox("This Word document contains " & TableNo & " tables." & vbCrLf & _
"Enter table number of table to import", "Import Word Table", "1")
End If
With .tables(TableNo)
'copy cell contents from Word table cells to Excel cells
For iRow = 1 To .Rows.Count
For iCol = 1 To .Columns.Count
Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
Next iCol
Next iRow
End With
End With
Set wdDoc = Nothing
End Sub
Mit diesem Stück Code ich wählen kann, welche Tabelle I zu übertreffen extrahieren möchten, es funktioniert perfekt, außer der Tatsache, dass ich zu Geben Sie die Tischnummer selbst ein und das funktioniert nur für ein Dokument.
Ich fand auch dieses Stück Code, um eine Tabelle mit einer bestimmten Zeichenfolge im Innern wählen:
Sub Find_Text_in_table()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "donec"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute
If Selection.Information(wdWithInTable) Then
Stop
'now you are in table with text you searched
'be careful with changing Selection Object
'do what you need here
End If
Loop
End Sub
Aber ich bin nicht sicher, wie diese 2.
@ShareRado Dies ist, was ich gefunden/ausprobiert – Gromdroid
Ist der Text "Tabelle 2: StackOverflow" tatsächlich in der Tabelle, oder ist es eine Art Beschriftung über der Tabelle? –
Es ist irgendwie schwierig, in einigen Tabellen denke ich seinen Teil des Tisches, in anderen Tabellen eine Beschriftung darüber. Ich habe herausgefunden, dass entweder die Tabelle eine Beschriftung über ihr und "Name" und "adres" in ihr hat, sonst ist "Tabelle 2: Stackoverflow" in der Tabelle und hat keinen "Name" oder "adres" in der Tabelle. – Gromdroid