239 Benutzer online
25. Oktober 2014, 09:01:40

Windows Community



Zum Thema PDFCreator - wie unter WordVBA programmieren? - Hat schon mal jemand versucht, mit dem (kostenlosen) PDFCreatorhttp://www.pdfforge.org/WordVBA zu programmieren? Im Prinzip schaffe ich es ja mit dem mitgeliefe... im Bereich PC Software
Autor Thema:

PDFCreator - wie unter WordVBA programmieren?

 (Antworten: 14, Gelesen 11096 mal)

  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
PDFCreator - wie unter WordVBA programmieren?
« am: 03. Juli 2008, 22:35:12 »
Hat schon mal jemand versucht, mit dem (kostenlosen) PDFCreator
http://www.pdfforge.org/
WordVBA zu programmieren? Im Prinzip schaffe ich es ja mit dem mitgelieferten Beispielprogrammen. Ich habe aber Probleme damit, den Dateinamen zu programmieren, unter dem die pdf ausgegeben werden soll. Die PDF wird immer mit dem Pfad und Namen ausgegeben, der den Autosave-Optionen des Programms entspricht, aber nicht mit dem Namen, den ich im Programm vorgebe und haben will.

So lautet mein VBA-Skript. Es soll die aktuell in Word geöffnete Datei ohne weitere Benutzereingriffe als PDF in den Pfad <PDFPfad$> unter dem Namen <PDFName$> speichern:
Public Function PDFDruck(Optional OhneMsg As Boolean)
Dim Zwi$, PDFPfad$, PDFName$, pdfjob
PDFPfad$ = "C:\Zwi"
'Ermittelt den Namen des aktiven Dokuments:
Zwi$ = ActiveDocument.Name
If InStr(1, Zwi$, ".", vbTextCompare) > 1 Then
   PDFName$ = Mid(Zwi$, 1, InStr(1, Zwi$, ".", vbTextCompare) - 1)
Else
   PDFName$ = "Unbenannt"
End If

Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
   If .cStart("/NoProcessingAtStartup") = False Then
      MsgBox "PDFCreator kann nicht initialisiert werden. Bitte beenden Sie die PDFCreator-Prozesse.", vbCritical + _
         vbOKOnly, "PrtPDFCreator"
      GoTo Ende
   End If
   .cOption("UseAutosave") = 1
   .cOption("UseAutosaveDirectory") = 1
   .cOption("AutosaveDirectory") = PDFPfad$
   .cOption("AutosaveFilename") = PDFName$
   .cOption("AutosaveFormat") = 0    '0 = PDF
   .cDefaultPrinter = "PDFCreator"
   .cPrinterStop = False
   .cClearCache
   ActiveDocument.PrintOut Background:=False
End With
'!!!!!!!!!!!!!!!!Wartet ab, bis fertig gedruckt ist:!!!!!!!!!!!!!!
Dim sleepTime, maxTime, c
sleepTime = 250
maxTime = 10
c = 0
Do While (pdfjob.cOutputFilename = "") And (c < (maxTime * 1000 / sleepTime))
  c = c + 1
  Sleep 200
Loop
'!!!!!!!!!!!!!!!Ende des Abwartens!!!!!!!!!!!!!!
Ende:
Zwi$ = pdfjob.cOutputFilename
pdfjob.cClose
Set pdfjob = Nothing
If Not OhneMsg Then
   If Len(Zwi$) > 0 Then
      MsgBox "Das Dokument wurde nach " & Zwi$ & " gespeichert.", vbInformation
   Else
      MsgBox "Beim Speichern als pdf ist ein Fehler aufgetreten!", vbCritical
   End If
End If
PDFDruck = Zwi$
End Function

Auch die anderen COM-Funktionen des Programms sind mir ein Buch mit sieben Rätseln, da die Funktionen nach meiner Ansicht sehr schlecht dokumentiert sind. Weiß jemand mehr? Anbei die "Dokumentation" und die Beispieldateien:
« Letzte Änderung: 03. Juli 2008, 22:54:46 von Jean Raul »

  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
« Antwort #1 am: 04. Juli 2008, 10:03:55 »
Nachtrag: Ich habe festgestellt, daß es offensichtlich nur unter unserem heiß geliebten Vista nicht funktioniert! Unter Windows XP funktioniert es tadellos.. Ich quäle mich stundenlang mit etwas ab, was eigentlich völlig OK ist und in Minuten erledigt gewesen wäre, wenn man nicht Vista zu Hause hätte, und gottseidank nur zu Hause.

Warum haben wir nur alle Vista drauf? Es ist wirklich unübersehbar: Für PCs, die etwas leisten und nicht nur beim Gamen helfen sollen, also beim produktiven Arbeiten, ist Windows XP das einzig Wahre...

Wie bekomme ich es unter Vista zum Laufen?
« Letzte Änderung: 04. Juli 2008, 10:19:49 von Jean Raul »

  • "Mein Name ist PROGRAMM"
  • Windows 95
  • Beiträge: 318
  • "Lieber heimlich schlau als unheimlich dämlich"
« Antwort #2 am: 04. Juli 2008, 10:26:04 »
... geht's vielleicht im Kompatibilitätsmodus für Windows XP ???
meinpc - go-windows.de
Powered by Windows 7

  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
« Antwort #3 am: 04. Juli 2008, 10:41:58 »
Ob das bei einem (quasi-) Druckertreiber was hilft?

  • Team
  • Windows Me
  • Beiträge: 1291
  • "ich bin schwul und das ist gut so"
« Antwort #4 am: 04. Juli 2008, 10:48:39 »
also ich musste für meinen PDF CREATOR ne Viste fähige Version laden

  • "Mein Name ist PROGRAMM"
  • Windows 95
  • Beiträge: 318
  • "Lieber heimlich schlau als unheimlich dämlich"
Re: PDFCreator - wie unter WordVBA programmieren?
« Antwort #5 am: 04. Juli 2008, 10:50:21 »
Ob das bei einem (quasi-) Druckertreiber was hilft?

... Versuch macht klug.

  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
« Antwort #6 am: 04. Juli 2008, 10:52:45 »
Zitat
also ich musste für meinen PDF CREATOR ne Viste fähige Version laden
Ich habe die aktuellste Version, ladenfrisch von der Homepage...

  • Team
  • Windows Me
  • Beiträge: 1291
  • "ich bin schwul und das ist gut so"
« Antwort #7 am: 04. Juli 2008, 11:03:24 »
mhm, dammust du leider noch 7 Stunden warten .. dann bin ich an meiner Vista Kiste und habe auch einen PDF-PRinter.. dan versuch eich es mal bei mir

  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
« Antwort #8 am: 04. Juli 2008, 11:06:14 »
Bin mal gespannt, wie es bei Dir läuft, Matag. Den obigen Code mußt Du nur in Deiner Normal.dot verfügbar machen und im VBA-Editor unter "Verweise" den PDFCreator einbinden.

Ich habe gesehen, daß das Programm wohl Probleme unter Vista hat und sich ggf. auch nicht mehr deinstallieren läßt:
http://cgi.zdnet.de/forum/viewtopic.php?t=7392

  • Team
  • Windows Me
  • Beiträge: 1291
  • "ich bin schwul und das ist gut so"
« Antwort #9 am: 04. Juli 2008, 18:52:43 »
mein lieber JR.. leider ging es mit meinem Bullzip PDF PRinter auch nicht....

  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
Re: PDFCreator - wie unter WordVBA programmieren?
« Antwort #10 am: 04. Juli 2008, 18:59:32 »
Nein, das kann nicht gehen. Dazu bräuchtest Du den PDFCreator (Link s. o.), nur der hat die passenden COM-Schnittstellen.

  • Team
  • Windows Me
  • Beiträge: 1291
  • "ich bin schwul und das ist gut so"
