Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
PDF per Makro mit Auswahl der Spaltenbereiche
13.04.2016 21:16:33
Christian
Hallo Zusammen,
Ich habe eine Tabelle, bei der ich per Makro ein PDF Export integrieren will. Dabei möchte ich, dass der zu druckende Bereich grundsätzlich Beschränkt ist. Der Grundsätzlicher Druckbereich ist A10:D500(schöner wäre natürlich A10:D-letzte benutzte Zeile)
Dabei ist Zeile A10:A12 als Überschrift anzusehen und soll auf jeder Seite natürlich oben stehen. (Das ist in der Mappe auch per Druckbereich usw. bereits eingestellt)
Soweit so gut.
Sub PDF()
Range("A10:D500").Select
Range("A1").Activate
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Test\Desktop\Testdatei.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub

Das funktioniert soweit.
Ich möchte jedoch, dass man über eine Auswahlbox die zu druckenden Spalten auswählen kann. Damit ich mal zB. A-B; mal A-C; mal A-B und D; bzw. andere Kombinationen auswählen kann. Der Druck im PDF soll dann quasi die nicht gewählten Spalten ausblenden.
Wie kann ich sowas umsetzten?
Vielen Dank
und einen schönen Abend wünsche ich allen hier :)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF per Makro mit Auswahl der Spaltenbereiche
14.04.2016 10:33:11
Michael
Hallo!
Hier ein Beispiel, wie ich's lösen würde:

Die Datei https://www.herber.de/bbs/user/104956.xlsm wurde aus Datenschutzgründen gelöscht


Code liegt im allgemeinen Modul 1 sowie im Klassen-Modul der Tabelle1 (für die Schaltfläche).
Die Spalten-Auswahl könnte natürlich auch anders erfolgen (Eingabe-Meldung), das find ich aber viel mühsamer, als in meiner Variante mit Auswahlliste direkt in einer Zelle.
schöner wäre natürlich A10:D-letzte benutzte Zeile
Ist auch drin.
Code ist kommentiert.
LG
Michael

Anzeige
AW: PDF per Makro mit Auswahl der Spaltenbereiche
14.04.2016 13:04:57
Christian
Hallo,
danke erstmal für deine Hilfe. Ich benötige denoch ein Userform, ich finde das schöner :) (außerdem ist der Tabellenbereich ein Beispiel; bei 4 Spalten durchaus realisierbar, aber bei 20 schon sehr umständlich)
Ich habe das Userform jetzt so erstellt:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then Cells(1, 10) = "A" Else Cells(1, 10) = ""
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then Cells(2, 10) = "B" Else Cells(2, 10) = ""
End Sub
Private Sub CheckBox3_Click()
If CheckBox3.Value = True Then Cells(3, 10) = "C" Else Cells(3, 10) = ""
End Sub
Private Sub CheckBox4_Click()
If CheckBox4.Value = True Then Cells(4, 10) = "D" Else Cells(4, 10) = ""
End Sub
Private Sub CommandButton5_Click()
Me.Hide
Call DruckenMitSpaltenWahl
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
End Sub
Wobei ich mir in Spalte J die gewählten Spalten ausgeben lasse und in deiner Zelle G1 (Bezug für den Druck) folgende Formel: =WECHSELN(GLÄTTEN(J1&" "&J2&" "&J3&" "&J4);" ";";")
Das geht auch im Makro direkt, aber ich bekomme es nicht hin...
Zum Druck:
Die Wiederholungszeilen, die Du hier definierst
Const WhZeilen As String = "$10:$12" 'Wiederholungszeilen

wird nicht mit angezeigt.
Schön funktioniert das mit der letzten benutzetn Zeile :)
Was noch ungünstig ist, ist die Tatsache, dass ich ein PDF speichern will und nicht direkt drucken. Außerdem Wird der Druckbereich angepasst auf eine Seite, damit wird aber der Inhalt viel zu klein, wenn wirklich mal alle 500 Zeilen gefüllt sind.
Anbei die Datei mit Userform:
https://www.herber.de/bbs/user/104961.xlsm
Aber Grundsätzlich ein sehr hilfreicher Ansatz, vielen Dank
vielleicht hast du zu den genannten Problemen auch noch eine Idee

