Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro anpassen

Makro anpassen
22.09.2021 18:34:09
stef26
Hallo liebe Excelprofis,
ich habe ein VBA Problem, welches ich selber leider nicht lösen kann und hoffe so auf eure Unterstützung.
Ich liste mir mit folgendem Makro alle Word Dok Dateien in einem Verzeichnis auf.

Sub DateinamenAuflisten()
Dim Dateiname As String, i As Integer
Dateiname = Dir$("C:\xxxxxx\Arbeitspläne\*.do*") 'Hier Verzeichnis und Datei angeben
Do While Dateiname  ""
ActiveCell.Offset(i, 0) = Dateiname
i = i + 1
Dateiname = Dir$()
Loop
End Sub
Von den aufgelisteten Word Dateien ziehe ich mir über ein Makro (hab ich dankend erweise hier im Forum bekommen) bestimmte Informationen raus.

Sub WordSucheZeile()
Dim inhalt As Variant
Dim pfad, datnamem, kriterien(1 To 3)
Dim treffer()
Dim temp
Dim zeile As Long, anzdat As Long, krit As Long
On Error GoTo XL90:
pfad = ActiveWorkbook.Path & "\"
datname = Dir(pfad & "*.doc*")
ReDim Preserve treffer(1 To 4, 1 To 2)
treffer(1, 1) = "Trefferübersicht"
kriterien(1) = ActiveWorkbook.ActiveSheet.Range("C1")
kriterien(2) = ActiveWorkbook.ActiveSheet.Range("E1")
kriterien(3) = ActiveWorkbook.ActiveSheet.Range("G1")
treffer(1, 2) = "Dateiname"
treffer(2, 2) = kriterien(1)
treffer(3, 2) = kriterien(2)
treffer(4, 2) = kriterien(3)
anzdat = 0
Do Until datname = ""
With GetObject(pfad & datname)
inhalt = .Content
.Close SaveChanges:=False
End With
'Inhalt nach Zeilen aufsplitten
temp = Split(inhalt, Chr(13))
anzdat = anzdat + 1
ReDim Preserve treffer(1 To 4, 1 To anzdat + 2)
treffer(1, anzdat + 2) = datname
For krit = 1 To 3
If InStr(1, inhalt, kriterien(krit), vbTextCompare) > 0 Then
For zeile = 0 To UBound(temp)
If InStr(1, temp(zeile), kriterien(krit), vbTextCompare) > 0 Then
treffer(krit + 1, anzdat + 2) = treffer(krit + 1, anzdat + 2) & vbCrLf & " _ Zeile: " & zeile + 1 & " : " & temp(zeile)
End If
Next
Else
treffer(krit + 1, anzdat + 2) = "kein Treffer"
End If
Next
datname = Dir
Loop
SXL90:
Cells(2, 1).Resize(UBound(treffer, 2), 4) = Application.Transpose(treffer)
End Sub
Meine Anforderung hat sich nun leider etwas verändert.
1) Es soll nur noch in einem bestimmten Bereich der Word Dateien gesucht werden.
Starttext ="AZG 1401" bis das nächste mal "AZG" im Worddokument steht.
2) Gesucht soll nicht mehr nach bestimmten Kennwörtern, sondern lediglich nach Zahlen die größer 1000000 sind.
Das sind unsere Materialnummern. Es können als Ergebnis mehrere Treffer vorhanden sein.
Diese sollen aufgelistet werden.
3) Wird keine"AZG 1401" gefunden, dann schliessen und nächstes Word Dokument suchen.
Das Ergebnis sollte dann so aussehen:
Dateiname (SpalteA) ; Ergebnis (SpalteB)
12345678WordText.doc; 1111111
23456784Text_Test.doc; 12345678
23456784Text Test.doc; 2222222
Bei der Datei 23456784Text_Test.doc hätte er 2 Treffer gefunden.
Ich hoffe ich hab das einigermaßen gut erklärt was ich meine und hoffe dass die Anpassung machbar ist.
Liebe Grüße
Stefan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro anpassen
24.09.2021 06:40:09
stef26
Guten Morgen,
so wie es aussieht, ist die Sache doch komplexer als ich gehofft hatte.
Wenn das Suchen der Nummern Probleme bereiten sollte, dann könnte ich mir vorstellen, dass man nur nach Zahlen sucht und diese in Excel ausgibt, egal wie groß die Zahl ist. Das könnte ich dann auch bei der Auswertung des Excel Datei im Nachgang erledigen.
Ich hoffe, das dadurch das Ganze nicht mehr so komplex ist.
Liebe Grüße
Stefan
AW: Makro anpassen
25.09.2021 12:52:04
stef26
Hallo Zusammen,
ich werde die Umsetzung versuchen mit dem Makro zu machen, nur etwas umgestellt. Muss zwar danach noch eiiges manuell bearbeiten, aber ich denke ich bekomme das geregelt. Deshalb schließe ich die Frage.
Trotzdem Danke für diejenigen die sich das mal angesehen haben.
Viele Grüße
Stefan
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige