von Excel zu Powerpoint als Metadatei
#1
Hallo liebe Community,

ich habe gesucht, jedoch nichts genaueres dazu gefunden, wie man spezielle Einfügeoptionen verwenden kann.
Ich benutze VBA auch erst seit letzter Woche und versuch mich da ein wenig durchzumogeln :D

Mein Ziel:

Aus Excel verschiedene Bereiche der ersten Arbeitsmappe zu kopieren und für jeden separat markierten Bereich in PowerPoint einen neuen Slide zu erstellen und die Grafik einzufügen.

Das Problem:

Die Qualität der Grafik lässt zu wünschen übrig. Ich kopiere einen Bereich (der groß genug ist in Excel) und verschiebe diesen so in einem PowerPoint Slide, dass es mit der PowerPoint Vorlage passt.

Für das Einfügen habe ich folgenden Code:

Sheets("Zusammenfassung").Range("C6:Y38").CopyPicture xlScreen, xlBitmap
     iSX = 2
     Set pptSlide = pptPres.Slides(iSX)
     Set shp = pptSlide.Shapes.Paste
    
     ' Special Format:="Bild (Erweiterte Metadatei)"
     '  ActiveSheet.PasteSpecial Format:="Bild (Erweiterte Metadatei)", Link:=False _

Zur Frage:
An dieser Stelle würde ich gerne die kopierten Bereiche als Metadatei oder andere Formate einfügen. Der Code in Grün gilt wohl nur für Excel zum einfügen, aber nicht für PowerPoint. Zumindest habe ich es dann so versucht:

Set shp = pptSlide.Shapes.PasteSpecial Format:="Bild (Erweiterte Metadatei)", Link:=False_

wobei ich auch hier nicht mal weiß, was zB. "Link:=False_" bedeutet.
Hat jemand eine Idee? Würde mich über Inspiration freuen.

Liebe Grüße,
Top
#2
habe nun die korrekte Schreibweise gefunden, dank:

https://msdn.microsoft.com/de-de/library...45158.aspx


dennoch sieht die Grafik nicht schön aus. Muss ich etwas am "Copy" - Befehl ändern?
Wenn ich es manuell kopiere und einfüge, sieht's super aus.. aber mit VBA-Makro leider nicht.

Hier mal der Code:

     Set pptApp = CreateObject("PowerPoint.Application")
     pptApp.Visible = True
     Set pptPres = pptApp.Presentations.Open("M:\*****************.pptx")
     Sheets("Zusammenfassung").Range("C6:Y38").CopyPicture xlScreen, xlBitmap
     iSX = 2
     Set pptSlide = pptPres.Slides(iSX)
     Set shp = pptSlide.Shapes.PasteSpecial(DataType:=ppPasteEnhancedMetafile)
     shp.Top = 5             
     shp.Left = 25           


     Sheets("Zusammenfassung").Range("C45:Y77").CopyPicture xlScreen, xlBitmap
     iSX = 3
     Set pptSlide = pptPres.Slides(iSX)
     Set shp = pptSlide.Shapes.PasteSpecial(DataType:=ppPasteEnhancedMetafile)
     shp.Top = 5
     shp.Left = 25


würde mich über Hilfe freuen :)

LG
Top
#3
Hi,

(22.08.2016, 14:17)Exceljunge schrieb: dennoch sieht die Grafik nicht schön aus. Muss ich etwas am "Copy" - Befehl ändern?
Wenn ich es manuell kopiere und einfüge, sieht's super aus.. aber mit VBA-Makro leider nicht.

ich habe bei meiner Datei damals bemerkt, daß die Qualität des Diagramms viel besser ist, wenn ich es nicht als Diagramm einfüge, sondern direkt als Grafik.
Das entspricht dieser Vorgehensweise:
in Excel - Diagramm markieren und kopieren
in PP - rechtsklick und dann einfügen mit dem kleinen Imagebutton im Kontextmenü

Dies läßt dann auch ein verlustfreies Skalieren des Diagramms zu.
Top
#4
Hallo Rabe,
danke für deine Antwort.
Leider nützt mir das nicht sonderlich viel. Vielleicht nochmal zu meiner Excel-Arbeitsmappe:

Ich habe einen Reiter "Zusammenfassung" - dieser hat 6 gleich große Felder, in denen ich aus anderen Reitern Daten gesammelt habe, die ich für eine PowerPoint Präsentation benötige. (Dazu gehören Textfelder, Tabellen und Diagramme). Wenn ich nun das gesamte Kästchen markiere und in PowerPoint als Grafik einfüge, habe ich ein schönes Bild, welches ich dann verschieben kann, sodass es in meine Präsentation passt.
Doch ich will das alles nicht Manuell machen und habe mir deshalb eine Schaltfläche dafür erstellt und diefunktioniert auch wunderbar.

Einzig allein die Qualität der Grafiken ist nicht schön, obwohl mein Makro ja auch nichts anderes als Copy in Excel und Paste in PPT macht.
Irgendwo geht anscheinend Qualität "verloren" :/
LG
Top
#5
Ach ich habe das Problem entdeckt... tut mir leid, für die Störung! :D

Es lag tatsächlich an der Copy Methode.. wie gesagt, bin erst seit einer Woche mit VBA vertraut.

so sieht's richtig aus:

     Sheets("Zusammenfassung").Range("C45:Y77").CopyPicture 'xlScreen, xlBitmap
     iSX = 3
     Set pptSlide = pptPres.Slides(iSX)
     Set shp = pptSlide.Shapes.PasteSpecial(DataType:=ppPasteEnhancedMetafile)
     shp.Top = 5
     shp.Left = 25
           

Danke,

LG
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste