Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speichern einer Tabelle durch Button-Klick

Forumthread: Speichern einer Tabelle durch Button-Klick

Speichern einer Tabelle durch Button-Klick
25.06.2018 14:33:57
Bernd
Hallo,
Ich bitte um Hilfe, denn ich muss folgendes Problem lösen, weiß aber nicht, wie:
Ich benötige auf dem Tabellenblatt einen Button, mit dem man eine sich ebenfalls dort befindliche Tabelle als .pdf-Datei abspeichern kann.
Die Tabelle befindet sich auf der gleichen Tabellenseite, wie der Button.
Sie besteht aus der Überschrift (im Namensmanager "Kopf" genannt) und der eigentlichen Tabelle (im Namensmanager "Tabelle" genannt).
Als pdf gespeichert werden soll nur der in der Mustertabelle umrandete Bereich.
Der Tabellenbereich kann von Tabelle zu Tabelle zeilen- und spaltenmäßig variieren.
Der Name der .pdf-Datei soll aus dem Inhalt der 1. Zeile des gebildet werden.
Eine Mustertabelle kann man hier herunterladen:
https://www.herber.de/bbs/user/122305.xlsm
Danke schon im Voraus für eure Hilfe
Bernd
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern einer Tabelle durch Button-Klick
26.06.2018 11:39:18
fcs
Hallo Bernd,
hier entsprechende Makros. Es richtet im Blatt die Druckbereich im Seitenlaout entsprechend ein.
Es ist aber "einfacher" wenn die Schaltfläche aus den Formular-Steuerelementen verwendest.
Dann musst du nicht in jedem Tabellenblatt das Makro für die Schaltfläche anlegen.
Du weist der Schaltfläche einmal das Makro zu und kannst dann die Schaltfläche in die anderen Blätter kopieren.
Als Verzeichnis für das Speichern der PDF wird das Verzeichnis der Exceldatei verwendet. Dies muss evtl anpassen und der Variablen strPfad entsprechend ein Verzeichnis zuweisen.
Gruß
Franz
'Code in einem allgemeinen Modul der Datei
Option Explicit
'Dieses Makro per Schaltfläche starten
Public Sub PDF_AktivesBlatt()
Call prcMake_PDF(wks:=ActiveSheet)
End Sub
Public Sub prcMake_PDF(wks As Worksheet)
Dim strDatei As String
Dim strPfad As String
strPfad = ActiveWorkbook.Path
If strPfad = "" Then
MsgBox "Diese Datei muss erst gespeichert werden, damit der Pfad für die PDF-Datei  _
ermittelt werden kann!", vbOKOnly, "Tabelle als PDF-Speichen"
Else
strPfad = strPfad & "\"
strDatei = wks.Cells(1, 1).Text
With wks
.PageSetup.PrintTitleRows = .Range("Kopf").EntireRow.Address
.PageSetup.PrintArea = wks.Range("Tabelle").Address
.ExportAsFixedFormat xlTypePDF, Filename:=strPfad & strDatei & ".pdf", _
ignoreprintareas:=False, OpenafterPublish:=True
End With
End If
End Sub

Anzeige
AW: Speichern einer Tabelle durch Button-Klick
29.06.2018 09:26:26
Bernd
Hallo Franz,
Dank für Deine Antwort.
Ich komme aber nicht so richtig damit zurecht:
Wenn ich das Makro PDF_AktivesBlatt() starte (Sub/User Form ausführen), kommt es zum Fehler:
Userbild
Was mache ich da falsch?
Gruß
Bernd
Anzeige
AW: Speichern einer Tabelle durch Button-Klick
29.06.2018 16:01:40
fcs
Hallo Bernd,
da hatte ich beim Einfügen des Codes in die Antwort nicht bemerkt, dass die Forumssoftware noch einen Zeilenumbruch im Text der MsgBox eingefügt hatte.
ändere die folgenden Zeilen:
     MsgBox "Diese Datei muss erst gespeichert werden, damit der Pfad für die PDF-Datei " _
& "ermittelt werden kann!", vbOKOnly, "Tabelle als PDF-Speichen"
Gruß
Franz
Anzeige
AW: Speichern einer Tabelle durch Button-Klick
30.06.2018 07:47:07
Bernd
Hallo Franz,
Danke, das hätte ich allein nie hinbekommen!
Viele Grüße
Bernd
AW: Speichern einer Tabelle durch Button-Klick
30.06.2018 08:31:33
Bernd
Nochmals Hallo,
Ich muss dich doch noch einmal behelligen.
Mir ist gerade aufgefallen, dass es ein Problem gibt, wenn die zu erstellende pdf-Datei schon im Pfad vorhanden ist.
Siehst Du eine Möglichkeit, den Dateinamen der zuletzt gespeicherten Datei "Teil1 2018.pdf" noch mit einem Zähler zu versehen?
Die aktuell abzuspeichernde Datei bekommt immer den (hier im Beispiel)Namen "Teil1 2018.pdf".
Die zuletzt abgespeicherte Datei wird in "Teil1 2018-01.pdf" umbenannt, wenn diese schon vorhanden sein sollte, bekommt sie den Namen "Teil1 2018-02.pdf" oder so weiter.
Ich meine: Wenn die pdf-Datei schon 4x vorhanden sein sollte, also "...2018.pdf" sowie "...2018-01.pdf" bis "...2018-03.pdf), dann wird aus der "...2018.pdf" die "...2018-04.pdf" und die aktuelle Speicherung wird wieder "...2018.pdf" ohne Zähler.
Ich weiß nicht, wie ich es richtig beschreiben soll, hoffentlich verstehst Du mich.
Das zweite Problem ist folgendes:
Nach dem Erstellen öffnet sich automatisch Acrobat (oder Acrobat Reader) und zeigt die erstellte Datei an. Vor dem Neuerstellen der Datei sollte die angezeigte Datei zwangsweise geschlossen werden, damit es zu keiner Fehlermeldung kommt.
Ob Du mir hierbei bitte auch helfen kannst?
Das Programm soll wenn es fertig ist, von Personen (bei uns im Verein) ohne große PC-Kenntnisse bedient werden können, deshalb der Aufwand.
Deshalb
Viele Grüße
Bernd
Anzeige
AW: Speichern einer Tabelle durch Button-Klick
01.07.2018 08:06:44
Bernd
Nochmals Hallo,
Ich muss dich doch noch einmal behelligen.
Mir ist gerade aufgefallen, dass es ein Problem gibt, wenn die zu erstellende pdf-Datei schon im Pfad vorhanden ist.
Siehst Du eine Möglichkeit, den Dateinamen der zuletzt gespeicherten Datei "Teil1 2018.pdf" noch mit einem Zähler zu versehen?
Die aktuell abzuspeichernde Datei bekommt immer den (hier im Beispiel)Namen "Teil1 2018.pdf".
Die zuletzt abgespeicherte Datei wird in "Teil1 2018-01.pdf" umbenannt, wenn diese schon vorhanden sein sollte, bekommt sie den Namen "Teil1 2018-02.pdf" oder so weiter.
Ich meine: Wenn die pdf-Datei schon 4x vorhanden sein sollte, also "...2018.pdf" sowie "...2018-01.pdf" bis "...2018-03.pdf), dann wird aus der "...2018.pdf" die "...2018-04.pdf" und die aktuelle Speicherung wird wieder "...2018.pdf" ohne Zähler.
Ich weiß nicht, wie ich es richtig beschreiben soll, hoffentlich verstehst Du mich.
Das zweite Problem ist folgendes:
Nach dem Erstellen öffnet sich automatisch Acrobat (oder Acrobat Reader) und zeigt die erstellte Datei an. Vor dem Neuerstellen der Datei sollte die angezeigte Datei zwangsweise geschlossen werden, damit es zu keiner Fehlermeldung kommt.
Ob Du mir hierbei bitte auch helfen kannst?
Das Programm soll wenn es fertig ist, von Personen (bei uns im Verein) ohne große PC-Kenntnisse bedient werden können, deshalb der Aufwand.
Deshalb
Viele Grüße
Bernd
Anzeige
AW: Speichern einer Tabelle durch Button-Klick
01.07.2018 11:59:14
fcs
Hallo Bernd,
das Umsetzen deiner Wunschliste war jetzt etwas komplizierter.
Die Nummerierung älterer Versionen des PDF hab ich jetzt so umgesetzt dass
1. falls vorhanden die Version ohne Nr, in Version "-00" umbenannt wird
2. falls vorhanden Versionen mit Version &gt "-04" gelöscht werden
3. die Version der vorhandenen Dateien um 1 erhöht werden - beginnend mit der ältesten Version.
4. die neue PDF-Datei exportiert wird
Das Schliessen einer im PDF-Viewer (z.B. Acrobat Reader) geöffneten Datei läßt sich per VBA-Makro nicht so ohne weiteres umsetzen - zumindest nicht mit meinen Kenntnissen.
Ich hab es jetzt so umgesetzt, dass der Anwender falls erforderlich einen Hinweis bekommt, dass die PDF-Datei geschlossen werden muss bevor das Makro weiter ausgeführt werden kann.
Falls du die erzeugte PDF-Datei nicht unbedingt anzeigen willst/musst, dann kann man das auch so steuern.
Im Makro "PDF_AktivesBlatt" muss hierzu nur der Parameter für die Anzeige von True in False geändert werden.
Gruß
Franz
Text-Datei mit erweiterten Makros
https://www.herber.de/bbs/user/122415.txt
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Speichern einer Tabelle durch Button-Klick in Excel


