Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
388to392
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
388to392
388to392
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

OLE Objekt bearbeiten

OLE Objekt bearbeiten
24.02.2004 19:12:59
Olsen
Hallo!
Ich möchte ein OLE-Objekt in Excel einbinden (über "Einfügen"-"Objekt"). Wenn ich z.B. eine PowerPoint-Präsentation einfüge, wie kann ich es über VBA ansprechen. Ist es möglich, dieses Objekt zu bearbeiten, ggf. unter einem best. Namen abzuspeichern?
Ich weiss keinen Rat mehr, wäre mir aber sehr wichtig....
Danke für gute Tipps!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OLE Objekt bearbeiten
24.02.2004 22:20:04
Dieter Klemke
Hallo Olsen,
was hast du mit der eingefügten PowerPoint-Präsentation in Excel vor? Was willst du dort per VBA bearbeiten? Gespeichert wird das Objekt zusammen mit der Arbeitsmappe.
Ansprechen kannst du es mit
Dim ws As Worksheet
Dim ole As OLEObject

Set ws = ThisWorkbook.Worksheets(1)
Set ole = ws.OLEObjects(1)
MsgBox ole.Name
MfG
Dieter
AW: OLE Objekt bearbeiten
25.02.2004 11:25:27
Olsen
Ich möchte Diagramme in die PowerPoint-Datei kopieren und diese dann zeigen.
Vorteil wäre, das ich die datei mit abspeichern kann, und die richtige PowerPoint-Vorlage nicht mit der Excel-Datei versenden muss.
Noch eine Frage dazu:
Nach
ole = ws.OLEObjects(1)
ist es dann möglich, diesem OLEObjekt die "Eigenschaft" PowerPoint-Datei zuzuweisen, damit ich die gleichen Befehle geben kann wie bei z.B.
Set PPT = CreateObject("powerpoint.application")
Set pptfile = .presentations(pptFilename)
pptfile.slides(1).Shapes(1).Copy
etc.

Danke für die Hilfe!
Markus
Anzeige
AW: OLE Objekt bearbeiten
25.02.2004 18:23:29
Dieter Klemke
Hallo Markus,
ich denke, dass das bisherige Vorgehen der falsche Weg ist.
Du kannst direkt von Excel aus PowerPoint öffnen und dort eine Präsentation erzeugen, Excel-Diagramme hineinkopieren und dann die PowerPoint-Präsentation unter einem Namen deiner Wahl abspeichern.
Ein einfaches Beispiel könnte z.B. so aussehen:

Sub Chart_nach_PowerPoint()
Dim ppApp As PowerPoint.Application
Dim pr As PowerPoint.Presentation
Dim sl As PowerPoint.Slide
Dim sr As PowerPoint.ShapeRange
Dim ws As Worksheet
Set ppApp = CreateObject(class:="PowerPoint.Application")
ppApp.Visible = True
Set pr = ppApp.Presentations.Add
Set sl = pr.Slides.Add(1, ppLayoutBlank)
Set ws = ThisWorkbook.Worksheets(1)
ws.ChartObjects(1).Copy
Set sr = sl.Shapes.Paste
' Positionierung der eingefügten Grafik
sr.Left = 12.3
sr.Top = 3.7
pr.SaveAs Filename:=ThisWorkbook.Path & "\ExcelDiagramm.ppt"
ppApp.Quit
Set ppApp = Nothing
End Sub

Du musst im VBA-Editor einen Verweis auf PowerPoint setzen.
MfG
Dieter
Anzeige
AW: OLE Objekt bearbeiten
25.02.2004 19:34:26
Olsen
Hallo Dieter,
vielen Dank für Deine Mühe!
Deinen beschriebenen Weg finde ich zwar gut, nur passt er in meinem Fall nicht, weil ich die Excel-Datei alleine verschicken will, aber ein vorgegebenes PowerPoint-Template verwenden muss.
Ich bin auch schon weitergekommen mit meinem Problem, so dass sich sowohl in Deiner Lösung als auch in meiner Teillösung ein grosses Problem ergibt:
Wie kann ich den Verweis auf das Objektmodell (je nach PowerPoint- bzw. Office-Version) per Makro automatisch setzen lassen?
Vielen Dank & Gruß
Markus
AW: OLE Objekt bearbeiten
25.02.2004 21:47:07
Dieter Klemke
Hallo Markus,
wenn du die folgende Programm-Version verwendest, dann brauchst du keinen Verweis.
Er greift dann auf die jeweils verfügbare PowerPoint-Version zu (kann ich bei mir aber nur mit XP testen).
Du musst aber anstelle von ppLayoutBlank dann 12 schreiben, da er die pp-Konstanten nicht kennt:

Sub Chart_nach_PowerPoint_ohne_Verweis()
Dim ppApp As Object
Dim pr As Object
Dim sl As Object
Dim sr As Object
Dim ws As Worksheet
Set ppApp = CreateObject(class:="PowerPoint.Application")
ppApp.Visible = True
Set pr = ppApp.Presentations.Add
Set sl = pr.Slides.Add(1, 12)
Set ws = ThisWorkbook.Worksheets(1)
ws.ChartObjects(1).Copy
Set sr = sl.Shapes.Paste
' Positionierung der eingefügten Grafik
sr.Left = 12.3
sr.Top = 3.7
pr.SaveAs Filename:=ThisWorkbook.Path & "\ExcelDiagramm.ppt"
ppApp.Quit
Set ppApp = Nothing
End Sub

MfG
Dieter
Anzeige
AW: OLE Objekt bearbeiten
27.02.2004 13:21:54
Olsen
Hallo Dieter,
vielen Dank für den Code!
Ich habe auch daran weitergebastelt, und bin zum fast selben Ergebnis gekommen ;)
Einziges Problem: Ich kann die PowerPoint-Datei nicht in die Excel-Datei importieren, sondern müsste sie in PowerPoint "nachbauen", damit das Aussehen stimmt.
Dann gibt es wohl keine Möglichkeit, dem Code mitzuteilen, das das OleObjekt, welches sich in dem Tabellenblatt befindet ein PowerPoint-Objekt ist, ohne den Verweis in der Objektbibliothek zu setzen. Mit Verweis habe ich es geschafft:

Sub test()
Dim pptObjekt As PowerPoint.Application
Set pptObjekt = ThisWorkbook.Worksheets(ws).OLEObjects(1).Object
With pptObjekt
.Slides(1).Shapes(1).TextFrame.TextRange.text = "GGG"
.SaveAs ThisWorkbook.Path & "\test.ppt"
End With
End Sub

Fält Dir dazu noch was ein?
Gruß
Markus
Anzeige
AW: OLE Objekt bearbeiten
28.02.2004 13:26:29
Dieter Klemke
Hallo Markus,
ich bin nicht sicher, ob es dir weiterhilft, da ich dein eigentliches Anliegen wohl doch noch nicht verstanden habe, aber beim folgenden Code wird eine PowerPoint-Präsentation mit einem Excel-Chart erzeugt und diese Präsentation wird anschließend als OLEObject in die Excel-Arbeitsmappe eingefügt:

Sub Chart_nach_PowerPoint_und_zurück()
Dim datei As String
Dim ol As Object
Dim ppApp As Object
Dim pr As Object
Dim sl As Object
Dim sr As Object
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ppApp = CreateObject(class:="PowerPoint.Application")
ppApp.Visible = True
Set pr = ppApp.Presentations.Add
Set sl = pr.Slides.Add(1, 12)
Set ws1 = ThisWorkbook.Worksheets(1)
ws1.ChartObjects(1).Copy
Set sr = sl.Shapes.Paste
' Positionierung der eingefügten Grafik
sr.Left = 12.3
sr.Top = 3.7
datei = ThisWorkbook.Path & "\ExcelDiagramm.ppt"
pr.SaveAs Filename:=datei
ppApp.Quit
' PowerPoint-Datei nach Excel kopieren
Set ws2 = ThisWorkbook.Worksheets(2)
Set ol = ws2.OLEObjects.Add(Filename:=datei, _
Link:=False, _
DisplayAsIcon:=False)
' Positionierung der eingefügten Präsentation
ol.Left = 20
ol.Top = 10
End Sub

Das ganze funktioniert, ohne dass ein Verweis auf PowerPoint gesetzt ist.
MfG
Dieter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige