Registriert seit: 08.10.2020
Version(en): 2019+365
Hallo @all, hier nun die zweite Herausforderung: folgender Code speichert die ExcelTab. im PDF-Format: Code: Private Sub CommandButton1_Click() ChDir "C:\Users\*****\Desktop\test" 'anpassen 'oder thisworkbook.path ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ Range("D22").Value & Format(Date, "_DD_MM_YYYY") & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False End Sub
Das klappt auch soweit ganz gut, ABER wenn nun nicht alle Zellen in meiner Tabelle gefüllt wurden, wird trotzdem das komplette Dokument gespeichert. Bsp: Das Dokument umfasst 4 Seiten. Seite 1 und 2 umfassen grundlegende Daten die immer ausgefüllt werden müssen. Seite 3 und 4 sind für Fotos gedacht. Das ist sehr unterschiedlich. Wenn auf Seite 1-3 was eingetragen wurde, soll 4 NICHT mit abgespeichert werden. Wie geht das? Hinweis: In der Userform beziehen sich div Buttons auf alle 4 Seiten des Dokuments... Ich hoffe Ihr versteht was ich meine. Wenn nicht, setze ich mich am WE ran und bastel eine Bsp-Datei... Besten Dank....
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Grüße, StefanB
00202
Nicht registrierter Gast
Hallo,  es gibt für " ExportAsFixedFormat" noch weitere Parameter. Für dich interessant - " From" und " To". Also von Seite bis Seite. Prüfe, ob auf Seite 3 und 4 etwas eingetragen ist/wird und ändere die Parameter entsprechend.  Wenn du das nicht alleine hinbekommst, lade ein aussagekräftiges Beispiel hoch - dann schauen wir weiter.
Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:1 Nutzer sagt Danke an Gast für diesen Beitrag 28
• StefanB
Registriert seit: 08.10.2020
Version(en): 2019+365
Hallo Case, da werde ich Dir dann mal wohl eine Bsp-Datei zu Verfügung stellen müssen... Das kriege ich so nicht hin...  Ich hoffe ich schaff das zu morgen. Vielen Dank
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Grüße, StefanB
Registriert seit: 08.10.2020
Version(en): 2019+365
07.06.2021, 08:41
(Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2021, 08:41 von StefanB.)
Guten Morgen Case, ich hatte es leider nicht geschafft am WE die Bsp.Tabelle fertig zu machen. Nun aber isse im Anhang. Bin gespannt wie der Code aussieht. Hab echt kein Plan...  Die "Bilder Hochladen Button" habe ich jetzt nicht alle gelöscht. Nur die Codes in der Userform habe ich bis auf 9 Bilder (je 1x hoch und quer) reduziert. Schlussendlich werden es dann aber 20 Bilder sein die man hochladen kann. Kleiner Zusatz: ich hatte ja den Löschen-Button-Code geändert. So wie Du es ja geschrieben hattest, löscht der ALLE Bilder im Dokument. Gibt es eine Möglichkeit, dass aber das Smily-Bild bleibt? Vielen Dank schon mal ....
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Grüße, StefanB
00202
Nicht registrierter Gast
Hallo,  also, wenn du das Logo behalten möchtest, gibt es zwei Wege:  Entweder du löscht die Bilder über eine Schleife und gibst die Bedingung vor, dass nur alle Bilder Zeile größer 6 gelöscht werden: Code: Dim picBild As Picture For Each picBild In ActiveSheet.Pictures If picBild.TopLeftCell.Row > 6 Then picBild.Delete Next picBild
Oder du gruppierst das Logo mit z.B. dem Button. Dann kannst du weiterhin mit dem Einzeiler arbeiten und es wird trotzdem nicht gelöscht, denn eine Gruppe ist für Excel etwas anderes, als ein einzelnes Picture. Für das PDF sieht der Code prinzipiell so aus:  Code: 'ExportAsFixedFormat (Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr) ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", "3", 0
Hier nutze ich die Konstanten, statt der Bezeichnungen. " 1", " 3" bedeutet eben von Seite 1 bis Seite 3. 0 ist False und -1 ist True. Du musst jetzt eben eine Zelle, die per Code gefüllt wird, auf der entsprechenden Seite prüfen und die angeben: Code: Dim strTMP As String If Range("A100").Value <> "" Then strTMP = "3" Else strTMP = "2" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0
Also, wenn in A100 etwas steht drucke 3 Seiten aus, sonst nur 2 Seiten. Das ist das Prinzip. Mach was draus.
Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:1 Nutzer sagt Danke an Gast für diesen Beitrag 28
• StefanB
Registriert seit: 08.10.2020
Version(en): 2019+365
07.06.2021, 15:13
(Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2021, 15:22 von StefanB.)
Hallo Case, und wieder mal ein Traum!! Ich habs nun folgenden Code: Code: Private Sub CommandButton1_Click() ChDir "C:\Users\******\Desktop\test" Dim strTMP As String If Range("D100").Value <> "" Then strTMP = "3" Else strTMP = "2" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0
If Range("A146").Value <> "" Then strTMP = "4" Else strTMP = "3" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0
If Range("A194").Value <> "" Then strTMP = "5" Else strTMP = "4" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0
If Range("A244").Value <> "" Then strTMP = "6" Else strTMP = "5" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0
If Range("A294").Value <> "" Then strTMP = "7" Else strTMP = "6" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0
End Sub
Hab jetzt nen bissl hin und her probiert und es klappt. Das mit dem Bild kriege ich auch noch hin. Hatte mich für die Gruppierung entscheiden, aber feststellen müssen, dass beim speichern der Button ebenfalls mit angezeigt wird. Das sollte ich aber hinkriegen. Deinen anderen Vorschlag werde ich demnächst umsetzen... Zur Not schreibe ich einfach nochmal was rein Somit ist dieses Kapitel auch abgeschlossen... Besten DANK!!! 
Nachtrag: i-wie klappts doch nicht. Auf einmal speichert er nun doch wieder nicht gefüllte Blätter!  Keine Ahnung warum´s eben noch funktionierte....  ???? Ich schau mir das heute abend nochmal in Ruhe an...
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Grüße, StefanB
Registriert seit: 08.10.2020
Version(en): 2019+365
So...ich hab jetzt nochmal den Code vervollständigt. Allerdings ist er noch immer Fehlerhaft. Code: Private Sub CommandButton1_Click() ChDir "C:\Users\Nutzer\Desktop\test" Dim strTMP As String If Range("D100").Value <> "" Then strTMP = "3" Else strTMP = "2" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 End If Range("A146").Value <> "" Then strTMP = "4" Else strTMP = "3" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 End If Range("A194").Value <> "" Then strTMP = "5" Else strTMP = "4" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 End If Range("A244").Value <> "" Then strTMP = "6" Else strTMP = "5" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 End If Range("A294").Value <> "" Then strTMP = "7" Else strTMP = "6" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 End Sub
Bis Seite 3 funktioniert das super. Wenn ich bis Seite 2 was eintrage, speichert er auch nur diese 2 Seiten. Das selbe mit seite 3, also steht in D100 was drin, wird bis seite 3 gespeichert. Steht nun aber auf Seite 4 in A146 was speichert er nicht bis seite 4, sondern nur bis seite 3...Was is da falsch?
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Grüße, StefanB
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, falls Du die pdf bei Seite 3 anschaust und nicht schließt, geht's nicht weiter. Warum speicherst Du eigentlich nach jeder Seite? Dein erster Ansatz mit If Then ... in einer Zeile war ja prinzipiell gut - wobei man die Else nicht braucht - , als Konsequenz hätte aber 1x ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 gereicht. Code: ... 'strTmp auf kleinsten Wert setzen strTMP = "2" 'Zellen auf Inhalt pruefen If Range("D100").Value <> "" Then strTMP = "3" If Range("A146").Value <> "" Then strTMP = "4" ... 'Blaetter ausgeben ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 ...
. \\\|/// 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:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• StefanB
Registriert seit: 08.10.2020
Version(en): 2019+365
Moin schauan, ich danke Dir! Leider bin ich nicht grad DER Experte in VBA... Da wäre ich im Leben nicht drauf gekommen. Ich hatte schon etliche Code-Varianten eingegeben...das der PC nicht den Volumeregler vom Fernsehr meines Nachbarns manipuliert hat, is echt ein Wunder!! In Sachen VBA muss ich mir echt mal die ganzen "Grundregeln" einhämmern. Das Prinzip verstehe ich ja, aber bei sowas hörts dann auch schon auf. Danke, Danke, Danke!!
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Grüße, StefanB
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hi Stefan, VBA ist das Eine. Wichtig beim Programmieren ist auch, sich die Abläufe usw. klar zu machen. Du kannst zum Lernen auch mal probieren, in Kommentaren zu "programmieren" bzw. den Ablauf aufzuschreiben, da musst Du die VBA-Befehle noch gar nicht im einzelnen kennen bzw. verwenden. Ich schreib deswegen hier auch gerne Lösungen mit vielen Kommentaren, auch wenn die manchmal vielleicht etwas verbesserungswürdig sind Ich nehm nur mal meine 3 Kommentare raus, etwas ergänzt: 'strTmp auf kleinsten Wert setzen 'Zellen D100, A146, ... fuer Festlegung Anzahl Blaetter auf Inhalt pruefen 'entsprechende Anzahl Blaetter ausgeben In Deinem code hätten Kommentare vielleicht so ausgesehen ... 'Wenn in Zelle D100 was steht, dann 3 Druckseiten festlegen, sonst 2 'entsprechende Anzahl Seiten ausgeben 'Wenn in Zelle A146 was steht, dann 4 Druckseiten festlegen, sonst 3 'entsprechende Anzahl Seiten ausgeben ... btw. im letzten code ... 'Wenn in Zelle D100 was steht, dann 3 Druckseiten festlegen, sonst 2 'entsprechende Anzahl Seiten ausgeben 'Ende Wenn in Zelle D100 was steht, dann 'Wenn in Zelle A146 was steht, dann 4 Druckseiten festlegen, sonst 3 'entsprechende Anzahl Seiten ausgeben 'Ende Wenn in Zelle A146 was steht, dann ... --> das gleichzeitig als Hinweis, dass Dein Then und das folgende End auch nicht exakt waren. Korrekt wäre die AUfteilung des If ... Then in zwei Zeilen und das If nach End gewesen If Range("D100").Value <> "" Then strTMP = "3" Else strTMP = "2" ActiveSheet.ExportAsFixedFormat 0, [D22] & Format(Date, "_DD_MM_YYYY"), 0, -1, 0, "1", strTMP, 0 End If
. \\\|/// 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:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• StefanB
|