PDF Datei aus Publisher Datei automatisch beim schließen erzeugen

  • Sonstige

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    PDF Datei aus Publisher Datei automatisch beim schließen erzeugen

    Hallo zusammen,

    ich würde gerne aus einer Publisher Datei automatisch zwei pdf-Dateien erzeugen. Eine mit dem Namen: ger.pdf und eine mit eng.pdf. Dabei sollen sich die pdf-Dateien beim Schließen des Publisher Dokumentes von selbst erzeugen und im gleichen Verzeichnis wie die Originaldatei ablegen.

    Ich habe mich schon ein wenig mit Visual Basic versucht aber habe zu wenig Wissen um es um zusetzten. Ausserdem Frage ich mich inzwischen ob sowas überhaupt mit Publisher möglich ist. Ich verwende Publisher 2013 hätte aber auch 2016 zur Verfügung.

    Vielen Dank schonmal im Voraus

    Rapha
    Vielen Dank! Das hat mir richtig geholfen :)

    Quellcode

    1. Private Sub Document_BeforeClose(Cancel As Boolean)
    2. Dim DocName As String
    3. Dim PdfName As String
    4. Dim intResponse As VbMsgBoxResult
    5. Dim a As Long
    6. DocName = ThisDocument.Name
    7. PdfName = Right(DocName, Len(DocName) - 8)
    8. intResponse = MsgBox("pdf-Datei exportieren? Achtung Überschreibungsgefahr!", vbYesNo)
    9. If intResponse = vbNo Then
    10. Cancel = False
    11. ElseIf intResponse = vbYes Then
    12. Cancel = False
    13. ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "eba_ger_" & Left(PdfName, Len(PdfName) - 17) & ".pdf"
    14. ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "ins_eng_" & Left(PdfName, Len(PdfName) - 17) & ".pdf"
    15. ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, Left(DocName, Len(DocName) - 4) & ".pdf"
    16. End If
    17. End Sub


    Hast du mir noch einen Tipp wie ich es hin bekomme das der erste Export nur die Seite 1 und der zweite nur die zweite Seite exportiert?
    Gemeint war wohl, dass du ElseIf intResponse = vbYes Then durch nur Else ersetzt. Dein Code ist zwar "gesprächiger", aber unnötig lang.

    Das mit dem Cancel = True ist seltsam, sollte eigentlich klappen.

    Zu deiner Frage: ExportAsFixedFormat hat die Parameter From und To für die Seitenzahlen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Rapha schrieb:

    und ich bin in einer Endlosschleife.


    Kommt mir komisch vor. Hast Du schon einmal einen Haltepunkt darauf gesetzt und dann mit F8 in Einzelschritten um zusehen, wo die Endlosschleife liegt?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    petaod schrieb:

    dass du das Close-Event abbrechen willst

    Da war ich wohl gedanklich bei beforePrint. ;)

    Dann sollte der ganze If Bereich so aussehen (natürlich mit Deinen Anpassungen für die Seiten):

    Visual Basic-Quellcode

    1. If intResponse = vbYes Then
    2. ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "eba_ger_" & Left(PdfName, Len(PdfName) - 17) & ".pdf"
    3. ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, "ins_eng_" & Left(PdfName, Len(PdfName) - 17) & ".pdf"
    4. ThisDocument.ExportAsFixedFormat pbFixedFormatTypePDF, Left(DocName, Len(DocName) - 4) & ".pdf"
    5. End If
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Das wäre dann aber keine Endlosschleife, sondern das Programm bleibt einfach offen und reagiert normal (was ich auch von Cancel = True erwartet hätte).

    Aber jetzt wird mir auch klar, dass das Programm sich trotzdem beenden soll, auch wenn man keine Dateien erzeugen will.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum