2016-06-23 6 views
1

Dies ist der Code, den ich für das Senden von Diagrammen an einen bestimmten Ort haben, ist die folgende:Senden Excel-Diagramm, um Powerpoint-Qualität und Größe

Sub This() 


Dim PPApp As PowerPoint.Application 
Dim PPPres As PowerPoint.Presentation 
Dim PPSlide As PowerPoint.Slide 

Set PPApp = New PowerPoint.Application 
Set pptPres = PPApp.Presentations.Open("C:\Template.pptx") 


Set PPApp = GetObject(, "Powerpoint.Application") 
' Reference active presentation 
Set PPPres = PPApp.ActivePresentation 

' Copy the range as a picture 
Sheets("Plots").ChartObjects("Chart Name").Copy 
' Paste the range 
With PPPres.Slides(10).Shapes.PasteSpecial 
     ' Align pasted chart 
     .Align msoAlignCenters, True 
     .Align msoAlignMiddles, True 
End With 

End Sub 

So tut es das, was es ist wohl es eine bestimmte Powerpoint eröffnet Folie und sendet das Diagramm zu Folie 10. Meine Frage ist, gibt es eine Möglichkeit, das Grundstück an einen bestimmten Ort zu senden und eine bestimmte Größe zu machen?

Antwort

0
Sub This() 


Dim PPApp As PowerPoint.Application 
Dim PPPres As PowerPoint.Presentation 
Dim PPSlide As PowerPoint.Slide 

Set PPApp = New PowerPoint.Application 
Set pptPres = PPApp.Presentations.Open("C:\Template.pptx") 


Set PPApp = GetObject(, "Powerpoint.Application") 
' Reference active presentation 
Set PPPres = PPApp.ActivePresentation 

' Copy the range as a picture 
Sheets("Plots").ChartObjects("Chart Name").Copy 
' Paste the range 
With PPPres.Slides(10).Shapes.PasteSpecial 
     ' Align pasted chart 
     .Top = 100.84976 
     .Left = 85.98417 
     .Height = 120.7964 
     .Width = 546.5262 
End With 

End Sub 

Paste hat die Eigenschaften des .Top .Left aufweist und so weiter. So können diese zum Ausrichten und Ändern der Größe des Fotos verwendet werden. Ich habe auch bemerkt, dass wenn Sie Paste und nicht PasteSpecial verwenden, dann ist die Fotoqualität schlechter.

+1

Auf die Gefahr hin, pedantisch zu sein: PasteSpecial ist eine Methode, die ein ShapeRange-Objekt zurückgibt. Es ist das ShapeRange-Objekt, das über die Eigenschaften .Top, .Left usw. verfügt. Ja. OK. FullPedantry erreicht. –

+0

@SteveRindsberg immer gut zu wissen, was der richtige Jargon ist. –

+0

@AdamWarner Sie verwendeten also 90% meines Codes und gaben mir nicht die +1? –

1

Adam, versuchen Sie den folgenden Code, funktioniert gut mit den Tests, die ich auf meinem PC durchgeführt habe.

Der Standort und die Größe des Diagramms wurden entsprechend den Werten geändert, die ich in den letzten 4 Zeilen eingegeben habe.

Sub This() 

    Dim PPApp As PowerPoint.Application 
    Dim PPPres As PowerPoint.Presentation 
    Dim PPSlide As PowerPoint.Slide 

    Set PPApp = New PowerPoint.Application 
    Set pptPres = PPApp.Presentations.Open("C:\Template.pptx") 

    ' Reference active presentation 
    Set PPPres = PPApp.ActivePresentation 

    ' Copy the range as a picture 
    Worksheets("Plots").ChartObjects("Chart Name").Copy 

    Set PPSlide = PPApp.ActivePresentation.Slides(10) 

    ' Paste the Chart 
    With PPSlide.Shapes.PasteSpecial 
     .Top = 100 
     .Left = 120 
     .Height = 200 
     .Width = 400 
    End With 

End Sub 
+0

Ich bekomme eine Fehlermeldung ShapeRange (unbekanntes Mitglied): Ungültige Anfrage. Um eine Form auszuwählen, muss ihre Ansicht aktiv sein. –

+0

@AdamWarner welche Zeile erhalten Sie den Fehler? –

+0

Ich habe einen Fehler in der PPApp.Shapes.PasteSpecial.Select Zeile –