VB Script - PDF to Excel konvertierung

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Achilleus.

    VB Script - PDF to Excel konvertierung

    Hallo Zusammen,

    hat jemand eine Idee wie ich über ein VB Script eine PDF Datei zu einem Excel konvertieren kann?
    Am besten mit Aufforderung zum eintragen vom Source Pfad (PDF) und Destination Pfad (Excel) .
    Anschliessend soll das Excel File per Email versendet werden.
    Ich habe dies mit VBA unsauber gelöst (siehe unten). Jedoch würde ich es gerne über ein VB Script lösen. Bekomme es jedoch nicht hin. Anfänger :)
    Vielen Dank im Voraus.

    Visual Basic-Quellcode

    1. Sub PDFtoExcel_Klicken()
    2. Dim varRetVal As Variant, PathToPDF As String, strCommand As String
    3. PathToPDF = "\\ws0440\Fehlmengen\*.pdf"
    4. strCommand = "C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe " & PathToPDF
    5. ' Use Shell Function to open Adobe Acrobat Reader
    6. varRetVal = Shell(strCommand, 1)
    7. ' wait
    8. Application.Wait Now + TimeValue("00:00:03")
    9. 'First select all data of PDF file, next copy to clipboard
    10. SendKeys "%d" 'Datei
    11. SendKeys "t" 'exportieren
    12. SendKeys "b"
    13. SendKeys "e"
    14. SendKeys "~"
    15. SendKeys "{TAB}"
    16. SendKeys "~"
    17. 'Wait
    18. Application.Wait Now + TimeValue("00:00:01")
    19. 'Close Acrobat Reader or PDF file
    20. SendKeys "%{F4}"
    21. Dim Nachricht As Object, OutlookApplication As Object
    22. Set OutlookApplication = CreateObject("Outlook.Application")
    23. Dim Anhang As String
    24. Anhang = "C:\winapp\1.xlsx"
    25. Set Nachricht = OutlookApplication.CreateItem(0)
    26. With Nachricht
    27. .To = " [email=test@test.com]test@test.com[/email] ; [email=test@test.com]test@test.com[/email] "
    28. .cc = " [email=test@test.com]test@test.com[/email] "
    29. .Subject = " Fehlmengen Batch "
    30. .attachments.Add Anhang
    31. .Display
    32. End With
    33. Set OutlookApplication = Nothing
    34. Set Nachricht = Nothing
    35. End Sub


    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Wenn Du schon mit Acrobat unterwegs bist. Warum löst Du das Ganze nicht mit JavaScript direkt in Acrobat?

    Eine andere Alternative ist es das Ganze über Word anzusteuern:
    • Aus Excel, die PDF-Datei in Word zu öffnen
    • Daten kopieren
    • Word schließen
    • E-Mail senden
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Ist zwar nicht VBScript, aber ich verwende aus Excel folgende VBA-Sub um aus der aktiven Excel-Datei die aktive Tabelle als PDF zu exportieren und als Email zu versenden. Funktioniert alles mit Bordmitteln (MS Office 2019).

    Visual Basic-Quellcode

    1. Sub SaveAsPDFandSend()
    2. Dim xSht As Worksheet
    3. Dim xFolder As String, xFileName As String
    4. Dim xOutlookObj As Object
    5. Dim xEmailObj As Object
    6. Dim xUsedRng As Range
    7. Set xSht = ActiveSheet
    8. xFolder = GetTempFolder()
    9. If InStr(1, xSht.Name, "Tabelle", vbTextCompare) = 0 Then
    10. xFileName = InputBox("Geben Sie den Dateinamen ein.", , xSht.Name)
    11. Else
    12. xFileName = InputBox("Geben Sie den Dateinamen ein." & vbNewLine & vbNewLine & "(Angabe der Extension '.pdf' ist optional)", , ActiveWorkbook.Name)
    13. End If
    14. If xFileName = "" Then xFileName = ActiveWorkbook.Name
    15. If GetExtension(xFileName, True) <> ".pdf" Then xFileName = xFileName & ".pdf"
    16. xFolder = xFolder + "\" + xFileName
    17. 'Check if file already exist
    18. If FileExists(xFolder) Then
    19. Kill xFolder
    20. End If
    21. Set xUsedRng = xSht.UsedRange
    22. If Application.WorksheetFunction.CountA(xUsedRng.Cells) <> 0 Then
    23. 'Save as PDF file
    24. xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFolder, Quality:=xlQualityStandard
    25. 'Create Outlook email
    26. Set xOutlookObj = CreateObject("Outlook.Application")
    27. On Error Resume Next
    28. Set xEmailObj = xOutlookObj.ActiveInspector.CurrentItem
    29. On Error GoTo 0
    30. If IsNothing(xEmailObj) Then
    31. Set xEmailObj = xOutlookObj.CreateItem(0)
    32. With xEmailObj
    33. .Display
    34. .To = ""
    35. .CC = ""
    36. .Subject = xSht.Name + ".pdf"
    37. .Attachments.Add xFolder
    38. End With
    39. Else
    40. With xEmailObj
    41. .Attachments.Add xFolder
    42. End With
    43. End If
    44. End If
    45. End Sub


    Das jetzt für VBScript umzuändern sollte keine große Hürde sein.

    Achilleus
    Du brauchst doch eigentlich dein funktionierendes VBA-Skript nur Zeile für Zeile nach VBS übersetzen. Die Datentypen müssen weg (As ...), SendKeys macht man so: ss64.com/vb/sendkeys.html (da ist auch der Sleep-Befehl im Beispiel erwähnt, der bei dir das Wait ersetzt).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum