6.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

wie oben angegeben, möchte ich mit Excel eine Powerpoint Datei
mit einer einzigen leeren Folie öffnen (und dann etwas herein
kopieren).

Mit der leeren Folie klappt es aber irgendwie nicht so richtig.

Sub ppExport()

Dim oPP As Object
Dim oPres As Object
Range(Cells(1, 1), Cells(39, 207)).Select
Application.CutCopyMode = False
Selection.CopyPicture Appearance:=xlPrinter
Set oPP = CreateObject("PowerPoint.Application")

With oPP
.Visible = True
.presentations.Add
.ActivePresentation.slides.Add Index:=1, Layout:=ppLayoutBlank
Set oPres = .ActivePresentation.slides(1)
.ActivePresentation.slides(1).Shapes.Paste
End With
End Sub


Bei slides.add kommt eine Fehlermeldung: "Invalid enumeration
value"
Google sagt ich muss einen Verweis anlegen. Kann ich das
irgendwie per VBA machen?

Beste Grüße, critchm

9 Antworten

0 Punkte
Beantwortet von
Hallo nochmal!

Geschafft! :-)

Sub ppExport()

Dim oPP As Object
Dim oPres As Object

Range(Cells(1, 1), Cells(39, 207)).Select
Application.CutCopyMode = False
Selection.CopyPicture Appearance:=xlPrinter
Set oPP = CreateObject("PowerPoint.Application")

oPP.Visible = True
oPP.presentations.Add
oPP.activepresentation.slides.Add 1, 12

Range(Cells(1, 1), Cells(39, 207)).Select
Application.CutCopyMode = False
Selection.CopyPicture Appearance:=xlPrinter

Set oPres = oPP.activepresentation.slides(1).Shapes.Paste
'oPres.ShapeRange.Left = 0
'oPres.ShapeRange.Top = 0
End Sub


Lediglich die Ausrichtung meiner Tabelle funktioniert noch nicht.
Hatte gehofft es mit den beiden vorletzten Zeilen erledigen zu
können, aber das funktioniert nicht. Habt Ihr eine Idee wie man das
bewerkstelligen kann?

Beste Grüße,
critchm
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo critchm,

Alternativ könntest Du ein Makro aufzeichnen und baue das was Du unter "Ausrichten meiner Tabelle" meinst mit ein.

Gruß

Paul1

[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
ECDL-Syllabus Version 4.0[/sub]
0 Punkte
Beantwortet von
Hallo Paul1,

danke für deine Antwort, das habe ich versucht. Habe in PowerPoint
und in Excel den Makro Recorder gestartet. Leider hat der nichts
brauchbares aufgezeichnet.

Ich habe noch ein Bisschen an dem Code gebastelt, aber weiter bin
ich trotzdem nicht. Die Tabelle wird in eine neue Powerpoint Datei
mit einer leeren Folie kopiert ohne dass ich vorher Verweise
einstellen muss oder Powerpoint öffnen muss. Aber ich bekomme
die Tabelle nicht horizontal und vertikal zentriert.

Set oPP = CreateObject("PowerPoint.Application")

oPP.Visible = True
oPP.presentations.Add
oPP.activepresentation.slides.Add 1, 12

Range(Cells(1, 1), Cells(39, 205)).Select
Application.CutCopyMode = False
Selection.CopyPicture Appearance:=xlPrinter

Set oPres = oPP.activepresentation.slides(1).Shapes.Paste

oPP.activepresentation.slides(1).Shapes.SelectAll
Selection.ShapeRange.Align 4, True
Selection.ShapeRange.Align 1, True


Bei den letzten beiden Zeilen kommt Fehler 438.

Hast du vielleicht eine Lösung meines Problems?

Beste Grüße,
critchm
0 Punkte
Beantwortet von
Hallo nochmal,

habe jetzt das hier im Internet gefunden und es funktioniert:

With oPP.activepresentation.slides(1).Shapes.Paste
.Align 4, True
.Align 1, True
End With


Jetzt muss ich es nur noch etwas verkleinern :-)

Danke für deine Hilfe,

critchm
0 Punkte
Beantwortet von
Da bin ich wieder,

habe mittlerweile etwas gebastelt das die eingefügte Tabelle in
Powerpoint auf Foliengröße verkleinert.

With oPP.activepresentation.slides(1).Shapes.Paste
.Align 4, True
.Align 1, True
Do While .Item(1).Height > 540.12
dblZoom = dblZoom + 0.05
.Item(1).ScaleHeight 1 - dblZoom, 1, 1
.Item(1).ScaleWidth 1 - dblZoom, 1, 1
Loop
dblZoom = 0
Do While .Item(1).Width > 720#
dblZoom = dblZoom + 0.05
.Item(1).ScaleHeight 0.9, 1, 1
.Item(1).ScaleWidth 0.9, 1, 1
Loop
End With


Aber gerade habe ich bemerkt, dass die Dateien irgendwie garnicht
gespeichert werden.

oPP.activepresentation.SaveAs (newFileName)
oPP.Quit


Es kommt keine Fehlermeldung und laut Powerpoint hat die
Präsentation auch einen Namen. Aber sie erscheint nicht in dem
Ordner.

Habt ihr eine Idee woran das liegt?
Hier nochmal das ganze:
Set oPP = CreateObject("PowerPoint.Application")

oPP.Visible = True
oPP.presentations.Add
oPP.activepresentation.slides.Add 1, 12

Range(Cells(1, 1), Cells(39, 205)).Select
Application.CutCopyMode = False
Selection.CopyPicture Appearance:=xlPrinter

With oPP.activepresentation.slides(1).Shapes.Paste
.Align 4, True
.Align 1, True
Do While .Item(1).Height > 540.12
dblZoom = dblZoom + 0.05
.Item(1).ScaleHeight 1 - dblZoom, 1, 1
.Item(1).ScaleWidth 1 - dblZoom, 1, 1
Loop
dblZoom = 0
Do While .Item(1).Width > 720#
dblZoom = dblZoom + 0.05
.Item(1).ScaleHeight 0.9, 1, 1
.Item(1).ScaleWidth 0.9, 1, 1
Loop
End With

oPP.activepresentation.SaveAs (newFileName)
oPP.Quit


Wäre dankbar wenn ihr mir weiterhelfen könnt.
Gruß,
critchm
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Sehe ich das richtig, Du willst in eine bestehende Power Point Präsentation in eine leere Folie (Folienlayout "leer") eine Exceltabelle einer bestehenden Arbeitsmappe einfügen die dann natürlich immer aktuell sein soll.

Ich könnte es mir entweder ohne VBA (Standard) oder mit einer Makroaufzeichnung vorstellen.

Wenn Du es mir so rüberbringen kannst, dass sogar ich mich auskenne, könnte ich es mir anschauen, kann aber nichts versprechen.

Kenntnisse in Excel und in Power Point sind bei mir gegeben.

Außerdem wäre günstig, wenn Du bekanntgeben könntest, um welche Office-Versionen es sich handelt.

Gruß

Paul1

P.S.
ausreichende VBA-Kenntnisse habe ich leider keine
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo,

Das aufgezeichnete Makro in Power Point zum Einfügen eines Excel-Arbeitsblattes (nicht aus einer bestehenden Excel-Datei!) in eine leere Folie (Folienlayout "leer"):

Sub Makro1()
'
' Makro aufgezeichnet am 01/12/2012 von Paul1
'
ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120, Top:=110, Width:=480, Height:=320, ClassName:="Excel.Sheet.8", Link:=msoFalse).Select
ActiveWindow.Selection.ShapeRange.OLEFormat.Activate
With ActiveWindow.Selection.ShapeRange
.Left = 119.625
.Top = 110.25
.Width = 480.75
.Height = 319.5
End With
End Sub

Das Excel-Arbeitsblatt wird so automatisch zentriert in die leere Folie eingefügt.

Die einzelnen Schritte (Standard) siehe Viedeo:

http://p.aon.at/u/772405/?key=RZEBCJ3K97&share=32155


Gruß

Paul1


[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
ECDL-Syllabus Version 4.0[/sub]
0 Punkte
Beantwortet von
Hallo Paul1,

danke für deine Mühe und entschuldige Bitte dass ich jetzt erst
antworte. Du hast mich leider falsch verstanden. Meine Tabelle soll
in eine neue Präsentation und nachdem ich mir deinen
aufgezeichneten Code angesehen habe, stellte ich auch fest dass
er nicht ganz wäre was ich wollte. Ich habe inzwischen mein
beschriebenes Problem gelöst dass die Präsentation nicht
gespeichert wurde. Hatte mich bei der String Variable für den
Dateipfad und Namen versehen.

Hier der funktionierende Code:
Set oPP = CreateObject("PowerPoint.Application")

oPP.Visible = True
oPP.presentations.Add
oPP.activepresentation.slides.Add 1, 12

Range(Cells(1, 1), Cells(anzRows, anzColumns)).Select
Application.CutCopyMode = False
Selection.CopyPicture Appearance:=xlPrinter

With oPP.activepresentation.slides(1).Shapes.Paste
.Align 4, True
.Align 1, True
Do While .Item(1).Height > 540.12
dblZoom = dblZoom + 0.02
.Item(1).ScaleHeight 1 - dblZoom, 1, 1
.Item(1).ScaleWidth 1 - dblZoom, 1, 1
Loop
dblZoom = 0
Do While .Item(1).Width > 720#
dblZoom = dblZoom + 0.02
.Item(1).ScaleHeight 0.9, 1, 1
.Item(1).ScaleWidth 0.9, 1, 1
Loop
End With

oPP.activepresentation.SaveAs (strFile)
oPP.Quit

Application.ScreenUpdating = True
AppActivate "Microsoft Excel"
Windows(fileName).Activate
Worksheets(sheetName).Cells(1, 1).Select


Der Teil meines Codes öffnet Powerpoint und kopiert eine Tabelle in
eine neue Präsentation auf eine leere Folie. Egal wie groß die
Tabelle ist, sie wird schrittweise um jeweils 2% verkleinert bis sie
auf die Folie passt. Dann wird die Tabelle gespeichert, Powerpoint
geschlossen und Excel in den Vordergrund geholt. Weil das leider
nicht immer einwandfrei funktioniert, stelle ich (danke Google) noch
eine Windows-Msgbox dar, die immer im Vordergrund ist. Und das
Beste ist, kein Nutzer meiner Tabelle muss vorher irgendeinen
Verweis zu Powerpoint in den Einstellungen machen.

Trotzdem nochmal Besten Dank!

Gruß,
critchm
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo critchm,

Danke für die Info, zwar verstehe ich den tieferen Sinn des ganzen nicht, aber ich nehme es zur Kenntnis, entscheidend ist aber, dass Du für Dich damit zufrieden bist.

Man sollte sich mit einer Problemstellung nur dann beschäftigen, bis die Beschreibung des Problems klar und eindeutig ist, ansonsten gehen die Antworten ganz oder teilweise ins Leere.

Gruß

Paul1

[sub]Excel > Access > MS-Office 2003
MS Windows XP Professional SP3
ECDL-Syllabus Version 4.0[/sub]
...