1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel print 2 PDF - Makro

Discussion in 'Office-Programme' started by pici, Jun 22, 2007.

Thread Status:
Not open for further replies.
  1. pici

    pici Kbyte

    Hallo,

    ich würde gerne mein Excel-Sheet per Knopfdruck als PDF drucken. Den ersten Teil des Codes hab ich, Probleme gibt es aber, wenn das File schon existiert und ich das bestehende überschreiben möchte. Ich schaffe es nicht, nach dem PrintOut noch einmal ein Enter zu schicken, damit "Replace" gewähnt wird. Wie mache ich das. Der Code soweit:

    Application.ActivePrinter = "Win2PDF auf Ne00:"
    Application.SendKeys "%C", True
    Application.SendKeys "{ENTER}", True
    ActiveSheet.PrintOut
    SendKeys "{ENTER}", True

    Vielen Dank
     
  2. brum

    brum Kbyte

    Du könntest die Datei schon vorher (mittels KILL) löschen.

    Dazu musst Du aber den Dateinamen ermitteln. Danach musst Du auch noch überprüfen, ob die Datei überhaupt existiert. Wie der Dateinamen ist, weiss ich nicht, dazu hab ich zuwenig Angabe (ich benutze Print 2 PDF nicht.

    Das Löschen kannst Du dann wie folgt machen:

    IF Dir$(Dateiname$) > "" Then Kill Dateiname$

    Gruss
    Bruno
     
  3. brum

    brum Kbyte

    Hab gerade noch überlegt:

    Bei Löschungen usw. besser noch eine Meldung (MsgBox) einfügen, ob die Datei wirklich gelöscht werden soll.

    Gruss
    Bruno
     
  4. pici

    pici Kbyte

    Habs nicht geschafft.... Der Dateiname ist C:\Documents and Settings\kiefer_p\Desktop\temp\Mappe1 (version 1).pdf
    Wie sieht der Code dann genau aus?
     
  5. brum

    brum Kbyte

    Temporär-Ordner? Und wie heisst die Exceldatei?

    Gruss
    Bruno
     
  6. pici

    pici Kbyte

    ja der temp ordner ist natürlich nur zu testzwecken. ich arbeite auch noch nicht mit der richtigen datei, deshalb der name "Mappe1 (Version 1).xls beziehungsweide dann .pdf nach dem Drucken mit Win2PDF. Es muss also die pdf Datei gelöscht werden und nicht die xls...
     
  7. pici

    pici Kbyte

    ... Ich bin ja doof. Hatte nur einen Schreibfehler im Code....

    Kill "C:\Documents and Settings\kiefer_p\Desktop\temp\Mappe1 (version 1).pdf" und schon ists erledigt...

    Alles funktioniert also bestens. Danke!!
     
  8. brum

    brum Kbyte

    Der vordere Teil der PDF-Datei heisst also gleich wei der vordere Teil der Exceldatei.

    Dann kannst Du den Dateinamen wie folgt generieren:

    Dateiname$=Left$(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName)-4) + ".pdf"

    Gruss
    Bruno
     
  9. brum

    brum Kbyte

    Ok, deine Lösung geht auch (solange Du den Dateinamen nicht änderst).

    Gruss
    Bruno
     
  10. pici

    pici Kbyte

    Und genau da taucht das nächste Problem auf.... Die nun generierte PDF Datei muss umbenannt werden...

    Diesen Code hab ich mir gegoogelt, funktioniert aber leider nicht

    With ReName_File()
    Dim OldName As String
    Dim NewName As String
    OldName = "C:\old.pdf": NewName = "C:\new.pdf"
    Name OldName As NewName
    End With
     
  11. brum

    brum Kbyte

    Wofür soll das With ReName_File() stehen? Lasse die Zeile mit With... und End With weg.

    Anmerkung: Ich verwende in der Regel für Stringvariabeln das $ am Schluss der Variable, so muss ich die Variable nicht definieren. (Kommt halt von alten C64-Zeiten...)

    Gruss
    Bruno
     
  12. pici

    pici Kbyte

    Super, funktioniert. Das ganze ist nun noch nicht ganz perfekt... Nämlich wäre es noch schön, wenn ich den Code damit ergänzen könnte, dass das generierte PDF File gedruckt wird. Hab bis jetzt nichts entsprechendes gefunden....
     
  13. brum

    brum Kbyte

    Warum druckst Du nicht die Excel-Datei? Sollte doch genau dasselbe ausdrucken.

    Gruss
    Bruno
     
  14. pici

    pici Kbyte

    Hab ich soeben gemacht und wollte das auch hier posten... Danke.. Etwas übermüdet, deshalb die langsamen Gedankengänge...
    Die nächste Anforderung probiere ich ganz ohne Hilfe zu lösen, da dies eigentlich kein Problem darstellen sollte. Und falls ichs nicht schaffe, melde ich mich

    Vielen Dank!!
     
  15. Maggov

    Maggov ROM

    Hallo zusammen,

    ich habe ein ähnliches Vorhaben, scheitere jedoch schon etwas früher an einem Dialog des Druckertreibers, der mich nach dem Ort wo das PDF generiert werden soll fragt. Ich habe es schon mit den Code Fragmenten hier im Thread probiert aber es klappt leider nicht.

    Im prinzip reicht ein einfaches bestätigen des Dialogs, dieser scheint jedoch ausserhalb von Excel zu erfolgen und ich kann ihn somit auch nicht "aufnehmen" (habe es mit dem Recorder versucht, er schreibt aber keinen Code).

    Habe es mit:

    Workbooks.Open Filename:= _
    "<Adresse der Datei und name der Datei>" _
    , UpdateLinks:=0
    Sheets(Array("Tabelle1", "Tabelle2")).Select
    Sheets("Tabelle1").Activate
    Application.ActivePrinter = "Adobe PDF auf Ne01:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
    "Adobe PDF auf Ne01:", Collate:=True
    sendkey "{ENTER}", True
    ActiveWindow.Close

    versucht (einige Platzhalter, da ich hier nicht posten kann wie die Originale heissen). Das Script läuft bis zum Druckdialog, dann kommt das Fenster mit "Speichern" -> Script bleibt "stecken".

    Ich hoffe jemand von Euch kann mir helfen.

    Vielen Dank im voraus und Grüsse

    Markus
     
  16. brum

    brum Kbyte

    Hallo Markus

    Zuerst eine Anmerkung: Eröffne bei einem neuen Problem ein neuer Thread. Du kannst darin natürlich auf einen alten Link verweisen, damit wir wissen, dass Du diesen bereits gesehen hast...

    Nun zum Problem: Du hast richtig erkannt, dass der PDF-Drucker ausserhalb von Excel läuft, und somit nicht aufgezeichnet werden kann. Das Problem wird beim Befehl SendKey (müsste es nicht SendKeys heissen!?!) liegen. Manchmal muss man zuerst warten, bevor der Tastencode gesendet wird, sonst läuft er ins Leere/verpufft einfach. Schau deshalb einmal den Befehl Wait an.

    Gruss
    Bruno
     
  17. Maggov

    Maggov ROM

    Hallo Bruno,

    vielen Dank für die schnelle Antwort. Super.

    Ich werde mal den Wait Befehl anschauen. Mit dem "s" bei Sendkey hast Du natürlich vollkommen recht.

    Ich eröffne jetzt einen neuen Thread (Dann mit Link natürlich) da ich noch ein weiteres Thema nachfragen will. Ich hoffe Du kannst mir dabei auch helfen. :bet:

    Fragen über Fragen - ich hoffe es funktioniert und ich kann mich bald revangieren.

    Viele Grüsse

    Markus
     
  18. Maggov

    Maggov ROM

    Hallo Bruno,

    da dies hier gepostet wurde auch hier das feedback.

    Wait bringt mich nicht weiter, da die Eingabe von "ENTER" offensichtlich nicht in dem Dialogfenster ausgeführt wird (habe 10 sec. Wartezeit aus dem Beispiel verwendet, da das fenster bei mir unmittelbar aufpoppt, sollte das reichen).

    Ich habe ein Neues Thema eröffnet bzgl. der Sendkeys-Methode, da ich hoffe damit den Dialog direkt ansprechen zu können und ich mich an die Regeln hier halten wollte.

    Vielen Dank trotzdem für die Hilfe - villeicht kennst Du Dich ja mit der Methode ebenfalls aus?

    Viele Grüsse

    Markus
     
  19. Maggov

    Maggov ROM

    Hallo zusammen,

    konnte das Problem zwischenzeitlich anders lösen.

    Vielen Dank für die schnelle Hilfe vorhin und Grüsse

    Markus
     
Thread Status:
Not open for further replies.

Share This Page