ausgewählte Seiten mit CheckBox drucken

Moderator: ModerationP

ausgewählte Seiten mit CheckBox drucken

Beitragvon Hartmut F. » 12. Dez 2020, 12:43

Hallo liebe Powerpointgemeinde.

ich habe folgende Herausforderung:
Ich habe eine Powerpoint Onlinepräsentation mit 25 Seiten erstellt. Nun möchte ich das am Ende nur die Seiten als pdf-Datei gedruckt werden wo ich vorher in einem Kontrollkästchen was sich auf jeder Seite befindet ein Häckchen gesetzt habe.
Auf der letzten Seite möchte ich einen Button erstellen der den Druck auslöst.
Das ganze wird sicher nur mit einem VBA-Code möglich sein, leider ist VBA für mich ein Buch mit sieben Siegeln, wer kann mir weiterhelfen?

Viele Grüße

Hartmut
Benutzeravatar
Hartmut F.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 893
Registriert: 16. Jan 2009, 09:01
Wohnort: Peiting

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon Hartmut F. » 13. Dez 2020, 12:44

ich möchte meinen Wunsch noch etwas genauer erklären.
Wie gesagt ich habe eine umfangreiche Präsentation die ich in Onlinegesprächen laufen lasse, nun ist es so das nicht jede Seite besprochen wird und ich lediglich die Seiten drucken möchte die besprochen wurden.
Dazu möchte ich diese Seiten in irgendeiner Form markieren (mir fiel dazu das Kontrollkästchen ein), auf den letzten Seite möchte ich dann den Druck mit einem entsprechenden Button auslösen.

Viele Grüße

Hartmut
Benutzeravatar
Hartmut F.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 893
Registriert: 16. Jan 2009, 09:01
Wohnort: Peiting

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon DerHoepp » 14. Dez 2020, 15:15

Moin,

hast du's schon mit einfachem ein-und-ausblenden von Folien oder der zielgruppenorientierten Präsentation ausprobiert? Das exportieren als PDF sollte die ausgeblendeten Folien entsprechend ignorieren.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9722
Registriert: 14. Mai 2013, 11:08

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon HKindler » 14. Dez 2020, 16:35

Hi,

nun ja, man kann auch die einzelnen Folien selektieren (mit Strg anklicken) und dann nur diese Drucken/Exportieren.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6305
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon Hartmut F. » 15. Dez 2020, 10:56

Hallo,

ich danke euch für die Info´s. Mein Problem ist das die Gesamtpräsentation ca. 40 Seiten umfasst aber je nach Präsentation nur ein Teil der Seiten gedruckt werden soll.
Helmut deinen Tipp habe ich so verstanden; während der Präsentation klicke ich mit Strg. auf die Folien die dann später gedruckt werden sollen, im Anschluss kann ich dann die angeklickten Folien mit Drucken/Exportieren als pdf drucken.
Ich habe das versucht, bei mir werden aber dennoch alle Folien gedruckt und nicht nur die die ich mit Strg angeklickt habe.

Was habe ich falsch verstanden oder gemacht?

Gruß

Hartmut
Benutzeravatar
Hartmut F.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 893
Registriert: 16. Jan 2009, 09:01
Wohnort: Peiting

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon HKindler » 15. Dez 2020, 14:14

Hi,

da hast du mich wohl falsch verstanden. In der Normalansicht oder der Gliederungsansicht oder der Foliensortierung hast du kleine Miniaturansichten der einzelnen Seiten. Dort kannst du diejenige aussuchen, die du drucken willst. Und dann gehst du auf Drucken und wählst dort "Auswahl drucken". Das ist es, was ich gemeint habe. Eine andere Möglichkeit neben dieser und der vom Hoepp genannten ist mir nicht bekannt. Das müsstest du dann schon selbst in VBA programmieren. Ich selbst sehe darin aber keinen Sinn, da man ja .d.R. weiß, welche Folien man zeigen will. Also kann man die überflüssigen auch vorher ausblenden und dann drucken.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6305
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon DerHoepp » 15. Dez 2020, 15:41

Moinsen,

wenn es denn unbedingt eine Lösung zum Zeitpunkt der Bildschirmpräsentation sein soll, würde ich auf einzelne CheckBoxen auf den Folien verzichten. Die müssten alle mit einem eigenen CodeBehind versehen werden. Eine Lösung mit einer eigenen CheckBox-Klasse scheidet aus, weil Powerpoint keine Events zur verfügung stellt, mit denen die Klassen zur Laufzeit initialisiert werden könnten. Stattdessen würde ich ein Steuerelement auf den Folienmaster bringen. Dieses ist dann in allen Folien automatisch vorhanden. Eine Checkbox macht dann natürlich nicht mehr viel sinn, weil sich die .Checked-Eigenschaft eben auf allen Folien gleich zeigen würde. Ich habe daher ein Label-Objekt verwendet.
Der Kern des Programms liegt darin, dass die zu druckenden Slides in einer Collection aufgenommen werden, welche nachher über eine Public Sub in die Druckoptionen übertragen werden. Im Codebehind zum SlideMaster steht also:
Code: Alles auswählen
Option Explicit