« Antwort #11 am: 04. Juli 2008, 19:15:14 »
also JR ich habe mir den PDF Creator runter geladen und auch installiert (leider war in deinem Link keine Setup.exe

unter Verweise habe ich ihn dann nicht gefunden aber ei sie da meinen BULLZIP. PDF Drucker konnte mit eingebunden werden.....


  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
« Antwort #12 am: 04. Juli 2008, 19:39:22 »

  • Team
  • Windows Me
  • Beiträge: 1291
  • "ich bin schwul und das ist gut so"
« Antwort #13 am: 04. Juli 2008, 20:42:09 »
der is schon installiert  :]

  • Mitglied im Club der Ignorierten
  • Windows Me
  • Beiträge: 2002
  • - König der Herzen -
« Antwort #14 am: 05. Juli 2008, 07:07:01 »
Dann verstehe ich aber nicht, was nicht funktioniert. Du mußt den Code im VBA-Editor von Word unter "NewMacros" pasten (s. Bild), unter Extras->Verweise "PDFCreator" aktivieren (s. Bild) und dann im aktuellen Word-Dokument das Makro mit Extras->Makros->Ausführen ausführen (s. Bild). Ggf. kannst Du auch, wenn Du willst, das Makro mit einem Button auf der Symbolleiste verknüpfen.

Wenn eine Sicherheitsfehlermeldung kommt, mußt Du Extras->Makros->Sicherheit auf "Niedrig" setzen. Außerdem habe ich den VBA-Code im Folgenden auf das Notwendigste vereinfacht um jede Fehlermöglichkeit auszuschließen. Im Übrigen habe ich beim Testen festgestellt, daß die Funktion Sleep bei mir an anderer Stelle deklariert war. Ich habe sie jetzt hier in den Code eingefügt.

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMS As Long)

Public Sub PDFDruck()
Dim Zwi$, PDFPfad$, PDFName$, pdfjob
PDFPfad$ = "C:\Zwi"
'Ermittelt den Namen des aktiven Dokuments:
Zwi$ = ActiveDocument.Name
If InStr(1, Zwi$, ".", vbTextCompare) > 1 Then
   PDFName$ = Mid(Zwi$, 1, InStr(1, Zwi$, ".", vbTextCompare) - 1)
Else
   PDFName$ = "Unbenannt"
End If

Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
   If .cStart("/NoProcessingAtStartup") = False Then
      MsgBox "PDFCreator kann nicht initialisiert werden. Bitte beenden Sie die PDFCreator-Prozesse.", vbCritical + _
         vbOKOnly, "PrtPDFCreator"
      GoTo Ende
   End If
   .cOption("UseAutosave") = 1
   .cOption("UseAutosaveDirectory") = 1
   .cOption("AutosaveDirectory") = PDFPfad$
   .cOption("AutosaveFilename") = PDFName$
   .cOption("AutosaveFormat") = 0    '0 = PDF
   .cDefaultPrinter = "PDFCreator"
   .cPrinterStop = False
   .cClearCache
   ActiveDocument.PrintOut Background:=False
End With
'!!!!!!!!!!!!!!!!Wartet ab, bis fertig gedruckt ist:!!!!!!!!!!!!!!
Dim sleepTime, maxTime, c
sleepTime = 250
maxTime = 10
c = 0
Do While (pdfjob.cOutputFilename = "") And (c < (maxTime * 1000 / sleepTime))
  c = c + 1
  Sleep 200
Loop
'!!!!!!!!!!!!!!!Ende des Abwartens!!!!!!!!!!!!!!
Ende:
Zwi$ = pdfjob.cOutputFilename
pdfjob.cClose
Set pdfjob = Nothing
If Len(Zwi$) > 0 Then
   MsgBox "Das Dokument wurde nach " & Zwi$ & " gespeichert.", vbInformation
Else
   MsgBox "Beim Speichern als pdf ist ein Fehler aufgetreten!", vbCritical
End If
End Sub
« Letzte Änderung: 05. Juli 2008, 07:44:04 von Jean Raul »

vista windows exe 64bit probleme profile error startet download programme
treiber version kompatibel bit driver problem keine installiert sleep visual