Microsoft Excel

Herbers Excel/VBA-Archiv

Tabellenblätter via VBA als einzelne pdf-Dateien | Herbers Excel-Forum


Betrifft: Tabellenblätter via VBA als einzelne pdf-Dateien von: Sandra
Geschrieben am: 03.12.2009 17:35:56

Hallo meine Lieben.

Wieder ein Problem :-( *heul* ...

Ich habe eine docx-Datei mit gaaanz vielen einzelnen Tabellenblättern. Nun will ich daraus eine pdf generieren. Jedes Tabellenblatt soll eine pdf-Datei werden. Die Anzahl der Tabellenblätter darf aber kein fixer Wert sein, da ich diesen VBA-Code dann gerne an mehreren Stellen einsetzen würde.

Eine DICKE 1++++++ gibt es von mir, wenn es machbar ist, dass der Dateiname = dem Tabellennamen ist.

Geht so etwas????

Ich bin jetzt max. zwei Stunden offline - dann aber wieder da. Wäre schön wenn wir das heute noch auf die Reihe kriegen.

P. s. Wisst Ihr, ob in Hamburg VBA-Kurse angeboten werden und auf was man ggfs. achten muss? Ich würde mich dahingehend nämlich sehr sehr sehr gerne weiterbilden. Vielleicht könnte ich dann mal Helfer sein und nicht immer die Rolle der Hilflosen übernehmen.... :-)

Lieben Dank und Gruß
Eure Sandra

  

Betrifft: AW: Tabellenblätter via VBA als einzelne pdf-Dateien von: Ramses
Geschrieben am: 03.12.2009 20:37:48

Hallo

Ohne VBA-Kurs,... einfach mal den Makrorekorder benutzen.
Da lernst du auch einiges

Option Explicit

Sub PDF_Print()
    'Makrorekorder
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\Name\Desktop\Mappe2.pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
End Sub

Sub PDF_Print_Sheet()
    'Modifiziert
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\Name\Desktop\" & ActiveSheet.Name & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
End Sub


Gruss Rainer


  

Betrifft: AW: Tabellenblätter via VBA als einzelne pdf-Dateien von: Sandra
Geschrieben am: 03.12.2009 20:58:00

Hallo Rainer,

danke für den Tipp. Ich habe es schon hin und wieder mit dem Rekorder probiert, aber ich habe das Gefühl immer zu spezielle Dinge zu wollen.

Dieser Code funktioniert schon ganz gut:

Sub PDF_Print_Sheet()
    'Modifiziert
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\Name\Desktop\" & ActiveSheet.Name & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
End Sub
Es gibt nur das Problem, dass ich jedes einzelne Tabellenblatt nach und nach anklicken muss und dann immer wieder das Makro ausführen. Das mit der Umbenennung (Dateiname) ist wirklich SUPER!!!! Ich habe eben mal alle Arbeitsblätter markiert, aber dann habe ich wieder eine Datei. :(

Und ein Problem habe ich noch. Dieser Teil des Codes:

C:\Users\Name\Desktop\"

muss doch angepasst werden. Also "Name" muss geändert werden. Das bedeutet aber, dass jeder Mitarbeiter sein eigenes Makro benötigt. Kann man auch das umgehen bzw automatisieren?

Vielen herzlichen Dank!!!
Gruß
Sandra


  

Betrifft: AW: Tabellenblätter via VBA als einzelne pdf-Dateien von: Josef Ehrensberger
Geschrieben am: 03.12.2009 21:03:30

Hallo sandra,


so?

Sub PDF_Print_Sheet()
  'Modifiziert
  Dim strName As String
  
  strName = Environ("USERPROFILE") & "\Desktop\"
  
  ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=strName & ActiveSheet.Name & ".pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub



Gruß Sepp



  

Betrifft: AW: Tabellenblätter via VBA als einzelne pdf-Dateien von: Sandra
Geschrieben am: 03.12.2009 21:22:16

Hallo Sepp,

die Variante von Rainer finde ich schon ganz gut:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= "C:\Users\" & Environ("username") & "\Desktop\" & ActiveSheet.Name & ".pdf"

Ich muss das morgen nur mal an nem anderen Rechner testen. Im Prinzip ist es schon fast perfekt. Jetzt muss es nur noch möglich werden mehr als ein Arbeitsblatt oder auch alle Arbeitsblätter zu markieren und trotzdem jedes Arbeitsblatt als einzelne (richtig benannte) pdf zu erhalten.

Lieben Gruß
Sandra


  

Betrifft: AW: Tabellenblätter via VBA als einzelne pdf-Dateien von: Ramses
Geschrieben am: 03.12.2009 21:04:49

Hallo

Dann musst du halt alle Bedingungen gleich sagen.
Wir sind keine Hellseher

"....dass ich jedes einzelne Tabellenblatt nach und nach anklicken muss ..."
Du willst also mehrere Tabellenblätter auch anwählen können und trotzdem muss jede Tabelle in der eigenen PDF-Datei sein ?

"...muss doch angepasst werden..."
Ich weiss doch nicht wohin ihr drucken wollt ? Entweder lokal oder auf ein Netzlaufwerk oder einen fixen Pfad !?

Alternativ kannst du das auch so machen

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= "C:\Users\" & Environ("username") & "\Desktop\" & ActiveSheet.Name & ".pdf"

Dann wird immer unter dem angemeldeten !!! Windows Benutzer gespeichert

Gruss Rainer


  

Betrifft: AW: Tabellenblätter via VBA als einzelne pdf-Dateien von: Sandra
Geschrieben am: 03.12.2009 21:17:53

Hallo Rainer.

Sei mir bitte nicht böse. Ich habe scheinbar öfter Schwierigkeiten damit zu sagen was ich will.

Also, ja ich möchte - egal wie viele Arbeitsblätter ich anklicke - es soll jedes als eine einzelne pdf ausgegeben werden. Und das Beste ist - wie von Dir vorgeschlagen - wenn die Dateien immer auf dem Desktop des angemeldeten Users gespeichert wird.

Lieben Gruß
Sandra


  

Betrifft: Worksheet.Selected !??? von: Ramses
Geschrieben am: 03.12.2009 23:13:59

Hallo

Das wird nicht gehen. Ich kenne keine Möglichkeit abzufragen, WELCHES der Tabellenblätter in der Mappe ausgewählt ist und welches nicht. Das ist aber Voraussetzung dafür weil EXCEL eine solche Option selbst nicht anbietet.

Ich stelle die Frage daher auf offen.

Gruss Rainer


  

Betrifft: AW: Worksheet.Selected !??? von: Sandra
Geschrieben am: 04.12.2009 08:18:37

Guten Morgen Rainer,

geht es denn, dass er bei Ausführung des Makros alle Arbeitsblätter als je eine Datei abspeichert? Es muss ja nicht so speziell sein, dass nur markierte Arbeitsblätter gedruckt werden . wäre klasse keine Frage, aber einzeln anklicken und drucken ist auch schon klasse. Schön wäre es noch, wenn ich wenigstens alle auf einmal drucken kann, aber dann trotzdem für jedes Arbeitsblatt eine Datei bekomme.

Lieben Gruß
Sandra


  

Betrifft: AW: Worksheet.Selected !??? von: Ramses
Geschrieben am: 04.12.2009 10:15:28

Hallo

Jogy hat recht. Probier das mal aus

Sub PDF_Print_Sheet()
    'Modifiziert
    Dim wks As Worksheet
    For Each wks In ActiveWindow.SelectedSheets
        wks.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
        "C:\Users\" & Environ("Username") & "\Desktop\" & ActiveSheet.Name & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
    Next wks
End Sub


Gruss Rainer


  

Betrifft: AW: Worksheet.Selected !??? von: Sandra
Geschrieben am: 04.12.2009 10:27:26

Hallo Rainer, hallo Jogy,

Ich habe es mal ausprobiert. Habe zwei Tabellenblätter markiert und dann ausgeführt. Leider kommt dabei eine Datei statt zwei heraus. :-(

Gruß
Sandra


  

Betrifft: Sorry,.. Lapsus meinerseits von: Ramses
Geschrieben am: 04.12.2009 11:17:27

Hallo

Es muss natürlich statt "ActiveSheet.Name" "wks.Name" heissen.
Sonst wird die erstellte Datei immer wieder mit der neuen überschrieben :-(

Sub PDF_Print_Sheet()
    'Modifiziert
    Dim wks As Worksheet
    For Each wks In ActiveWindow.SelectedSheets
        wks.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
        "C:\Users\" & Environ("Username") & "\Desktop\" & wks.Name & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
    Next wks
End Sub


Gruss Rainer


  

Betrifft: AW: Sorry,.. Lapsus meinerseits von: Sandra
Geschrieben am: 04.12.2009 13:45:22

Hallo Rainer.

Das funktioniert leider auch nicht. Zwar bekomme ich zwei Dateien, aber mit identischem Inhalt - nämlich den, beider Arbeitsblätter. :-(

Lieben Gruß
Sandra


  

Betrifft: Das nächste Mal teste ich vorher... von: Ramses
Geschrieben am: 04.12.2009 14:23:42

Hallo

So geht es. Getestet

Sub PDF_Print_Sheet()
    'Modifiziert
    Dim wks As Worksheet
    For Each wks In ActiveWindow.SelectedSheets
        With wks
            .Select
            .ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
            "C:\Users\" & Environ("Username") & "\Desktop\" & .Name & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            True
        End With
    Next wks
End Sub


Gruss Rainer


  

Betrifft: AW: Das nächste Mal teste ich vorher... von: Sandra
Geschrieben am: 04.12.2009 15:04:38

*FREU*

Hallo Rainer.

JA - es funktioniert. Leider gibt es dieses böse Word - ABER...

Ich habe das Makro (eigentlich) schon dahingehend angepasst, dass es auf "allen" Windows-Oberflächen läuft. Auf Vista + Windows7 läuft es. Bei xp scheinbar nicht. Kann das sein?

Das Makro sieht so aus:

Sub PDF_Print_Sheet()
    'Danke Rainer'
    'Modifiziert
    Dim wks As Worksheet
    For Each wks In ActiveWindow.SelectedSheets
        With wks
            .Select
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
             Environ("userprofile") & "\Desktop\" & .Name & ".pdf", Quality:=xlQualityStandard,  _
_
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            True
        End With
    Next wks
End Sub
Desweiteren habe ich (Vista) das Problem, dass ich immer eine Fehlermeldung bekomme, wenn ich die Datei öffne. Das Makro funktioniert (bei mir) trotzdem, aber so eine Fehlermeldung nervt.

Hier mal ein Screenshot:



Interessant bei der Fehlermeldung ist, dass die Datei "091204 DHL.xlsm" heißt. So wie es in der Fehlermeldung steht hieß sie mal... *grübel*...

Kriegt man die Weg?

Liebste Grüße
Sandra


  

Betrifft: AW: Das nächste Mal teste ich vorher... von: Ramses
Geschrieben am: 04.12.2009 17:14:19

Hallo

Das Makro funktioniert NUR unter Office 2007.
Ältere Versionen werden nicht unterstützt. Da muss eine andere Variante verwendet werden um ein PDF zu erzeugen. Das ist dann jedoch abhängig vom jeweils installierten PDF Programm.

Gruss Rainer


  

Betrifft: AW: Das nächste Mal teste ich vorher... von: Sandra
Geschrieben am: 04.12.2009 17:52:36

Hallo Rainer,

wir haben alle Office 2007 aber manche von uns XP, manche Vista und einige schon Windows 7. Bei dem Kollegen mit Windows7 taucht die o. g. Fehlermeldung nicht auf. Ich meine - das Makro läuft. Das ist das wichtigste, aber die Fehlermeldung nervt. Bei den Kollegen mit xp gab es auch noch das eine oder andere Problem, aber ich hoffe das selber beseitigen zu können.

Jetzt ist erst einmal Wochenende. Mein Haus (Baustelle) ruft. Daher bin ich erst wieder ab Montag Morgen online. Vielen herzlichen Dank für die unermüdliche Hilfe!!!!

Liebe Grüß
Sandra


  

Betrifft: AW: Das nächste Mal teste ich vorher... von: Ramses
Geschrieben am: 04.12.2009 17:56:23

Hallo

Der PDF Export ist ein AddIn das separat installiert werden muss.
Schau mal ob das AddIn auf den XP Rechnern installiert worden ist.

Gruss Rainer


  

Betrifft: AW: Das nächste Mal teste ich vorher... von: Sandra
Geschrieben am: 05.12.2009 09:39:09

Guten Morgen Rainer. Mit AddIn meinst Du dieses, oder:



Ich werde mich da mal kundig machen.

Weißt Du, warum ich immer - direkt nach dem öffnen der Datei - diese Fehlermeldung bekomme, die ich gestern schon einmal veröffentlicht habe?

Liebe Grüße
Sandra


  

Betrifft: AW: Das nächste Mal teste ich vorher... von: Ramses
Geschrieben am: 05.12.2009 10:01:03

Hallo

Nein, das ist der Adobe Acrobat. Der wird hier als "virtueller Drucker" verwendet.
Der Code den ich dir gezeigt habe, sollte eigentlich das Office eigene AddIn verwenden.



Offensichtlich funktioniert das auch mit dem Adobe-Acrobat. Zumindest zeigt der Makrorekorder den gleichen Code, unabhängig davon ob das Office-Addin oder der Adobe Drucker verwendet wird.

Wenn du dort einen Fehler hast, würde ich mal den Acrobat neu installieren. Eventuell ist dort ein Fehler bei der Installation geschehen. Sorry,... aus der Distanz ist das nicht klar zu erkennen wo/warum der Fehler hier auftritt.

Probier doch mal das Addin

http://www.microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041&displaylang=de

zu installieren und schau mal ob der Fehler dann nicht mehr auftritt

Gruss Rainer


  

Betrifft: AW: Worksheet.Selected !??? von: JogyB
Geschrieben am: 04.12.2009 08:43:22

Hi.

Zumindest unter Excel 2003 kann man noch abfragen, welche Blätter ausgewählt sind, die stehen in ActiveWindow.SelectedSheets

Die Mappe muss dazu natürlich aktiv sein, aber das ist in dem Fall ja das kleinste Problem.

Gruss, Jogy


Beiträge aus den Excel-Beispielen zum Thema "Tabellenblätter via VBA als einzelne pdf-Dateien"