Private mSlidesToPrint As Collection

Public Sub PrintSlides()
    Debug.Print "printslides"
    Dim sld As Slide
    ActivePresentation.PrintOptions.Ranges.ClearAll
    ActivePresentation.PrintOptions.RangeType = ppPrintSlideRange
    For Each sld In mSlidesToPrint
        ActivePresentation.PrintOptions.Ranges.Add sld.SlideIndex, sld.SlideIndex
        Debug.Print sld.SlideIndex & " - " & sld.SlideID & " - " & sld.SlideNumber
    Next sld
End Sub

Private Sub Label1_Click()
    doMark
End Sub

Private Sub doMark()
    If mSlidesToPrint Is Nothing Then Set mSlidesToPrint = New Collection
    Dim tmpSld As Slide
    On Error Resume Next
        Set tmpSld = mSlidesToPrint(Application.SlideShowWindows(1).View.Slide.Name)
    On Error GoTo 0
    If tmpSld Is Nothing Then
        mSlidesToPrint.Add Application.SlideShowWindows(1).View.Slide, Application.SlideShowWindows(1).View.Slide.Name
    Else
        mSlidesToPrint.Remove Application.SlideShowWindows(1).View.Slide.Name
    End If
End Sub


Wichtig ist noch, dass du einen Trigger findest, die Public sub PrintSlides() auch aufzurufen. Ich hatte es zunächst über das Application_SlideShowEnd-Event ausprobiert, aber das feuert nur, wenn vorher auch das Application_SlideShowBegin-Event verarbeitet wurde. Das jedoch lässt sich nicht abfangen, da die Präsentation schon läuft, bevor die Events der Application-Klasse sich überhaupt abfangen lassen. Du könntest natürlich alternativ das Application_SlideShowNextSlide()-Event abfangen, und auf die angezeigte Slide reagieren und die Druckvorbereitung beim Anzeigen der letzten Folie starten. Das war mir aber für ein simples Beispiel ein bisschen zu viel Tipp-arbeit, die ich lieber dir überlasse. Ich hab stattdessen einfach einen Commandbutton auf die letzte Folie gelegt und rufe darüber die PrintSlides()-Methode aus dem SlideMaster-Objekt auf:
Code: Alles auswählen
Option Explicit

Private Sub CommandButton1_Click()
    SlideMaster.PrintSlides
End Sub


Weil ja der Haken der Checkbox wegfällt, kannst du alternativ auf jedem Slideobjekt zum beispiel ein kleines Shapeobjekt platzieren, dessen Fill.ForeColor du mit einem einfachen FlipFlop zwischen zwei Farbwerten hin und herschaltest (oder du änderst den Inhalt eines quadratischen Textfelds auf einen angezeigten Haken). Dabei solltest du darauf achten, dass das Shapeobjekt auf allen Slides den gleichen Namen hat, um es zuverlässig ansprechen zu können.

Wie du siehst, gar nicht so wild wenn man sich erstmal eingearbeitet hat.

Viele Grüße
derHöpp

[PS] Mir fällt grad noch ein, der visuelle Marker je Folie würde persistent gespeichert, du müsstest also noch eine methode erdenken, die den Marker zu einem gegebenen Ereignis zurücksetzt. Ähnlich verhält es sich mit der mSlidesToPrint-Collection, die bleibt stabil, bis die Präsentation geschlossen wird, oder du den Laufzeitspeicher im VB-Editor zurücksetzt.

[PS2] Das funktioniert natürlich nur auf einer lokalen Powerpoint-Installation, bei der die Makros zugelassen sind. Für Onlinepräsentationen müsstest du also deinen Bildschirm teilen und keine echte Onlinepräsentation von office-online oder Prezi verwenden.
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9722
Registriert: 14. Mai 2013, 11:08

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon Hartmut F. » 15. Dez 2020, 16:57

Hallo Helmut,

vielen Dank, jetzt habe ich es verstanden. Das Problem besteht leider darin das es sich erst während der Präsentation entscheidet welche Folien später gedruckt werden müssen, es kann also sein das bei einer Präsentation andere Folien gedruckt werden als bei der nächsten.

Hallo Höpp,

na das ist ja mal ein Pfund von dir :P . Nun sprichst du einigen Dinge an wo ich noch keine richtige Ahnung habe, ich werde mich mit deinen Informationen erst einmal intensiver beschäftigen müssen. Es kann also sein das ich das ein oder andere Mal noch auf dich zukommen müsste und würde mich freuen wenn ich dir dabei nicht zu sehr auf die Nerven gehen würde.
Bis dahin erst einmal vielen Dank an euch Beide.

Gruß

Hartmut
Benutzeravatar
Hartmut F.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 893
Registriert: 16. Jan 2009, 09:01
Wohnort: Peiting

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon Hartmut F. » 05. Jan 2021, 17:01

Hallo Höpp,

wie schon angedeutet bräuchte ich noch einmal deine Hilfe bezgl. des Druckens im Präsentationsmodus. In der Anlage füge ich eine abgespeckte Version bei (ich musste die Datei aber in pptx abspeichern). Nach drücken auf dem Druck Button bekomme ich eine Fehlermeldung. Ich habe versucht deine Lösung mit den Textfeldern umzusetzen, wo bei mir die Lösung mit dem Shapeobjekt sehr gut gefällt, ich weiß aber nicht wie ich das umsetzen muss.

Es wäre super wenn du dir das einmal anschauen könntest und mir bei der Umsetzung behilflich bist.

Viele Grüße

Hartmut
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Hartmut F.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 893
Registriert: 16. Jan 2009, 09:01
Wohnort: Peiting

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon DerHoepp » 05. Jan 2021, 21:16

Moin,

stelle bitte noch deinen Code als txt Dateien oder in Codetags hier zur Verfügung. Warum ist im Folienmaster kein Steuerelement? oder gehen die nur bei Speicherung als pptx verloren?

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9722
Registriert: 14. Mai 2013, 11:08

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon Hartmut F. » 06. Jan 2021, 11:54

Sorry,

ja die Steuerelemente gehen durch die Speicherung als pptx verloren, ich habe sie nun als ppt angehängt da müssten die Elemente vorhanden sein.

Gruß

Hartmut
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Hartmut F.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 893
Registriert: 16. Jan 2009, 09:01
Wohnort: Peiting

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon DerHoepp » 06. Jan 2021, 14:49

Hallo noch einmal,

wenn du den Code noch als Text zur Verfügung stellst, würd ich ihn mir auch anschauen :) Dateien mit Code lässt meine Firewall nicht durch.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9722
Registriert: 14. Mai 2013, 11:08

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon Hartmut F. » 06. Jan 2021, 15:28

Hallo,

hier nun die Codes.

Im Modul 1 steht:

Option Explicit

Private mSlidesToPrint As Collection

Public Sub PrintSlides()
Debug.Print "printslides"
Dim sld As Slide
ActivePresentation.PrintOptions.Ranges.ClearAll
ActivePresentation.PrintOptions.RangeType = ppPrintSlideRange
For Each sld In mSlidesToPrint
ActivePresentation.PrintOptions.Ranges.Add sld.SlideIndex, sld.SlideIndex
Debug.Print sld.SlideIndex & " - " & sld.SlideID & " - " & sld.SlideNumber
Next sld
End Sub

Private Sub Label1_Click()
doMark
End Sub

Private Sub doMark()
If mSlidesToPrint Is Nothing Then Set mSlidesToPrint = New Collection
Dim tmpSld As Slide
On Error Resume Next
Set tmpSld = mSlidesToPrint(Application.SlideShowWindows(1).View.Slide.Name)
On Error GoTo 0
If tmpSld Is Nothing Then
mSlidesToPrint.Add Application.SlideShowWindows(1).View.Slide, Application.SlideShowWindows(1).View.Slide.Name
Else
mSlidesToPrint.Remove Application.SlideShowWindows(1).View.Slide.Name
End If
End Sub

In den einzelnen Slide steht immer:

Private Sub TextBox1_Change()

End Sub

Danke dir schon einmal im Voraus.

Gruß

Hartmut
Benutzeravatar
Hartmut F.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 893
Registriert: 16. Jan 2009, 09:01
Wohnort: Peiting

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon DerHoepp » 06. Jan 2021, 23:34

Hi,

und im Modul zum Folienmaster? Und was soll der Eventhandler für Label1 in einem Allgemeinen Modul? in allgemeinen Modulen kannst du nicht auf Events reagieren. Die Collection darf auch nicht Private sein, wenn du sie zusammen mit den PrintSlides und DoMark Subs in einem allgemeinen Modul unterbringen willst.

Viele Grüße
derHöpp

PS: Beim nächsten mal bitte mit Einrückungen im Code-Tab
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9722
Registriert: 14. Mai 2013, 11:08

Re: ausgewählte Seiten mit CheckBox drucken

Beitragvon DerHoepp » 08. Jan 2021, 21:26

Guten Abend,

per PN kam eben die Frage, wo denn das Code-Behind des Folienmasters zu finden ist. Wenn du ein Steuerelement in den Folienmaster einfügst, und darauf Doppelklickst, sollte sich direkt darauf der VB-Editor öffnen und automatisch das "SlideMaster" Objekt anzeigen. In der Projektstruktur taucht dies dann ebenfalls auf. Den Teil dieses Objekts, in den du Code eintragen kannst (also das Codefenster im VB-Editor) habe ich Codebehind genannt.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9722
Registriert: 14. Mai 2013, 11:08

Nächste

Zurück zu PowerPoint Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast