none
Powerpoint 2010 Notizfenster mittels VBA befüllen mit Daten aus Excel RRS feed

  • Frage

  • Guten Tag allerseits Smile

    Mir wurde die glorreiche Aufgabe übertragen aus Excel, Daten an Powerpoint 2010 zu übertragen ABER ins Notizfenster.

    Nur leider ist/wurde in PP2010 die Makro aufzeichnen Funktion nicht integriert und ich habe auch durch Rumprobieren keinerlei Plan, wie ich mittels VBA, Daten in das Slide Notizfenster übertragen kann. Es sind Textdaten aus Excelzellen.


    Weiß jemand Rat????

    Vielen Dank im Voraus und LG
    Chatta

    Donnerstag, 30. Juni 2011 13:01

Antworten

  • Hallo Chattanooga,

    komischerweise ist die Notiz ein Shape unter NotesPage Objekt. Das NotesPage Objekt enthält normalerweise mehrere Arten von Shapes, man soll nach Objektnamen suchen: „Notisplatzhalter“

    Von Excel Daten zu lesen, ist nicht so kompliziert: man erstellt eine neue Excel Instanz, öffnet die gewünschte Excel Datei und liest halt die Strings für die Notizen.

    Hier ist ein Beispiel, aussagekräftig hoffe ich:

     

    Sub InsertNotesFromExcel()
     Dim objExcel As Excel.Application
     Dim objExcelFile As Excel.Workbook
     Dim objSlide As Slide
     Dim strNote As String
     Dim objShape As PowerPoint.Shape
     
     'eine neue Excelinstanz erzeugen
     Set objExcel = New Excel.Application
     'die Exceldatei oeffnen
     Set objExcelFile = objExcel.Workbooks.Open("C:\Users\bogdan\Desktop\Threads\VBA - CreateNoteInPowerPoint\TextForNotes.xlsx")
     
     i = 1
     'jetzt werde ich fuer jede Seite eine Notiz hinzufuegen
     For Each objSlide In ActivePresentation.Slides
     'erstmal die Notiz aus Excel Datei lesen. Sagen wir mal
     'ist die erste Notiz in der ersten Zelle (1,1)
     'die zweite Notiz in der zweiten Zelle (2,1)
     'usw
     strNote = CStr(objExcelFile.Worksheets(1).Cells(i, 1).Value)
     'das Shape fuer die Notiz rausfinden
     For Each objShape In objSlide.NotesPage.Shapes
     'das Shape heisst normalerweise 'Notizplatzhalter'
     'sicherheitshalber pruefe ich nach Wort 'notiz' im Name rein
     If objShape.HasTextFrame And InStr(1, LCase(objShape.Name), "notiz") > 0 Then
     'gefunden! Schreibe ich die Notiz rein
     objShape.TextFrame.TextRange.Text = strNote
     End If
     Next objShape
     'fuer die naechste Notiz lesen
     i = i + 1
     Next objSlide
     
     'die Exceldatei schliessen, ohne sie zu speichern
     objExcelFile.Close False
     Set objExcelFile = Nothing
     'Excelinstanz schliessen
     objExcel.Quit
     Set objExcel = Nothing
     
    End Sub
    

    Grüße,

    Bogdan




    Freitag, 1. Juli 2011 11:11

Alle Antworten

  • Hallo Chattanooga,

    komischerweise ist die Notiz ein Shape unter NotesPage Objekt. Das NotesPage Objekt enthält normalerweise mehrere Arten von Shapes, man soll nach Objektnamen suchen: „Notisplatzhalter“

    Von Excel Daten zu lesen, ist nicht so kompliziert: man erstellt eine neue Excel Instanz, öffnet die gewünschte Excel Datei und liest halt die Strings für die Notizen.

    Hier ist ein Beispiel, aussagekräftig hoffe ich:

     

    Sub InsertNotesFromExcel()
     Dim objExcel As Excel.Application
     Dim objExcelFile As Excel.Workbook
     Dim objSlide As Slide
     Dim strNote As String
     Dim objShape As PowerPoint.Shape
     
     'eine neue Excelinstanz erzeugen
     Set objExcel = New Excel.Application
     'die Exceldatei oeffnen
     Set objExcelFile = objExcel.Workbooks.Open("C:\Users\bogdan\Desktop\Threads\VBA - CreateNoteInPowerPoint\TextForNotes.xlsx")
     
     i = 1
     'jetzt werde ich fuer jede Seite eine Notiz hinzufuegen
     For Each objSlide In ActivePresentation.Slides
     'erstmal die Notiz aus Excel Datei lesen. Sagen wir mal
     'ist die erste Notiz in der ersten Zelle (1,1)
     'die zweite Notiz in der zweiten Zelle (2,1)
     'usw
     strNote = CStr(objExcelFile.Worksheets(1).Cells(i, 1).Value)
     'das Shape fuer die Notiz rausfinden
     For Each objShape In objSlide.NotesPage.Shapes
     'das Shape heisst normalerweise 'Notizplatzhalter'
     'sicherheitshalber pruefe ich nach Wort 'notiz' im Name rein
     If objShape.HasTextFrame And InStr(1, LCase(objShape.Name), "notiz") > 0 Then
     'gefunden! Schreibe ich die Notiz rein
     objShape.TextFrame.TextRange.Text = strNote
     End If
     Next objShape
     'fuer die naechste Notiz lesen
     i = i + 1
     Next objSlide
     
     'die Exceldatei schliessen, ohne sie zu speichern
     objExcelFile.Close False
     Set objExcelFile = Nothing
     'Excelinstanz schliessen
     objExcel.Quit
     Set objExcel = Nothing
     
    End Sub
    

    Grüße,

    Bogdan




    Freitag, 1. Juli 2011 11:11
  • Vielen Dank,

     

    werde ich gleich mal ausprobieren!

     

    Lieber Gruß

    Chatta

    Montag, 4. Juli 2011 07:36
  • Hallo Chattanooga,

    hat es geklappt?

    Danke und Gruesse,

    Bogdan

    Donnerstag, 7. Juli 2011 07:22
  • Hallo Chattanooga,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Freitag, 15. Juli 2011 07:13
    Moderator