Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1776to1780
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

Copy&Paste aus PDF-Dokument

Copy&Paste aus PDF-Dokument
31.08.2020 14:45:21
Sebastian
Hey Leute,
ich fange gerade damit an, mich in VBA einzulesen - bin also entsprechend unversiert. Da ich im Moment vermehrt mit Excel-Tabellen zu tun habe, habe ich mir Gedanken über ein Makro gemacht.
Das Makro beinhaltet, dass eine PDF-Datei nach bestimmten Schlagwörtern durchsucht wird. Findet es diese, werden sie aufgereiht und mit Kommata getrennt in eine Zelle kopiert.
Wie ich gelesen habe, wäre es am einfachsten, die PDF-Dateien vorab in Excel-Dateien zu exportieren - da ich mit rund 10 PDFs auf einmal zu tun habe, wäre das nicht sonderlich schwierig. Allerdings sind das immer unterschiedliche PDFs.
Der Haken ist: es sind VIELE Schlagwörter. Ein Beispiel: Ich suche in einem PDF nach Zahlen von 1 bis 100. Wenn eine Zahl in diesem Bereich gefunden wird, soll sie in A1 geschrieben werden. Wird eine zweite Zahl gefunden, soll sie abgetrennt mit "," auch in A1 geschrieben werden. Usw.usf.
Dann sähe A1 also bspw. so aus: 1, 5, 66, 80, 91.
Nun soll für B1 aber auch die Zahlen 101 bis 200 durchsucht werden und im selben Ablauf in B1 kopiert werden.
B1 hätte dann bspw.: 102, 109, 199
Kurz gesagt: Ich will einen immer wiederkehrenden Suchlauf weitgehend automatisieren.
Kann man sowas bewerkstelligen?
Wenn ihr mir da helfen könnt, wär ich euch sehr dankbar!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pseudocode
31.08.2020 15:59:09
Fennek
Hallo,
ich habe das so verstanden: Die PDF liegen in einem durchsuchbaren Format vor (Txt, importiert in Word/Excel)

for i = 1 to 1000
if PDF.Find(i) then cells(int(i/100)+1,1) = cells(int(i/100)+1,1) & ", " & i
next i
Allerdings ist das Importieren komplizierter als das Ausgabeformat.
mfg
AW: Pseudocode
01.09.2020 00:09:32
Sebastian
Genau, also die PDFs vorher händisch in Textformate umzuwandeln ist kein Problem.
Ich habe im Internet einen Code gefunden, der im Ansatz das tut, was ich möchte.
Sub findWordinTXT()
Dim sWord As String, sPath As String, sSearchPath As String, FileName As String, InputData
Dim AnzFound As Integer
AnzFound = 0
'Wort nach dem gesucht werden soll
sWord = "H318"
'Suche nach allen Textdateien im Verzeichnis C:\x
sSearchPath = "C:\x\*.txt"
sPath = "C:\x"
FileName = Dir(sSearchPath)
If FileName  "" Then
Do While FileName  ""
Open sPath & FileName For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If InStr(1, InputData, sWord) > 0 Then
'Zeile mit Suchwort gefunden
AnzFound = AnzFound + 1
Sheets("Tabelle1").Cells(AnzFound, 1) = FileName
Sheets("Tabelle1").Cells(AnzFound, 2) = InputData
End If
Loop
Close #1
'nächste Datei
FileName = Dir
Loop
End If
End Sub
Der Code durchsucht also einen Ordner nach Text-Dateien und sucht in diesen nach einem bestimmten Schlagwort. Wenn er das findet, zeigt er an, in welcher Datei das Wort gefunden wurde und das Wort selbst (bzw. die Zeile).
Für meine Bedürfnisse ist es sogar nützlich, dass er anzeigt, in welcher Datei er das gefunden hat. Allerdings soll er NUR das Schlagwort übernehmen, NICHT die ganze Zeile. Zudem soll nach vielen Schlagwörtern gleichzeitig gesucht werden und, falls mehrere gefunden wurden, diese abgetrennt per Komma aufgelistet werden.
Anzeige
AW: kleine Eränzung
01.09.2020 09:16:54
Fennek
Hallo,
hier dein Code mit der Ergänzung mehrerer Suchworte:

Sub findWordinTXT()
Dim sWord() As String, sPath As String, sSearchPath As String, FileName As String, InputData
Dim AnzFound As Integer
AnzFound = 0
'Wort nach dem gesucht werden soll
sWord = array("H318", "H319")
'Suche nach allen Textdateien im Verzeichnis C:\x
sSearchPath = "C:\x\*.txt"
sPath = "C:\x"
FileName = Dir(sSearchPath)
If FileName  "" Then
Do While FileName  ""
Open sPath & FileName For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
for sW = lbound(sWord) to Ubound(sWord)
If InStr(1, InputData, sW) > 0 Then
'Zeile mit Suchwort gefunden
AnzFound = AnzFound + 1
Sheets("Tabelle1").Cells(AnzFound, 1) = FileName
Sheets("Tabelle1").Cells(AnzFound, 2) = InputData
End If
next sW
Loop
Close #1
'nächste Datei
FileName = Dir
Loop
End If
End Sub
Mehrere Anmerkungen:
- Zeile-bei-Zeile-lesen ist recht langsam
- warum nicht mit CMD: find oder findstr
mfg
(ungeprüft, im Notfall ohne "Dim sWord()")
Anzeige
AW: kleine Eränzung
01.09.2020 21:39:10
Sebastian
Hey Fennek,
vielen Dank dafür! Leider hat genau die Zeile mit sWord = Array einen Fehler "Typen unverträglich".
AW: kleine Eränzung
01.09.2020 22:01:13
Sebastian
Hey Fennek,
vielen Dank dafür! Leider hat genau die Zeile mit sWord = Array einen Fehler "Typen unverträglich".

251 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige