PDA

Vollständige Version anzeigen : Zelle Inhalt Zuweisen


Olaf80
14.09.2011, 09:08
Aloha!
Ich versuche vergebens einer bestimmten Zelle einen Inhalt aus PowerPoint zu geben. Ausgabe über MsgBox funktioniert, nur die Zuweisung in eine bestimmte Zelle nicht.


'Makro zum Oeffnen von ppt aus einem xls Dokument

Sub pptBausteinname()

Dim oExcel As Excel.Application
Dim oPP As powerPoint.Application
Dim oPPT As powerPoint.Presentation
Dim oShp As powerPoint.Shape

Set oExcel = CreateObject("Excel.Application")
Set oPP = CreateObject("PowerPoint.Application")
oPP.Visible = True
Set oPPT = oPP.Presentations.Open("C:\Users\...)

For Each Shape In oPPT.Slides(1).Shapes
If Shape.Name = "AutoShape 7" Then
Worksheets("PhaseF0-F1").Range("C6").Value = "Autoshape 7"
End If
Next


Set oExcel = Nothing
Set oPPT = Nothing

End Sub

Olaf80
14.09.2011, 09:37
Ok habe den fehler gefunden... war nicht die vollständige Lösung. Hier Falls es jemanden Interessiert wie ein Inhalt von ppt nach xls befördert werden kann:

'Makro zum Oeffnen von ppt aus einem xls Dokument

Sub pptBausteinname()

Dim oExcel As Excel.Application
Dim oPP As powerPoint.Application
Dim oPPT As powerPoint.Presentation
Dim oShp As powerPoint.Shape

Dim Bausteinname As Object

Set oExcel = CreateObject("Excel.Application")
Set oPP = CreateObject("PowerPoint.Application")
oPP.Visible = True
Set oPPT = oPP.Presentations.Open("C:\Users\KOENIOAF\SPEED_Dokumente\Testdokument_PowerPoint.ppt")

For Each Shape In oPPT.Slides(1).Shapes
If Shape.Name = "AutoShape 7" Then
Set oShp = oPPT.Slides(1).Shapes("Autoshape 7")
Set Bausteinname = oShp
ActiveSheet.Range("c6").Value = Bausteinname.TextFrame.TextRange.Text

End If
Next


Set oExcel = Nothing
Set oPPT = Nothing

End Sub

chris-kaiser
14.09.2011, 09:43
Hi

du startest das von Excel ? warum machst du eine neue Instantz von Excel auf??

warum kopierst du nicht einfach das SHAPE und fügst es per Paste in dein Excel ein oder machst ein Objekt daraus und übergibst es einfach...

[edit]

Ok zu spät....
Aber die Frage bleibt denoch warum du die neue Instanz von Excel aufmachst??
und warum nochmal ein Object anlegen ? wenn du oShp schon hast? irgendiwe ist da alles doppelt gemoppelt :)

Option Explicit
Sub pptBausteinname()
Dim oPP As Object
Dim oPPT As Object
Dim oShp As Object
Set oPP = CreateObject("PowerPoint.Application")
oPP.Visible = True
Set oPPT = oPP.Presentations.Open("C:\Users\KOENIOAF\SPEED_Dokumente\Testdokument_PowerPoint.ppt")

For Each oShp In oPPT.Slides(1).Shapes
If oShp.Name = "Autoshape 7" Then
ThisWorkbook.ActiveSheet.Range("c6").Value = oShp.TextFrame.TextRange.Text
End If
Next
Set oPPT = Nothing
End Sub

geht das nicht auch so?