Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Tabellenblätter markieren und eine PDF-Datei erstellen
#1
Hallo zusammen,

Ich brauche EURE Hilfe Blush

Ich habe eine Excel-Arbeitsmappe, welche mehrere Tabellenblätter (TB) hat. In jedem TB ist eine Tabelle dargestellt.

Ich möchte nun ein Button auf der ersten Seite (Hauptseite) einfügen, welcher die einzelnen Tabellen auf den einzelnen TB markiert und dann EINE einzige pdf-Datei erstellt.

Ich habe einen kleinen VBA-Code geschrieben, welcher die Tabelle auf einem TB markiert. Ich weiß aber nicht, wie ich es jetzt mit den anderen TB mache und wie ich es schaff dann das markierte in einer pdf datei darzustellen. Bitte Code einfügen:)

Sub Markieren()
For Zeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For Spalte = 1 To Cells(1, Columns.Count).End(xlUp).Column
If Cells(Zeile, Spalte) <> 0 Then Range(Cells(1, 1), Cells(Zeile, Spalte)).Select
Next Spalte
Next Zeile
End Sub

Ich möchte das gleiche mit den anderen TB machen und dann die markierten Bereiche in einer einzigen PDF-Datei abspeichern.



Ich hoffe, Ihr versteht mich. Danke schon mal.
Antworten Top
#2
Hi,
vielleicht hilft dir das schon
http://www.clever-excel-forum.de/Thread-...f+erzeugen
Mit freundlichen Grüßen  :)
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Zwergel für diesen Beitrag:
  • islamash
Antworten Top
#3
Hallöchen,

Erst mal noch zu den Markierungen. Im Prinzip wiederholst Du den Code für die betroffenen Blätter:

Code:
Sub Markieren()
Sheets("Tabelle1").Select
For Zeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  For Spalte = 1 To Cells(1, Columns.Count).End(xlUp).Column
    If Cells(Zeile, Spalte) <> 0 Then Range(Cells(1, 1), Cells(Zeile, Spalte)).Select
  Next Spalte
Next Zeile
Sheets("Tabelle2").Select
For Zeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  For Spalte = 1 To Cells(1, Columns.Count).End(xlUp).Column
    If Cells(Zeile, Spalte) <> 0 Then Range(Cells(1, 1), Cells(Zeile, Spalte)).Select
  Next Spalte
Next Zeile
End Sub

Das kann man natürlich auch wieder mit einer Schleife vereinfachen, wenn man das auf allen machen will z.B.

For i=1 to Sheets.Count
Sheets(i).Select
...Zellen markieren
Next
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • islamash
Antworten Top
#4
Moin!
Ich habe es völlig anders verstanden, aber eine Datei könnte Licht ins Dunkle bringen.

Es werden ja in den einzelnen TBs ausschließlich die zu druckenden Zellen stehen.
Dann reicht eine Schleife über die Sheets und das Schreiben in ein Array, welches dann als PDF gedruckt wird.
Selektiert werden muss da gar nichts.

Grob nach diesem Muster:
Code:
Sub RPP()
Dim i&, arr() As String
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
   If wks.Name <> "Hauptseite" Then
       ReDim Preserve arr(i)
       arr(i) = wks.Name
       i = i + 1
   End If
Next
Worksheets(arr).Copy
ActiveWorkbook.ExportAsFixedFormat _
  xlTypePDF, Environ("UserProfile") & "\Desktop\MeineAuswahl", OpenAfterPublish:=True
ActiveWorkbook.Close False
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • islamash
Antworten Top
#5
Hallo Ralf,

die etwas ungewöhnliche Selektierroutine hat ja bestimmt einen Hintergund.
füge mal willkürlich ein paar unzusammenhängende Daten in zwei Blätter ein und schaue, was da markiert wird.

Tabellenblattname: Tabelle1
ABCD
112
234
3567


von schauan

Tabellenblattname: Tabelle2
AB
11
22
33
44
55
66
77


von schauan
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • islamash
Antworten Top
#6
Vielen Dank für die schnellen Antworten.  Anbei habe ich ein Excel-Beispieldatei eingefügt, damit ihr euch das besser vorstellen könnt.

Was möchte ich:
Ich möchte auf den einzelnen Tabellenblätter (TB: Daten, Kunde, Lieferant, Objekt...), die Daten markiert bekommen. Es sollen nur Datensätze markiert werden und nicht die Nuller. Die Nuller habe ich drin, da sich dahinter Formeln verbergen. Nach dem die Tabellen auf den einzelnen TB markiert wurden sind, sollen daraus EINE pdf-Datei erstellt werden und zwar per Button-Klick. Das ganze soll natürlich in einem Stück funktionieren d.d. ich klicke auf den Button "PDF-Erstellung" und dann wird mir eine PDF Datei erstellt mit allen TB. Cool wäre, wenn die pdf-Datei in einem bestimmten Ordner abgespeichert wird und mit einem bestimmten Namen.

Am besten wäre es für mich, wenn sie mir den VBA-Code einpflegen bzw. mir mitteilen. Ich habe nur ganz wenige Kentnisse bzgl. Excel VBA.


Vielen Danke für eure Mühe.


Angehängte Dateien
.xlsx   Check_ VerbesserungsvorschlägeXX.xlsx (Größe: 235,42 KB / Downloads: 2)
Antworten Top
#7
Moin!
Ich würde alle Tabellen filtern und 0 abwählen.
Zum Erzeugen EINER Pdf mit ALLEN Blättern außer einem Deckblatt habe ich oben bereits einen Code eingestellt.

Wenn jetzt alle Sheets als eine einzige PDF erstellt werden sollen, dann reicht folgender kurzer Code:
Code:
Sub RPP()
ActiveWorkbook.ExportAsFixedFormat _
 xlTypePDF, Environ("UserProfile") & "\Desktop\MeineAuswahl", OpenAfterPublish:=True
End Sub


Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • islamash
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste