Excel Blatt in PDF drucken

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Otti.

    Excel Blatt in PDF drucken

    Moin zusammen...
    Kurze Frage, ich erstelle eine Excel Datei die ich mit dem "Standard PDF Drucker" von Windows in eine PDF-Datei umwandeln möchte.
    Wie geht das?

    Deine leere PDF erstelle ich aktuell so:

    Quellcode

    1. ​PrintDocument1.PrinterSettings.PrinterName = "Microsoft Print To PDF"
    2. If Not PrintDocument1.PrinterSettings.IsValid Then Return
    3. PrintDocument1.PrinterSettings.PrintToFile = True
    4. PrintDocument1.PrinterSettings.PrintFileName = "SPEICHERORT.pdf"
    5. PrintDocument1.Print()
    @Otti Wenn Du die Excel-Datei in Excel erstellst, kannst Du sie in Excel mit dem Microsoft Print to PDF-Drucker oder mit Speichern unter mit Dateityp: PDF (*.pdf) in eine PDFD konvertieren.
    Wenn das so nicht geht, formuliere Dein Problem so, dass wir das verstehen, was Du meinst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Otti schrieb:

    xlWorkbook
    kommt in Deinem 1. Post nicht vor.
    Kannst Du mal den vollständigen relevanten Code posten, dass wir das nachstellen können?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Otti :S
    Code ist das, was ich in meinem Studio einfüge, woraus der Compiler einen ausführbaren Code macht.
    Du hast ein Problem mit Deinem Code. Wenn Du möchtest, dass wir Dir helfen, musst Du dafür Sorge tragen, dass wir denselben Effekt erzeugen können, wie Du.
    Dazu brauchen wir den vollständigen relevanten Code, das bedeutet mindestens und höchstens so viel, dass wir das tun können.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Otti schrieb:

    Verstehe ich nicht.


    Ich glaube @petaod hat einen kleinen Fehler im Code, aber du müsstest wirklich selbst in der Lage sein das zu erkennen.
    Jedenfalls sagt die Fehlermeldung das schon aus und in C# bei mir ist es auch so. Wenn auch die Syntax minimal anders ist.
    Müsste so gehen:
    ActiveSheet.ExportAsFixedFormat(Type:=xlTypePDF, Filename:="PdfFile.pdf", Quality:=xlQualityStandard)

    Otti schrieb:

    Verstehe ich nicht.
    Wenn Du ein Forumsmitglied explizit wegen seines Posts ansprechen willst, nutze die Anrede-Funktionalität des Forums:
    @NAME_DES_MITGLIEDS
    oder
    @'NAME DES MITGLIEDS'
    für Namen ohne und mit Leerzeichen drinne. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Hey. Sorry das ich jetzt erst Antworten kann.

    So ich geh wie folgt vor. Fülle eine Excel Tabelle...

    Brainfuck-Quellcode

    1. Dim strFilename = IO.Path.GetFullPath("Temp\KalenderExcelVorgabe\Kalender.xlsx")
    2. Dim xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
    3. Dim xlWorkbooks As Excel.Workbooks = xlApp.Workbooks
    4. Dim xlWorkbook As Excel.Workbook = xlWorkbooks.Open(strFilename)
    5. Dim xlWorksheet1 As Excel.Worksheet = CType(xlWorkbook.Sheets("Tabelle1"), Excel.Worksheet)
    6. xlApp.DisplayAlerts = False
    7. With xlApp
    8. With xlWorksheet1
    9. .Activate()
    10. .Range("a1").Value = LbMonat.Text & " " & LbJahr.Text
    11. .Range("r1").Value = Date.Now
    12. .Range("a3").Value = LbTag1.Text
    13. .Range("d3").Value = LbTag2.Text
    14. 'usw.........
    15. End With


    Speichern mache ich so:

    Quellcode

    1. xlWorkbook.SaveAs(IO.Path.GetFullPath("Temp\KalenderExcelFertig\Kalender_" & LbMonat.Text & "_" & LbJahr.Text & ".xlsx"))


    und drucken so: (der als Standarddrucker in Windows hinterlegt ist)

    Quellcode

    1. xlWorkbook.PrintOutEx()
    2. xlApp.Quit(


    Mein Problem ist das ich über eine Messagebox (Ja/Nein)
    endscheiden möchte ob eine PDF erstellt werden soll oder nicht (Eine PDF aus der zuletzt erstellten Excel)

    Messagebox kein Thema, nur das Umwandeln / Drucken in PDF

    Quellcode

    1. Select Case MessageBox.Show("Eine PDF erstellen?", "PDF", MessageBoxButtons.YesNo)
    2. Case DialogResult.Yes
    3. Case DialogResult.No
    4. End Select


    Was ich bereits herraus gefunden habe ist das , wie ich eine PDF erstelle , allerdings ist diese leer da ich nicht weis wie ich das zusammen kombinieren soll.

    Quellcode

    1. PrintDocument1.PrinterSettings.PrinterName = "Microsoft Print To PDF"
    2. If Not PrintDocument1.PrinterSettings.IsValid Then Return
    3. PrintDocument1.PrinterSettings.PrintToFile = True
    4. PrintDocument1.PrinterSettings.PrintFileName = "Temp\KalenderPDFFertig\Kalender_" & LbMonat.Text & "_" & LbJahr.Text & ".pdf"
    5. PrintDocument1.Print()
    Zwischen

    Otti schrieb:

    IO.Path.GetFullPath("Temp\KalenderExcelFertig\Kalender_" & LbMonat.Text & "_" & LbJahr.Text & ".xlsx")
    bei xlWorkbook.SaveAs und

    Otti schrieb:

    "Temp\KalenderPDFFertig\Kalender_" & LbMonat.Text & "_" & LbJahr.Text & ".pdf"
    bei PrintDocument1.PrinterSettings.PrintFileName besteht ein inhaltlicher Unterschied, der wohl relevant sein dürfte …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Otti schrieb:

    Was ich bereits herraus gefunden habe ist das , wie ich eine PDF erstelle , allerdings ist diese leer da ich nicht weis wie ich das zusammen kombinieren soll.

    Warum willst Du nicht die eingebaute Variante als PDF-Speichern verwenden. (siehe auch oben)

    Visual Basic-Quellcode

    1. Dim xlTypePDF as integer=0
    2. xlWorksheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    3. "D:\test\Mappe2.pdf", Quality:=xlQualityStandard, IncludeDocProperties:= _
    4. True, IgnorePrintAreas:=False, OpenAfterPublish:=True


    Zeichne Dir den Schritt doch einfach mal in Excel als Makro auf.

    Du musst dann noch überlegen, ob die PDF -Date direkt geöffnet werden soll oder nicht: OpenAfterPublish
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Weeeiiil der User in VB.NET unterwegs ist, nicht in VBA.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Bei der Zeile mit PrintDocument1.PrinterSettings.PrintFileName verwendest Du einen anderen Pfad als bei xlWorkbook.SaveAs
    Was natürlich noch dazukommt: Wenn Du mit PrintDocument1 arbeitest, musst Du auch mit dessen PrintPage-EventHandler arbeiten, in dem alles gemalt wird, was in die Datei soll, sonst steht nix in der Datei. Das mit FileName ist ja nur die Angabe, wie die fertige Datei heißen soll.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    Ja stimmt ich verwende zwei unterschiedliche Pfade.
    Der eine ist ja nur die Excel und der andere Pfad ist nur der Speicherort der PDF,
    die erstellt werden soll, wie du auch bereits sagtest.

    Das hat den Grund das ich die Excel brauche und zusätzlich eine PDF.

    So habe nun endlich gelöst...
    Speicher die PDF jetzt so:

    Quellcode

    1. ​xlWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, (IO.Path.GetFullPath("SPEICHERPFAD.pdf")))
    2. xlWorkbook.Close(SaveChanges:=True)
    3. xlApp.Quit()

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