626 Aufrufe
Gefragt in Tabellenkalkulation von peters Mitglied (460 Punkte)

Hallo zusammen,

als Workaround zu einem anderen Problem muss ich aus mehreren Blättern einer Mappe eine PDF exportieren, die dann anschließend ausgedruckt wird.

Das ist soweit auch kein Problem und funktioniert.

Aber:
Ein Tabellenblatt (von 10) brauche in beim Ausdruck doppelt, habe aber bisher keinen Weg gefunden, dieses Blatt einfach 2x in die PDF zu exportieren.

Weiß jemand, wie das geht oder hat eine Idee dazu?

Grüße

Peter

7 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Peter,

kopiere das betreffende Tabellenblatt und füge es ander der gewünschten Position in der Reihenfolge der zu exportierenden Blätter ein - allerdings muss es einen anderen Namen haben (bzw. erhält es beim Kopieren automatisch einen anderen Namen), denn doppelte Tabellennamen können nicht in derselben Mappe existieren. Nach dem Export als PDF kannst du es wieder löschen.

Bis später, Karin
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)

Hallo Karin,

die Idee ist gut, die hatte ich ebenfalls bereits.

Die Problematik dabei ist, dass ich alle Blätter über deren Codenamen anspreche, also 1, 2, 3, ...

Und das benötigte Blatt ist mittendrin und soll eben auch mittendrin doppelt vorhanden sein.

Zwei weitere Ansätze hatte ich dazu bisher, allein die Umsetzung hapert:

  • das genutzte Array sortieren. Dann könnte ich das temporäre Blatt am Ende einfügen, aber in der Mitte drucken, oder
  • Ausdruck ins PDF "hinten anhängend", dann könnte ich bis inkl. der soppelt gewünschten Seite ins PDF drucken und danach eine weitere Druckschleife laufen lassen, die ich micht der doppelt gewünschten Seite beginne.
Gibt es eine der beiden Möglichkeiten?
Grüße
Peter
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Peter,

und was ist daran so problematisch, wenn du die Tabellenblätter dabei über ihren Index ansprichst? Wenn das Tabellenblatt irgendwo in der Mitte gedoppelt werden soll, dann musst du dein Array halt um 1 Index erweitern.

Bis später, Karin
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Karin,

weil während des Drucks Tabellen angesprochen werden, die dann ander falschen Position wären.

Insofern, auch wenn es vielleicht nervt:

Siehst Du eine der beiden anderen Möglichkeiten umsetzbar?

Grüße

Peter
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Peter,

weil während des Drucks Tabellen angesprochen werden, die dann ander falschen Position wären.

Das ist keine überzeugende Begründung. Wenn du z.B. Tabelle 3 kopierst (weil sie doppelt vorhanden sein soll) und an Position 6 setzt, dann die Tabellen 1 - 11 anstelle 1 - 10 exportierst und die kopierte Tabelle anschließend wieder löschst, dann ist die betreffende Tabelle 2mal vorhanden im PDF-Dokument, in deinem Originaldokument jedoch nur 1mal.

Zu Punkt 1: das Sortieren entsprechend der gewünschten Reihenfolge im Array bringt nichts, denn es wird immer in der Reihenfolge exportiert wie die Tabellen vorliegen - die Kopie muss also in der richtigen Reihenfolge sein. Kopieren musst du die betreffende Tabelle ja auf jeden Fall, denn im Array diese Tabelle 2mal angeben ist nicht möglich - sie wird trotzdem nur 1mal exportiert.

Zu Punkt 2: das würde bedeutetn, dass ein PDF-Dokument erstellt und dieses (bereits vorhande) anschließend um weitere Seiten ergänzt werden soll - mir ist keine Möglichkeit bekannt.

Bis später, Karin

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Karin,

die Problematik dabei ist, dass genau das zu kopierende Tabellenblatt bei Aktivierung (was beim Kopieren inkludiert ist) ein Makro aufruft, das abarbeitet und dann sich selbst wieder aktiviert. Wenn ich nun die Kopie selektiere, wird wieder das (mitkopierte) Makro ausgeführt und selektiert danach wieder das Originalblatt. Ein Teufelskreis...!

Ich habe es letztendlich aber hinbekommen, indem ich einen CALL-Aufruf in die Tabelle verschoben habe, so dass es schlussendlich funktionierte.

Deine Idee der Kopie war also grundsätzlich die beste Variante.

Grüße

Peter
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Peter,

schön dass du das Problem lösen konntest.

Ich kenne deinen Code zwar nicht, aber mal als Hinweis: man kann so etwas generell umgehen, indem man in einem Standardmodul eine Public-Variable deklariert und diese Variable beim Kopieren der Tabelle auf True setzt. Im Activate-Ereignis der Tabelle (ich nehme an das meinst du mit "die Kopie selektieren") schreibst du den Code dann so, dass er nur ausgeführt wird, wenn die Variable False ist - z.B.:

Code in einem Standardmodul:

Option Explicit
Public blnNicht As Boolean

' Tabelle 2 wird kopiert an 6. Position
Sub Kopieren()
    blnNicht = True
    Worksheets(2).Copy after:=Worksheets(5)
End Sub

Und Code im Codemodul der Tabelle 2

Option Explicit

Private Sub Worksheet_Activate()
    If blnNicht = False Then Worksheets(2).Select
    blnNicht = False
End Sub


Bis später, Karin

...