Schritt-für-Schritt-Anleitung

  1. Erstelle einen Button: Öffne Excel und gehe zu dem Arbeitsblatt, auf dem du den Button platzieren möchtest. Wechsle zu den Entwicklertools und füge einen Button aus den Formular-Steuerelementen hinzu.

  2. Füge das Makro hinzu: Klicke mit der rechten Maustaste auf den Button und wähle „Makro zuweisen“. Wähle das Makro PDF_AktivesBlatt aus, das du gleich erstellen wirst.

  3. Erstelle das Makro:

    • Öffne den VBA-Editor (drücke ALT + F11).
    • Füge ein neues Modul hinzu (Einfügen > Modul) und kopiere den folgenden Code hinein:
    Option Explicit
    
    Public Sub PDF_AktivesBlatt()
       Call prcMake_PDF(wks:=ActiveSheet)
    End Sub
    
    Public Sub prcMake_PDF(wks As Worksheet)
       Dim strDatei As String
       Dim strPfad As String
       strPfad = ActiveWorkbook.Path
    
       If strPfad = "" Then
           MsgBox "Diese Datei muss erst gespeichert werden, damit der Pfad für die PDF-Datei ermittelt werden kann!", vbOKOnly, "Tabelle als PDF speichern"
       Else
           strPfad = strPfad & "\"
           strDatei = wks.Cells(1, 1).Text
           With wks
               .PageSetup.PrintTitleRows = .Range("Kopf").EntireRow.Address
               .PageSetup.PrintArea = wks.Range("Tabelle").Address
               .ExportAsFixedFormat xlTypePDF, Filename:=strPfad & strDatei & ".pdf", _
               ignoreprintareas:=False, OpenafterPublish:=True
           End With
       End If
    End Sub
  4. Teste das Makro: Speichere deine Excel-Datei und klicke auf den Button, um die Tabelle als PDF zu speichern. Achte darauf, dass der Pfad korrekt ist.


Häufige Fehler und Lösungen

  • Fehler bei der Dateispeicherung: Wenn du beim Ausführen des Makros eine Fehlermeldung erhältst, überprüfe, ob die Excel-Datei gespeichert ist. Das Makro benötigt einen gültigen Pfad, um die PDF-Datei zu speichern.

  • MsgBox mit Zeilenumbruch: Falls du eine Fehlermeldung in der MsgBox siehst, stelle sicher, dass du den Code wie folgt änderst:

    MsgBox "Diese Datei muss erst gespeichert werden, damit der Pfad für die PDF-Datei " _
    & "ermittelt werden kann!", vbOKOnly, "Tabelle als PDF speichern"

Alternative Methoden

  • Verwendung von ActiveX-Steuerelementen: Statt eines Formular-Steuerelements kannst du auch einen ActiveX-Button verwenden, um mehr Anpassungsmöglichkeiten zu haben.

  • Direktes Speichern als PDF: Wenn du häufig eine einzelne Excel-Seite speichern musst, kann ein direktes Makro zum Speichern ohne Button-Klick in Betracht gezogen werden.


Praktische Beispiele

  1. PDF mit Zähler: Um sicherzustellen, dass beim Speichern einer PDF-Datei mit demselben Namen kein Fehler auftritt, kannst du den Dateinamen mit einem Zähler versehen:

    Dim counter As Integer
    counter = 1
    Do While Dir(strPfad & strDatei & IIf(counter = 1, "", "-" & Format(counter, "00")) & ".pdf") <> ""
       counter = counter + 1
    Loop
    strDatei = strDatei & IIf(counter = 1, "", "-" & Format(counter, "00"))
  2. Automatisches Schließen von PDF-Viewer: Leider kann ein PDF-Viewer wie Acrobat Reader nicht direkt geschlossen werden, aber informiere den Benutzer, dass die PDF vor dem Speichern geschlossen werden muss.


Tipps für Profis

  • Benutzerfreundlichkeit erhöhen: Stelle sicher, dass die Benutzer eine klare Anleitung zum Umgang mit dem Speichern-Button haben, um Probleme zu vermeiden.

  • Dateipfade dynamisch anpassen: Überlege, wie du den Pfad dynamisch anpassen kannst, um zukünftige Komplikationen zu vermeiden, beispielsweise durch einen Dialog zur Auswahl des Speicherortes.


FAQ: Häufige Fragen

1. Wie kann ich eine einzelne Excel-Seite speichern? Du kannst das oben beschriebene Makro verwenden, um eine bestimmte Tabelle als PDF zu speichern.

2. Was passiert, wenn die PDF-Datei bereits existiert? Das Makro kann so angepasst werden, dass es die Datei mit einem Zähler versieht, wenn sie bereits existiert.

3. Wie kann ich den Speicherort für die PDF-Datei ändern? Ändere die strPfad-Variable im Makro, um einen anderen Speicherort zu verwenden.

4. Kann ich das automatische Öffnen der PDF-Datei verhindern? Ja, ändere den Parameter OpenafterPublish im Export-Befehl von True nach False.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige