Hallo zusammen,
das Script soll, wenn es mal fertig ist folgendes leisten:
Aus einem Verzeichnis eine oder mehrere PDF-Dateien auswählen.
Dann 1. PDF mit Adobe laden, mit der Maus wird ein Bereich markiert und per
Hotkey einer Variablen übergeben. Das gleiche mit 2 anderen Bereichen.
Wenn das erledigt ist, wird per Hotkey Excel gestartet und
die Werte der Variablen werden in bestimmte Zellen geschrieben. Excel bekommt
den gleichen Dateinamen wie die PDF-Datei und wird gespeichert.
Und das in einer Schleife, bis alle PDF’s abgearbeitet sind.
Jetzt habe ich folgende Probleme:
1. Manchmal werden die Daten vom vorletzten STRG+C aus der
Zwischenablage übergeben.
2. Ich habe einen Denkfehler in der Schleife.
Die Schleife lädt teilweise immer die gleiche Datei und
das Ende der Schleife ist nicht korrekt.
Hat jemand einen Tipp für mich?
Ich weiss, es ist ein bisschen chaotisch, aber es ist mein erstes Script!
Vielen Dank
clint
Spoiler anzeigen
#include <File.au3>
#include <Array.au3>
#include <Excel.au3>
Global $wert1, $wert2
HotKeySet('{ESC}','Terminate') ; Esc
HotKeySet('{F1}', 'Hilfe') ; F1
HotKeySet('{F2}', 'OpenPDF') ; F2
HotKeySet('{F3}', 'copy_1') ; F3
HotKeySet('{F4}', 'copy_2') ; F4
HotKeySet('{F5}', 'write_Excel') ; F5
Local $sPfad = 'C:\PDF\', $sInfo = 'Ctrl oder Shift drücken um mehrere Dateien auszuwählen.'
Local $string = FileOpenDialog($sInfo, $sPfad, "Datei (*.pdf)", 1+4)
Global $aArray = StringSplit($string, '|', 2)
Global $aBound = UBound($aArray)-1
_ArrayDisplay($aArray) ; zum testen auskommentieren
Local $Tip = ToolTip('Hotkey F2',700,1,"Programm wird ausgeführt")
While 1
Sleep(100)
WEnd
Func Terminate()
Exit 0
EndFunc ; Terminate
Func Hilfe()
MsgBox (64, "Belegung der Funktionstasten", "ESC - Abbrechen" &@CR & "F1 - Hilfe" &@CR & "F2 - PDF laden" &@CR & "F3 - Bereich 1 kopieren" &@CR & "F4 - Bereich 2 kopieren" &@CR & "F5 - Exceldatei erstellen" )
EndFunc ; Hilfe
Func OpenPDF()
ConsoleWrite('Opening PDF >> '&$aArray[$aBound] &'<<'&@CRLF)
ShellExecute($aArray[$aBound])
Global $trim_r = StringTrimRight ($aArray[$aBound], 4) ; entfernt .pdf
MsgBox (48, "Dateinamen bearbeiten", "geändert von '" &$aArray[$aBound] & "' nach '"&$trim_r&"'") ; zur Kontrolle aktivieren
Sleep(50)
WinWaitActive ("Adobe Acrobat Pro")
If @error Then
ConsoleWrite('ERROR Code >> '&@error & '<<'&@CRLF)
Exit
EndIf
$aBound -= 1
If $aBound = 0 Then Exit
ConsoleWrite('PDF Opened'&@CRLF)
EndFunc ; OpenPDF
Func copy_1()
Send("^c")
$wert1 = ClipGet() ; ruft die zwischenablage ab (den Makierten test der mit Strg C in die Zwischenablage kopiert wurde)
EndFunc ; copy_1
Func copy_2()
Send("^c")
$wert2 = ClipGet() ; ruft die zwischenablage ab (den Makierten test der mit Strg C in die Zwischenablage kopiert wurde)
EndFunc ; copy_2
Func write_Excel()
Local $sFilePath1 = "C:\PDF\Vorlage\Vorlage_PDF.xls" ; Diese Excel-Vorlage sollte existieren
Global $oExcel = _ExcelBookOpen($sFilePath1)
If @error = 1 Then
MsgBox(0, "Error!", "Excel kann nicht gestartet werden")
Exit
ElseIf @error = 2 Then
MsgBox(0, "Error!", "Vorlagendatei nicht gefunden!")
Exit
EndIf
Sleep(50)
MsgBox(0, "Wert1", "Wert1: " & $wert1 ) ; zur Kontrolle aktivieren
MsgBox(0, "Wert2", "Wert2: " & $wert2 ) ; zur Kontrolle aktivieren
_ExcelWriteCell($oExcel, $wert1, 4, 1)
_ExcelWriteCell($oExcel, $wert2, 4, 3)
$oExcel.ActiveWorkBook.SaveAs("C:\PDF\bearbeitet\" & $trim_r & ".xls")
If Not @error Then MsgBox(0, "Erfolgreich!", "Die Datei wurde als "& $trim_r & ".xls gespeichert.", 3)
_ExcelBookClose($oExcel, 1, 0)
EndFunc ; write_Excel