(Kontakt)daten bei Start einer PowerPoint-Vorlage abfragen

Moderator: ModerationP

(Kontakt)daten bei Start einer PowerPoint-Vorlage abfragen

Beitragvon JensHeinz » 17. Aug 2015, 11:41

Hallo,
ich stehe vor folgender Herausforderung und möchte euch um Tipps/Hilfe bitten:
Ich möchte eine Vorlage für eine Standard-Präsentation erstellen. Darin (oder, wenn nicht möglich, in einer externen Datei) sollen Daten der möglichen Benutzer (Name, Funktion, Telefon- und Faxnummer, E-Mail-Adresse, etc.) hinterlegt sein.
Bei Öffnen der Vorlage soll dann mittels Eingabefenster gefragt werden, wer die Präsentation erstellen möchte (+ weitere Abfragen, wie Datum, Name der Präsentation, ...; dies sind aber einfache Textfelder). Nach Auswählen des Namens und Angabe der übrigen Textfelder sollen diese dann in die Präsentation eingebunden werden (die Felder Funktion, Telefon- und Faxnummer, E-Mail-Adresse, etc. sollen gemäß Name automatisch ausgefüllt werden).
Wie kann ich dies bewerkstelligen? Ich dachte schon an Userform oder InputBox, hab aber von PowerPoint zu wenige Kenntnisse :(
Habe leider auch kein Buch für solche Problemstellungen finden können...

Schon jetzt besten Dank für eure Unterstützung!

Freundliche Grüße,

Jens
JensHeinz
Neuling
 
Beiträge: 2
Registriert: 17. Aug 2015, 11:26

Re: (Kontakt)daten bei Start einer PowerPoint-Vorlage abfrag

Beitragvon JensHeinz » 21. Mär 2016, 08:17

Wow, da hab ich wohl etwas gesucht, was PowerPoint nicht kann :(
JensHeinz
Neuling
 
Beiträge: 2
Registriert: 17. Aug 2015, 11:26

Re: (Kontakt)daten bei Start einer PowerPoint-Vorlage abfrag

Beitragvon Gerrax » 26. Feb 2019, 20:37

Hi!
Userform ist schon mal das richtige Stichwort. Die Tabelle mit den Benutzerdaten kann problemlos auf der letzten Folie erfasst werden, sofern es sich um eine echte PowerPoint-Vorlage (.potm) handelt. Die Folie wird dann in der neu entstehenden Präsentation einfach gelöscht, nachdem die Daten übertragen wurden. Der Vorgang zum Einfügen der Userform ist in diesem Thread erklärt.
Sodann geht es ans „Eingemachte“: Die Namen aus der Tabelle müssen in die Listbox aufgenommen werden. Das geschieht im Initialize-Ereignis der Userform:
Code: Alles auswählen
Dim arr()
Private Sub UserForm_Initialize()
Dim anz As Long, Z As Long
anz = ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes(1).Table.Rows.Count
ReDim arr(0 To anz)
Set fall = ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes(1).Table
Z = 0
For c = 2 To fall.Rows.Count   'Überschrift und leere Zellen auslassen
    If fall.Cell(c, 1).Shape.TextFrame.HasText Then
    ListBox1.AddItem fall.Cell(c, 1).Shape.TextFrame.TextRange.Text
   
    arr(Z) = c  'Listindex mit Zeilenindex synchronisieren
    Z = Z + 1
    End If
Next c
ListBox1.Selected(0) = True    'Vorauswahl erster Eintrag

End Sub

Zu sehen ist das Userform auf der Oberfläche von PP nun aber noch nicht. Wir bleiben daher im VBA-Editor und fügen als nächstes ein Standard-Modul ein. Für die Aufruf-Prozedur genügt eine einzige Befehlszeile:

Sub UFanz() ' Startet das Userformular
UserForm1.Show
End Sub

Soll dies automatisch geschehen, muss die Vorlage über eine Verknüpfung mit dem Parameter M gestartet werden. Auszuführendes Makro ist dann UFanz. Sinnvoller dürfte es in der Regel sein, das Makro in die Symbolleiste für den Schnellzugriff zu legen und von dort manuell zu starten, dann braucht man keine Verknüpfung. Zudem wäre auf manchen Systemen zusätzlich noch der Parameter N erforderlich. Da beides aber nicht geht, berücksichtigen wir das im Klick-Ereignis der Befehlsschaltfläche und erstellen dort vorsichtshalber eine neue Präsentation, um die Vorlage nicht zu ruinieren.
Code: Alles auswählen
Private Sub CommandButton1_Click()
Dim ausf As Boolean
Dim erst As Integer   'Ersteller der Präsentation(Index)
Dim zusteller As String

If Len(TextBox1.Value) = 0 Then
MsgBox "Bitte den Titel der Präsentation angeben!"
ausf = False
TextBox1.SetFocus
Else
erst = ListBox1.ListIndex
ausf = True
End If

If ausf = True Then
'Neue Datei anlegen. Ergänzen Sie ggf. den Pfad, wo die Datei gespeichert werden soll.
ActivePresentation.SaveAs FileName:="neupräsi.pptx"
With ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes(1).Table
zusteller = "Ersteller: " & .Cell(arr(erst), 1).Shape.TextFrame.TextRange.Text & vbNewLine & _
            "Funktion: " & .Cell(arr(erst), 2).Shape.TextFrame.TextRange.Text & vbNewLine & "Datum: " & Date & vbTab & _
            "Tel.: " & .Cell(arr(erst), 3).Shape.TextFrame.TextRange.Text
End With
With ActivePresentation.Slides(1).Shapes
    .Placeholders(1).TextFrame.TextRange.Text = TextBox1.Text
    .Placeholders(2).TextFrame.TextRange.Text = zusteller
End With

ActivePresentation.Slides(ActivePresentation.Slides.Count).Delete

Unload UserForm1
Presentations("neupräsi.pptx").Save
End If

End Sub

Im Beispielcode hat die Tabelle auf der letzten Folie 3 Spalten für jeweils Name, Funktion und Telefonnummer. Die Tabelle muss natürlich als erstes Objekt (PP-Tabelle, keine Excel!) auf der Folie vorhanden sein, sonst hagelt es Fehlermeldungen. Die Titelfolie sollte leer sein. Alle Einträge der über die Listbox ausgelesenen Zeile werden in die Titelfolie geschrieben, da ich den gewünschten Zielort nicht kennen kann. Hier ist dann Eigeninitiative angesagt. Eine Demo kann hier heruntergeladen werden (die Online-App führt keine Makros aus, nach dem Herunterladen müssen die Makros erst aktiviert werden, bevor sie ausgeführt werden können).

Viel Erfolg!
Gerrax
Gerrax
 

Re: (Kontakt)daten bei Start einer PowerPoint-Vorlage abfrag

Beitragvon DerHoepp » 05. Mär 2019, 10:41

Hallo auch von mir,

vor einiger Zeit hatte ich auch mal was dazu geschrieben: viewtopic.php?f=164&t=734142#p3048992
Kurz gefasst: PowerPoint bietet dir - ohne Weiteres - keine Events an, anhand derer du eine UserForm starten könntest. Wie Gerrax schon schrieb kannst du entweder einen Startup-Parameter oder einen Button nutzen. Eine weitere Möglichkeit ist ein "verstecktes" Custom Ribbon, das dir quasi einen OnStartup-Handler ermöglicht. Allerdings nutzt das nix in Vorlagedateien.

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


Zurück zu PowerPoint Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste