Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Tabellenblatt Drucken wenn Zelle nicht leer ist





Frage

Hallo, ich mal wieder. Ich brauche Eure Hilfe. Ich hab eine Datei mit mehreren Tabellenblätter 1-5. Auf dem ersten Tabellenblatt habe ich eine Button eingefügt, der bei Betätigung alle Tabellenblätter über den Drucker in ein PDF umwandelt. Jetzt habe ich folgendes Problem. Nicht immer sind in jedem Tabellenblatt Werte in den Tabellen eingetragen. Die Tabellen ohne Werte sollen dann ja auch nicht in die PDF Datei mit umgewandelt werden. Kann man das irgendwie lösen, wenn im z.B. Tabellenblatt 3 in der Zelle C3 kein Wert eingetragen ist, dann soll dieses Tabellenblatt auch nicht mit in die PDF-Datei, die anderen Tabellen wo Zelle C3 ausgefüllt ist sollen auch umgewandelt werden. Diese Bedingung auch für die anderen Tabellenblätter, ausgenommen Tabellenblatt 1, was nie umgewandelt werden soll. Ich dank Euch für Eure Mühe die Ihr Euch macht!!! Gruß Elahmplo

Antwort 1 von JoeKe

Moin Elahmplo,

vieleicht hilft dir folgendes Beispiel:

Option Explicit
Private Sub CommandButton1_Click()
Dim ws As Integer
For ws = 2 To Worksheets.Count
If Sheets(ws).Range("C3") <> "" Then
Sheets(ws).PrintOut
End If
Next
End Sub



Gruß

JöKe

Antwort 2 von Elhamplo

Hallo JöKe

sorry, kam aber erst jetzt dazu den Code zu Testen. Danke!! Ist schon fast was ich gesucht habe.

Ich hab das Drucken mitr dem PDF Creator mit dem Makroaufzeichner aufgezeichnet und in den Code mit eingeführt. In Deinem Code habe ich mehrere PDF-Dateien. Ich möchte gerne das die Tabellenblätter wo C3 nicht leer ist in eine PDF Datei umwandeln. Kann man das irgendwie noch anpassen??

Vielen Dank für die Mühe!!

Gruß

Elhamplo

Antwort 3 von JoeKe

Moin Elhamplo,

ich denke schon, aber es wäre hilfreich, wenn du deinen jetzigen Code mal posten könntest.

Gruß

JöKe

Antwort 4 von Elhamplo

Hey JöKe

ist nicht die schönste Erweiterung:

Private Sub CommandButton1_Click()
Dim ws As Integer
For ws = 2 To Worksheets.Count
If Sheets(ws).Range("C3") <> "" Then
´Sheets(ws).PrintOut
Application.ActivePrinter = "PDFCreator auf Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"PDFCreator auf Ne02:", Collate:=True
End If
Next
End Sub


Danke!!!

Gruß

Elhamplo

Antwort 5 von JoeKe

Hallo Elhamplo,

am einfachsten, denke ich, geht das über eine Hilfsdatei.

Option Explicit

Sub Elhamplo()
Dim ws As Integer, i As Integer, Ziel As String, Quelle As String
Quelle = ActiveWorkbook.Name
Workbooks.Add
i = 1
For ws = 2 To Workbooks(Quelle).Worksheets.Count
Ziel = ActiveWorkbook.Name
If Workbooks(Quelle).Sheets(ws).Range("C3") <> "" Then
Workbooks(Quelle).Sheets(ws).Cells.Copy _
Destination:=Workbooks(Ziel).Sheets(i).Range("a1")
i = i + 1
End If
Next
Application.ActivePrinter = "PDFCreator auf Ne02:"
ActiveWorkbook.PrintOut Copies:=1, ActivePrinter:="PDFCreator auf Ne02:", _
Collate:=True
Application.DisplayAlerts = False
Workbooks(Ziel).Close
Application.DisplayAlerts = True
End Sub


Die betreffenden Blätter werden zunächst in eine neue Datei kopiert und diese wird dann mit dem PDF Creator "gedruckt". Du musst nut sicherstellen, das sich in der neuen Datei genügend Blätter befinden (Voreinstellung in Extras/Optionen).

Gruß

JöKe

Antwort 6 von Elhamplo

Hallo,

Funktioniert super, danke!! Noch eine Frage, kann man das auch umgehen mit der Voreinstellung der Blätter?? Den Code brauch ich für eine Datei mit 20 Blätter, dann hab ich nämlich jedesmal wenn ich Ecxel öffne 20 Tabellblätter.

Danke

Gruß

Elhamplo

Antwort 7 von JoeKe

Hallo,

ja so:

Option Explicit


Sub Elhamplo()
Dim ws As Integer, i As Integer, Ziel As String, Quelle As String
Quelle = ActiveWorkbook.Name
Workbooks.Add
i = 1
For ws = 2 To Workbooks(Quelle).Worksheets.Count
Ziel = ActiveWorkbook.Name
Workbooks(Ziel).Sheets.Add after:=Worksheets(Worksheets.Count)
If Workbooks(Quelle).Sheets(ws).Range("C3") <> "" Then
Workbooks(Quelle).Sheets(ws).Cells.Copy _
Destination:=Workbooks(Ziel).Sheets(i).Range("a1")
i = i + 1
End If
Next
Application.ActivePrinter = "PDFCreator auf Ne02:"
Workbooks(Ziel).PrintOut Copies:=1, ActivePrinter:="PDFCreator auf Ne02:", _
Collate:=True
Application.DisplayAlerts = False
Workbooks(Ziel).Close
Application.DisplayAlerts = True
End Sub


Gruß

Antwort 8 von Elhamplo

Hallo,

Danke, danke, danke!!!! Super Sache!

Ich danke Die für die Mühe die Du Dir gemacht hast.

Große Verbeugung!!!!!

Gruß

Elhamplo

Antwort 9 von JoeKe

Moin Elhamplo,

da nicht für. ;-)

Schönes Wochenende

JöKe