Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Hilfe bei Kompilierungsfehler | Herbers Excel-Forum


Betrifft: Hilfe bei Kompilierungsfehler von: Bernd Kiehl
Geschrieben am: 08.12.2009 12:13:55

Hallo alle zusammen,

hab mir nachfolgenden VBA-Code zum Erstellen von PDF-Dateien in Modul eingefügt und mit einem Button verknüpft. Leider erhalte ich einen Kompilierungsfehler und kann leider nicht erkennen, woran das liegt.

Folgendes möchte ich erreichen beim Klick auf den Button, der auf dem Tab-Blatt "start" liegt. Erstelle aus Tab-Blatt "total" (eine von 20 Tab-Blättern) eine pdf-Datei mit exakt dem gleichen Dateinamen, wie die Exceldatei, z.B. mache aus "Name_Vorname_08-12-2009.xls" "Name_Vorname_08-12-2009.pdf".

Vielen Dank schon mal im Voraus
Gruß Bernd

Hier der von mir verwendete Code ...

Sub PrintToPDF_Early()
  Dim pdfjob As PDFCreator.clsPDFCreator
  Dim sPDFName As String
  Dim sPDFPath As String

  'PDF-Dateinamen festlegen
  sPDFName = "Dateiname.pdf"
  sPDFPath = ActiveWorkbook.Path & Application.PathSeparator

  'Prüfung ob das Arbeitsblatt leer ist; wenn ja dann Programm-Ende
  If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub

  Set pdfjob = New PDFCreator.clsPDFCreator

  With pdfjob
   'Sicherstellen, dass der PDFCreator startet
    If .cStart("/NoProcessingAtStartup") = False Then
      MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
      Exit Sub
    End If
    'Standardwerte setzen
    .cOption("UseAutosave") = 1
    .cOption("UseAutosaveDirectory") = 1
    .cOption("AutosaveDirectory") = sPDFPath
    .cOption("AutosaveFilename") = sPDFName
    .cOption("AutosaveFormat") = 0  ' 0 = PDF
    .cClearCache
  End With

  'PDF drucken
  ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"

  'Warten, bis der Druckjob zum Drucken gekommen ist
  Do Until pdfjob.cCountOfPrintjobs = 1
    DoEvents
  Loop
  pdfjob.cPrinterStop = False

  'Warten, bis PDFCreator gedruckt hat; dann Freigabe des Objekts
  Do Until pdfjob.cCountOfPrintjobs = 0
    DoEvents
  Loop
  pdfjob.cClose
  Set pdfjob = Nothing
End Sub

  

Betrifft: AW: Hilfe bei Kompilierungsfehler von: ede
Geschrieben am: 08.12.2009 12:47:04

Hallo,
den Dateinamen kannst Du so anpassen:
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"


und das richtige Sheet triffst Du damit:
Sheets("total").PrintOut copies:=1, ActivePrinter:="PDFCreator"

desweiteren machst du eine Prüung, welche du dann auch auf das gewünschte Sheet anpassen musst bzw. auskommentiren kannst.

gruss


  

Betrifft: Korrektur von: ede
Geschrieben am: 08.12.2009 12:48:20

falsche Zwischenablage eingefügt:

den Dateinamen kannst Du so anpassen:
sPDFName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 3) & "pdf"


  

Betrifft: AW: Korrektur von: Bernd Kiehl
Geschrieben am: 08.12.2009 13:05:31

Hallo Ede,

danke für deine schnelle Hilfe. Beide Codes habe ich angepasst. Allerdings ensteht der Kompilierungsfehler bereits in der ersten Zeile des Codes ...

Dim pdfjob As PDFCreator.clsPDFCreator

... mir der Fehlermeldung:" Benutzerdefinierter Typ nicht gefunden"

Weiß leider nicht weiter, da ich keine große Ahnung von VBA habe.

Gruß Bernd


  

Betrifft: AW: Ergänzug von: Bernd Kiehl
Geschrieben am: 08.12.2009 13:22:31

Hallo Ede,

hatte vorher noch vergessen zu erwähnen, dass der Druckertreiber "PDFCreator" installiert ist.

Gruß Bernd


  

Betrifft: AW: Korrektur von: ede
Geschrieben am: 08.12.2009 13:28:12

Hallo noch mal,
dann hast du keinen PDFCreator installiert!!!
Gruss


  

Betrifft: AW: Korrektur von: ede
Geschrieben am: 08.12.2009 13:29:20

oder keinen Verweis gesetzt.
gruss


  

Betrifft: AW: Korrektur von: Bernd Kiehl
Geschrieben am: 08.12.2009 13:46:25

Hallo Ede,

kann leider nicht verstehen, was du mit "keinen verweis gesetzt" meinst?

Also mein Standarddrucker im System ist ein Canon, ausserdem ist noch der Fritzfax-Druckertreiber, als auch der PDFCreator bei mir im System installiert.

Gruß Bernd


  

Betrifft: AW: Korrektur von: ede
Geschrieben am: 08.12.2009 14:26:51

Hallo,
leider kann ich Dir dann auc nicht weiterhelfen, schau mal im vba-Editor unte Extras-Verweise ob Du da noch was mit PDF* findest.

gruss


  

Betrifft: AW: Korrektur von: Bernd Kiehl
Geschrieben am: 08.12.2009 14:37:36

Hallo Ede,

danke trotzdem für deine Hilfe.

Gruß Bernd


  

Betrifft: AW: Hilfe bei Kompilierungsfehler von: firmus
Geschrieben am: 08.12.2009 22:11:29

Hallo Bernd,
.
Dim pdfjob As PDFCreator. clsPDFCreator
.
PDFCreator ist eine objectclass. Darin werden alle Variablen und Fixwerte vordefiniert - bei PDFcreator installation. (Solltest Du xls erst danach installiert haben, könnte das der Fehler sein.)
.
Um diese Variblen und Fixwerte ansprechen zu können, müssen a) die Class und b) die Variablen und Fixwerte vorhanden sein. Prüfen kannst Du das über den Class-Browser (Aufruf: F2 im VBA-editor)
z.B. solltest Du dort auch "cPrinterStop" finden.
.
Falls diese im Class-Browser nicht zu sehen/finden sind, ist diese Class nicht eingebunden.
Im VBA-Editor über Extras, Verweise haben alle eingebundenen Verweise ein Häkchen.
Suche in dem Fenster den entsprechenden Verweis zu PDFCreator (muss nicht den identischen Namen
haben) und binde durch Setzen des Häkchens diese Class ein.
.
Sollte dieser Verweis nicht zu finden sein, dann gehe unter Extras, Verweise auf "Durchsuchen".
Hier solltest Du in Installationspfad von PDFcreator nachsuchen.
.
Sollte das alles nicht helfen - weiß ich nicht weiter und würde mit "PDFCreator.clsPDFCreator" einfach mal googlen.
.
Viel Spaß und viel Erfolg,
Firmus




  

Betrifft: AW: Hilfe bei Kompilierungsfehler von: Bernd Kiehl
Geschrieben am: 09.12.2009 12:00:12

Hallo Firmus,

danke für deine Rat.

Werde deinen Vorschlag anzuwenden und hoffe, dass ich damit das Problem lösen kann.

Melde mich, sobald ein Ergebnis da ist.

Gruß Bernd