Anzeige
AW: PDF per Makro mit Auswahl der Spaltenbereiche
14.04.2016 17:33:03
Michael
Hallo!
Kommunikation ist unwahrscheinlich und gefährlich!
- Niklas Luhmann
...hab ich schon mal erwähnt, oder war das ein anderer Christian? ;-)
vielleicht hast du zu den genannten Problemen auch noch eine Idee
Ja, folgend:
Ich benötige denoch ein Userform, ich finde das schöner
Mag sein, davon war aber im ersten Beitrag nie die Rede. Unabhängig von der Ästhetik hast Du geschrieben
Damit ich mal zB. A-B; mal A-C; mal A-B und D; bzw. andere Kombinationen auswählen kann
Das im Makro zu pflegen bzw. zu erstellen ist recht mühsam, wie ich finde - daher mein "Umweg" über einen Zellbereich und Gültigkeistliste. Das was Du da mit Checkboxen machst ist sowieso Overkill - gerade wenn Du, wie Du sagst, keine 4 Spalten sondern evtl. 20 hast - dann musst Du 20 Checkboxen inkl. Code warten, naja...
Dazu kommt, dass Dein Versuch mit =WECHSELN(...) völlig unnötig ist - wenn Du schon mit Checkbox-Werten arbeitest, kannst Du die gleich in eine Variable schreiben, die Du dann statt dem Zellwert (wie bisher in G1) übergibst.
Zu Die Wiederholungszeilen, die Du hier definierst... wird nicht mit angezeigt.
Das ist falsch; in meiner Datei werden sehr wohl Zeilen 10:12 als Wiederholungszeilen angezeigt; Du musst nur aufpassen, dass Du den DruckBereich darunter beginnen lässt; in Deinem Bsp-Fall also erst ab A13, wenn 10:12 die Wiederholungszeilen sind.
Außerdem Wird der Druckbereich angepasst auf eine Seite, damit wird aber der Inhalt viel zu klein, wenn wirklich mal alle 500 Zeilen gefüllt sind.
Das ist auch falsch; der Druckbereich wird nicht auf eine Seite angepasst, sondern hat soviele Seiten, wie eben Spalte D (gem. Deinem Wunsch) verwendete Zeilen aufweist.
Unabhängig davon, wenn Du das über eine Userform machen willst, würde ich es eher so machen, als beim aktivieren der Checkboxen Werte in Zellen zu schreiben: https://www.herber.de/bbs/user/104970.xlsm
Jetzt allerdings ohne Druckvorschau, sondern als PDF-Export!
LG
Michael

Anzeige
Achtung: Speicherpfad für die PDF...
14.04.2016 17:37:40
Michael
Christian,
...musst Du noch auf Deine Gegebenheiten anpassen, da ist noch mein Testlaufwerk drin!
LG
Michael

AW: PDF per Makro mit Auswahl der Spaltenbereiche
14.04.2016 19:35:22
Christian
Hallo Michael,
nein, das hast du mirgegenüber noch nicht erwähnt :). Aber ich finde deine Art zu belehren/zu erklären sehr sympatisch.
Ja, du hast Recht. Das Sender - Empfänger - Prinzip hat hier wieder voll zugeschlagen.
Ich versuche meine (aus meiner Sicht komplexen) Probleme so einfach wie möglich zu beschreiben und am besten mit einer simplen Musterdatei zu simulieren.
Es fällt mir dabei jedoch öfter auf die Füsse, dass ich damit komplexere Zusammenhänge schlichtweg vergesse zu erklären oder einzubauen.
Ich versuche es nochmal :)
Also ich habe eine Tabelle, die mit verschiedensten Formeln und Zahlen gefüllt ist. Bis auf wenige Eingabefelder ist alles gesperrt.
Ich will jetzt über den PDF Druck quasi verschiedene Ausgabevarianten generieren. Dabei will ich Spaltenbereich vorfefinieren. Da ich ein wenig VBA Kenntnisse habe (Try & Error)
habe ich mir eingebildet aus den Werten A B C D eigenständig Bereiche zu bauen im Skript. Daher dieses einfache Muster :)
Deine Ansätze/Lösungen gefallen mir gut. Bei vielen Sachen verstehe ich schon den Hintergrund. Ich habe das mit dem Druckbereich nur unzureichend getestet,
daher habe ich den Seitenwechsel bei vielen Daten nicht gesehen und durch die Zufallszahlen ist mir der "Kopf" nicht aufgefallen. Danke für die optische Aufwertung/Trennung. Sorry dafür.
Den Zielpfad habe ich bereits angepasst mit:
strPfad = Environ("UserProfile") & "\Desktop\"
den PDF Druck habe ich auch angepasst, damit keine Datein überschrieben werden:
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
strPfad & "Übersicht " & ActiveSheet.Name & " " & Format(Now, "YYYY.MM.DD hh.mm.ss") & " _
.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, OpenAfterPublish:=True
Erweitern wir doch bitte den Bereich um 5 Spalten (A,B,C,D,E,F,G,H,I)
Spalte D bleibt weiterhin die Bezugsspalte für die maximalen Spalten.
Die Auswahl in der Checkbox würde ich wie folgt simulieren wollen:
1. A
2. A + B
3. A + B + I
4. A + B + G + H + I
Echt nochmal vielen Dank für deine Hilfe. Ich bin froh um jeden zusätzlichen Text, weil ich damit gut lernen kann Zusammenhänge zu verstehen.
LG Christian

Anzeige
AW: PDF per Makro mit Auswahl der Spaltenbereiche
14.04.2016 19:39:25
Christian
achso, was ich vergessen habe:
da ich die Spaltenbereiche Benutzerfreundlich halten möchte, würde ich im Userform Namen nutzen wollen neben den Checkboxen
1. A -- Variante 1
2. A + B -- Variante 2
3. A + B + I -- Variante 3
4. A + B + G + H + I -- Variante 4

Okay, passe ich Dir morgen an! LG und owt
14.04.2016 20:07:54
Michael

Ganz neuer Ansatz
15.04.2016 11:29:25
Michael
Hallo Christian!
Das war ja eine schwere Geburt - denn aus meiner Sicht hat sich jetzt, bei Deiner letzten Erklärung, nochmal ein anderes Bild ergeben, was Du erreichen willst, und wie man herangehen kann. Habe daher nun einen völlig neuen Weg eingeschlagen, bitte sehr: https://www.herber.de/bbs/user/104987.xlsm
Nachdem Du sowieso "nur" 4 Berichtsvarianten haben willst (also 4 unterschiedliche Spalten-Kombinationen) müssen wir überhaupt nicht so aufwändig und krampfhaft versuchen, die gewünschten Spalten in Variablen zu speichern oder auszulesen etc. - sondern wir setzen einfach auf benutzerdefinierte Ansichten. Die kannst Du Dir manuell einmal einrichten, und mit dem Userform-Druckmenü wählt dann der Benutzer eine Variante, und aufgrund dieser Variante aktivieren wir einfach die entsprechende Ansicht. Damit wird der Code auch gleich schlanker!
Schau's Dir an und gib Bescheid, ob Du damit zurecht kommst! Anpassen musst Du soweit nichts; beachte beim Testen nur: Die jeweilige Zeilenanzahl im Druckbereich wird immer nur über Spalte D bestimmt!
LG
Michael

Anzeige
AW: Ganz neuer Ansatz
15.04.2016 21:21:35
Christian
Hallo Michael,
der neue Ansatz ist echt cool. Und ich habe schon wieder eine Menge gelernt. Ehrlich gesagt habe ich noch nie mit den Benutzerdefinierten Ansichten gearbeitet, weil ich es als lästig empfand die Einstellungen vorzunehmen und habe lieber einfach immer nur mit Ausblenden gearbeitet. Aber für diesen meinen Zweck ist das ganze ideal!!!
Der Skript ist damit auch angenehm kurz. Ein weiterer Vorteil ist auch, dass ich damit auch die Möglichkeit habe bei einer Bestimmten Variante auch Zeilen oberhalb der Wiederholungszeile mit auszugeben, oder? Quasi als Master / Admin Ausdruck. Oder lieg ich da jetzt falsch? Das muss ich Montag direkt mal testen.
Da fallen mir ja gleich noch ganz andere Möglichkeiten ein. Genial. Was auch eine coole Idee wäre, ist die Wahl des Speicherortes nach dem Userform. Damit werde ich mich nochmal beschäftigen.
Aber das Grundproblem hast du mit bravur gelöst. Ich danke dir recht herzlich. Es ist sogar viel besser, als ich mir selber ausgedacht habe.
Schön ist auch, dass ich was über die Übergabe von Daten aus dem Userform über deine beiden Ansätze gelernt habe.
Ich habe da noch ein weiteres Problem, aber das gehört hier ncht zu diesem Thema. Ich werde mich noch ein wenig selber daran versuchen und ggf. nochmal hier im Forum eine Anfrage stellen.
Ich danke dir nochmal für deine kompetente Hilfe und deine sympatische Arte :)
Ich hoffe wir treffen hier nochmal aufeinander!!!

Anzeige
Danke für die Rückmeldung owT
18.04.2016 08:39:49
Michael

80 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige