durch Kontrollkästchen (PPT) eine Zelle beschriften (Excel)

Moderator: ModerationP

durch Kontrollkästchen (PPT) eine Zelle beschriften (Excel)

Beitragvon DER_Ahnungslose » 13. Okt 2020, 08:50

Hallo liebes Forum,

Ich muss ein Kontrollkästchen, welches ich in einer PowerPoint Präsentation ist, mit einer Zelle in einem Excel Dokument verbinden. Diese Zelle soll sobald das Kontrollhäkchen betätigt wird mit einem X befüllt werden.

:shock: ich hoffe einer von euch ist so lieb und hilft mir aus der patsche :mrgreen: bzw. kann mir sagen ob dies überhaupt möglich ist, oder mir eine alternative aufzeigen?

Vielen lieben dank schonmal an die, die mich retten :idea: :D

Mit freundlichen Grüßen

DER_Ahnungslose :oops:
DER_Ahnungslose
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11
Registriert: 08. Okt 2020, 15:55

Re: durch Kontrollkästchen (PPT) eine Zelle beschriften (Exc

Beitragvon DerHoepp » 14. Okt 2020, 12:14

Moin,

um was für ein Kontrollkästchen handelt es sich? Wie stehts um deine VBA-Kenntnisse? Soll die Aktualisierung bei Klick, bei Speichern, Folienwechsel, Sonstwas ausgelöst werden? Und warum willst du unbedingt ein X, wenn Zahlen doch für einen Computer viel einfacher auszuwerten sind? Und warum willst du überhaupt Powerpoint dafür verwenden?

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

Re: durch Kontrollkästchen (PPT) eine Zelle beschriften (Exc

Beitragvon DER_Ahnungslose » 19. Okt 2020, 19:18

Hey Servus,

Es handelt sich um eine normale Checkbox. Meine VBA-Kenntnisse lassen zu wünschen übrig :oops: . Es würde völlig ausreichen wenn die Aktualisierung beim nächsten Speichern erfolgt. Des X benötige ich, da das eine Vorgabe von weiter oben war :roll: . Des ganze muss durch PowerPoint erfolgen, da bestehende Dateien nicht verändert werden sollen bzw. in PowerPoint bestehen bleiben sollen. :|

Wäre super nett von dir wenn du mir helfen würdest :mrgreen:

Vielen Dank aber schonmal im Voraus.

Mit freundlichen Grüßen
DER_Ahnungslose
DER_Ahnungslose
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11
Registriert: 08. Okt 2020, 15:55

Re: durch Kontrollkästchen (PPT) eine Zelle beschriften (Exc

Beitragvon DerHoepp » 21. Okt 2020, 11:48

Moin,

hat leider etwas gedauert, aber hier mal ein Beispiel, wie ich die Sache lösen würde. Ich würde objektorientiert an die Sache gehen. das bedeutet auch, dass deine PowerpointPräsentation natürlich nicht direkt in irgendeine Datei schreibt, sondern dass deine Excel-Datei eine Methode bietet, indirekt Werte zu verarbeiten. Daher hier zunächst einmal das Codemodul der ThisWorkbook-Klasse deiner Exceldatei, die die Information verarbeiten soll:
Code: Alles auswählen
'@Folder("ExcelNativeObjects")
'Classname: ThisWorkbook
'FileName: "C:\Daten\Programmieren\VBA\Office-Loesung\DateiDieXverarbeitet.xlsm"
Option Explicit

'Function setValue
'@param("valueName"): Keyword of the Property that should be Set
'@param("value"): Value the Keyword should be set to
'@returns variant: 2-Item 0-based Array:
'           0: Boolean-Value indicating the successstatus
'           1: String - Information regarding the successstatus
Public Function setValue(valueName As String, value As Variant) As Variant
    Dim returnarr(0 To 1)
    returnarr(0) = True
    returnarr(1) = valueName & "-" & value
    Select Case valueName
        Case "EinX"
            On Error Resume Next
            Tabelle1.Cells(1, 1).value = String(-CBool(value), "X") 'converts boolean value into "X"
            If Err.Number <> 0 Then
                returnarr(0) = False
                returnarr(1) = Err.Description
                Err.Clear
            End If
            On Error GoTo 0
        Case Else
            returnarr(0) = False
            returnarr(1) = "invalid Keyword " & valueName
    End Select
    setValue = returnarr
End Function

Um das X zu setzen rufst du also die SetValue-Methode des Workbook-Objekts mit dem Schlüssel "EinX" und einem Wahrheitswert auf. Wenn noch mehr Informationen verarbeitet werden sollen, kannst du natürlich auch einfach eine Parameterklasse oder ein Dictionary übergeben. Wenn du die Information dann auch wiederherstellen willst, kannst du natürlich auch eine getValue-Function dazuprogrammieren um die benötigten Informationen wieder auszulesen. Beachte dabei aber, dass Powerpoint zu recht von sich aus keine Möglichkeit bietet auf Events zu reagieren, die nicht durch ein Steuerelement ausgelöst werden; du kannst also nicht einfach so beim Laden der Präsentation auf die gespeicherten Informationen zugreifen.

Die Umsetzung in Powerpoint bedarf eines kleinen Tricks. Da Powerpoint nicht einfach so auf die Events der von Powerpoint verwalteten Objekte reagiert, musst du mit einer Hilfsklasse arbeiten, die die Application-Events verarbeiten kann. Ein Objekt der Hilfsklasse verankerst du dann als Public Member irgendeiner der Slideobjekte (Public deshalb, damit im Falle von mehreren Steuerelementen jedes Steuerelement das Objekt initialisieren kann (denn nur Steuerelement-Events können als Trigger für die Erstellung eines Objekts aus einer Klassendefinition herangezogen werden)). Die folgende Hilfsklasse macht also letztlich deine ganze Programmlogik aus (im Beispiel ist der Zugriff auf den Wert der CheckBox hart codiert. Je nach Anforderung würde ich auch das kapseln). Ein Objekt der Klasse kann auf Application-Events, wie zum Beispiel das Speichern einer Präsentation reagieren. Damit du sicher bist, dass du auf den Speichervorgang der richtigen Präsentation reagierst erfolgt noch ein Abgleich der Namen. Anschließend wird mit Latebinding und GetObject() die Methode des Excel-Workbook-Objekts aufgerufen und der Wert der Checkbox als Parameter übergeben. Weil GetObject() dazu neigt, einmal geöffnete Dateien in Excel auszublenden, wird vor dem Schließen noch das Fenster sichtbar gemacht:
Code: Alles auswählen
'@Folder("Classes")
'ClassName: ApplicationEventHandler

Option Explicit

Private WithEvents mAppl As Application
Private mPres As Presentation

Private Sub mAppl_PresentationSave(ByVal pres As Presentation)
    Debug.Print "SaveEvent"
    Dim success As Variant
    If pres.Name = mPres.Name Then
   
        With GetObject("C:\Daten\Programmieren\VBA\Office-Loesung\DateiDieXverarbeitet.xlsm")
            success = .SetValue("EinX", mPres.Slides(1).Shapes("CheckBox1").OLEFormat.Object.Value)
            .Windows(1).Visible = True
            .Close True
        End With
    End If
   
    If Not success(0) Then
        MsgBox "Da hat was nicht funktioniert." & " - " & success(1)
    Else
        Debug.Print success(1)
    End If
       
End Sub

'Public Sub setPres
'@param("pres"): Presentation.Object containing the Presentation the Save-Event-Listener should monitor
Public Sub setPres(pres As Presentation)
    Set mAppl = pres.Application
    Set mPres = pres
End Sub


Damit ein Objekt der Klasse überhaupt reagieren kann, musst du es natürlich -wie erwähnt- instanzieren. Die Hilfsklasse ist in meinem Beispiel ein Objekt des Slide1-Objekts, die über eine Public/Friend-Sub initialisiert wird. Das ermöglicht es, dass das Objekt nur einmal vorgehalten wird und aus jedem anderen SlideObjekt heraus initialisiert werden kann:
Code: Alles auswählen
'@Folder("PowerpointNativeObjects")
'ClassName: Slide1
Option Explicit

Private mAppHandler As ApplicationEventHandler

Private Sub CheckBox1_Click()
    Debug.Print "clicked"
    Me.HandleApp
End Sub

'Public Sub HandleApp
'@param(void)
'@description: Can be called from any module inside the project to initialize an ApplicationEventHandler
Friend Sub HandleApp()
    If mAppHandler Is Nothing Then
        Set mAppHandler = New ApplicationEventHandler
        mAppHandler.setPres Me.Parent
    End If
End Sub


Ich hoffe, ich konnte ein bisschen weiterhelfen, bezweifle aber, dass das Prinzip mit wenigen VBA-Kenntnissen nachzuvollziehen ist.

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

Re: durch Kontrollkästchen (PPT) eine Zelle beschriften (Exc

Beitragvon DER_Ahnungslose » 21. Okt 2020, 13:31

Hoepp du bist der absolute Wahnsinn : :o
Ich bin dir soooooo dankbar.

Jetzt hoff ich nurnoch das ich es auch hinbekomme es zum laufen zu bringen :mrgreen:

Vielen vielen lieben dank 8-)
Du hast mich gerettet :lol:

Beste Grüße

Der_Ahnungslose
DER_Ahnungslose
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11
Registriert: 08. Okt 2020, 15:55

Re: durch Kontrollkästchen (PPT) eine Zelle beschriften (Exc

Beitragvon DerHoepp » 21. Okt 2020, 15:04

Moin,

toitoitoi. Willst du vielleicht noch ein bisschen von deinem UseCase erzählen? Wozu diese Übung? Powerpoint ist die denkbar schlechteste Datenerfassungsvariante. Was soll überhaupt erfasst werden? Wie ist das Datenmodell? Wie der Workflow?
Zum erfassen von Datensätzen gibt es wesentlich effektivere Methoden, die Exceltabellen als Tabellen behandeln und nicht als Sammlung von Zellen, die irgendein Zeichen enthalten sollen.

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

Re: durch Kontrollkästchen (PPT) eine Zelle beschriften (Exc

Beitragvon chicdetector » 02. Feb 2021, 10:43

Soll die Aktualisierung bei Klick, bei Speichern, Folienwechsel, Sonstwas ausgelöst werden?
geometry dash
chicdetector
Neuling
 
Beiträge: 1
Registriert: 02. Feb 2021, 10:42


Zurück zu PowerPoint Forum (provisorisch)

Wer ist online?

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