Benutzer mit den meisten Antworten
Powerpoint 2010 Notizfenster mittels VBA befüllen mit Daten aus Excel

Frage
-
Guten Tag allerseits
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
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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 12. Juli 2011 16:41
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 15. Juli 2011 07:13
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
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 12. Juli 2011 16:41
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 15. Juli 2011 07:13