Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1288to1292
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel-Diagramm in neue PP-Folie

Excel-Diagramm in neue PP-Folie
15.12.2012 13:50:31
Marion
Hallo zusammen,
ich habe einen Button in einer Excel-Datei mit dem ich ein auf dem Tabellenblatt befindliches Diagramm kopiere und in eine Powerpoint-Datei einfüge.
Diese PP-Datei hat ein von mir erstelltes Layout.
Nachdem das Diagramm eingefügt ist, wird noch eine Tabelle (A1:D5) kopiert und in der PP-Datei unter dem Diagramm eingefügt. Die Tabelle hat keinen direkten Bezug zu dem Diagramm also muss auf diesem Weg kopiert werden.
In der PP-Datei habe ich Makros geschrieben um das Diagramm und die Tabelle richtig zu positionieren.
Abhängig von einem angeklickten OptionButton wird dessen "Caption" als Überschrift in der PP-Datei eingefügt (-->"Titel" in meinem Code)
Nun das Problem:
Es funktioniert zwar alles, aber wenn ich das Diagramm oder die Tabelle ändere, wird beim Button-Klick die gleiche Datei nochmals geöffnet.
Ich möchte aber das er das neue Diagramm in die bereits geöffnete PP-Datei auf die nächste Folie einfügt. Dieser Prozess kann öfters vorkommen, d.h. es müsste wahrsch. eine Schleife integriert werden?!
Hier mein bisheriger Code:

Sub Excel_nach_PP()
Dim PP As powerpoint.Application
Dim pPres As powerpoint.Presentation
Dim Pfad As String
Dim Dateiname as String
Dim Titel As String
If ActiveSheet.OptionButton1.Value = True Then
Titel = ActiveSheet.OptionButton1.Caption
ElseIf ActiveSheet.OptionButton2.Value = True Then
Titel = ActiveSheet.OptionButton2.Caption
ElseIf ActiveSheet.OptionButton3.Value = True Then
Titel = ActiveSheet.OptionButton3.Caption
End If
Dateiname = Name der PP-Datei
Pfad = Netzwerkpfad auf die leere PP-Datei mit vorgefertigtem Layout
Set PP = CreateObject("PowerPoint.Application")
PP.Visible = True
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
With PP
.Presentations.Open Pfad, msoTrue
.ActiveWindow.Selection.SlideRange.Shapes("Textfeld 1").Select    '=Überschrift in PP-Folie
.ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Text = Titel '=Inhalt Überschrift
.ActiveWindow.Selection.Unselect
.Run Dateiname & "!DiagrammEinfuegen"
End With
PP.Visible = msoTrue                             'Tabelle einfügen
Set pPres = PP.ActivePresentation
Sheets("Mitarbeiter").Range("A1:D5").Copy
PP.Run Dateiname & "!TabelleEinfuegen"
Application.CutCopyMode = False
End Sub
Für Rückmeldungen schon einmal im Voraus herzlichen DANK!!!
Liebe Grüße
Marion

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Diagramm in neue PP-Folie
17.12.2012 01:02:25
fcs
Hallo Marion,
du hättest deine Frage nicht erneut stellen müssen. Es hätte gereicht, wenn du bei deiner Nachfrage bei der vorherigen Frage die entsprechende Checkbox markiert hättest, dass die Frage noch offen bleiben soll.
Eine Basis-Idee zur Lösung deines Problems hätte ich schon.
Im Excelmakro müßte man eine Inputbox einbauen, um festzulegen, ob man eine neue PP-Datei erstellen will oder in einer bestehenden PP-Datei eine Folie anfügen.
Entsprechend muss dann der weitere Ablauf gesteuert werden.
Ich hab mal versucht das so umsetzen.
Leider hab ich es nicht geschafft, per VBA von Excel aus so auf eine in PP schon geöffnete Präsentation zuzugreifen, dass die PP-Makros korrekt gestartet werden.
Ich hab es nur hinbekommen, wenn ich alle Makrofunktionen inklusive des Einfügens und Positionierens von Diagramm/Tabellenausschnitt direkt im Excelmakro integriere. Die PP-Datei, an die eine neue Folie angehängt werden soll, muss vor dem Starten des Makros geschlossen sein, sie wird im Makro in einem Dialogfenster ausgewählt.
Im Makro muss du ggf. die Zeilen anpassen, in denen Diagramm/Tabellenausschnitt in PP eingefügt werden und natürlich den Pfad der Mustervorlage und die Positionen, an die das Diagramm/der Tabellenausschnitt auf der Folie verschoben werden sollen.
Gruß
Franz
Option Explicit
'Hinweis
'In Excel muss im VBA-Editor für die Datei unter Extras--Verweise der Verweis auf die
' Microsoft Powerpoint x.y ObjectLibrary
'aktiviert werden.
Sub Excel_nach_PP_neu()
Dim PP As PowerPoint.Application
Dim Pfad As String
Dim objSlide As PowerPoint.Slide
Dim objShape As PowerPoint.Shape
Dim objPraes As PowerPoint.Presentation
Dim Titel As String
If ActiveSheet.OptionButton1.Value = True Then
Titel = ActiveSheet.OptionButton1.Caption
ElseIf ActiveSheet.OptionButton2.Value = True Then
Titel = ActiveSheet.OptionButton2.Caption
ElseIf ActiveSheet.OptionButton3.Value = True Then
Titel = ActiveSheet.OptionButton3.Caption
End If
Select Case Application.InputBox(Prompt:="1 = neue PP-Datei erstellen" & vbLf _
& "2 = Diagramm auf neuer Folie in PP-Päsentation anfügen", _
Title:="Diagramm nach PowerPoint kopieren", _
Default:=2, Type:=1)
Case 0
'do nothing
GoTo Beenden
Case 1
'Diagramm in Mustervorlage kopieren
'Netzwerkpfad auf die leere PP-Datei mit vorgefertigtem Layout"
Pfad = "C:\Users\Public\Test\PP_Test\myPP_Muster.pptm"          'anpassen !!!
Set PP = CreateObject("PowerPoint.Application")
PP.Visible = True
With PP
Set objPraes = .Presentations.Open(Pfad, msoTrue)
End With
PP.Visible = msoTrue
Case 2
'Diagramm  in vorhandener PP-Datei in neuer Folie einfügen
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = "*.ppt*"
.Title = "Bitte PowerPoint-Datei auswählen, die bearbeitet werden soll"
If .Show = -1 Then
Pfad = .SelectedItems(1)
Else
GoTo Beenden
End If
End With
Set PP = CreateObject("PowerPoint.Application")
PP.Visible = True
With PP
Set objPraes = .Presentations.Open(Pfad)
End With
PP.Visible = msoTrue
'Letzte Folie duplizieren
Set objSlide = objPraes.Slides(objPraes.Slides.Count)
objSlide.Duplicate
Set objSlide = objPraes.Slides(objPraes.Slides.Count)
'in kopierter Folie zuletzt eingefügte Shapes löschen (Tabellenbereich _
und Diagrammbereich)
With objSlide
Set objShape = .Shapes(.Shapes.Count)
objShape.Delete
Set objShape = .Shapes(.Shapes.Count)
objShape.Delete
End With
Case Else
MsgBox "Unzulässige Option ausgewählt", vbInformation + vbOKOnly, _
"Diagramm nach PowerPoint kopieren"
GoTo Beenden
End Select
'Letzte Folie in Präsentation selektieren
Set objSlide = objPraes.Slides(objPraes.Slides.Count)
objSlide.Select
'Diagrammüberschrift an Option anpassen
Set objShape = objSlide.Shapes("Textfeld 1")
objShape.TextFrame.TextRange.Text = Titel '=Inhalt Überschrift
'Diagrammbereich kopieren und positionieren
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
PP.ActiveWindow.View.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse
With objSlide
Set objShape = .Shapes(.Shapes.Count)
With objShape
.Top = 100
.Left = 50
End With
End With
'Tabellenbereich kopieren und positionieren
Sheets("Mitarbeiter").Range("A1:D5").Copy
PP.ActiveWindow.View.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse
Set objSlide = objPraes.Slides(objPraes.Slides.Count)
With objSlide
Set objShape = .Shapes(.Shapes.Count)
With objShape
.Top = 400
.Left = 50
End With
End With
Application.CutCopyMode = False
Beenden:
Set PP = Nothing: Set objPraes = Nothing
Set objSlide = Nothing: Set objShape = Nothing
End Sub

Anzeige
AW: Erledigt: Excel-Diagramm in neue PP-Folie
17.12.2012 19:34:41
Marion
Hi Franz,
vielen Dank für Deine Rückmeldung!
Deinen Vorschlag habe ich übernommen. Das geht sehr gut :)
Nochmals Dankeschön!!!
Liebe Grüße
Marion

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige