mit folgendem Code (danke Google !) kopiere ich einen selektierten Bereich von Excel nach PPT.
Das funktioniert eigentlich ganz ganz gut.
aber ...
Wenn ich eine Excel-Arbeitsmappe mit mehreren Tabellenblättern habe, so kopiert mir dieser Code immer die Anzahl Ranges, aber immer vom ersten Tabellenblatt.
Frage:
wie müsste ich den Code ändern, damit nicht immer vom ersten Tabellenblatt aus kopiert wird, sondern ich auf einem beliebigen Tabellenblatt einen Range zum kopieren auswählen kann ?
Ich vermute mal, dass ich die Zeile hier irgendwie umbauen müsste:
ThisWorkbook.Worksheets(varTMP.Parent.Name).Range _
(varTMP.Address).CopyPicture
aber wie ?
Herzlichen Dank für Eure Hilfe ! (komm echt nicht weiter)
Public Sub Test()
Dim strFileName As String
Dim objPPRange As Object
Dim objPPApp As Object
Dim objSlide As Object
Dim varTMP As Variant
On Error GoTo Fin
Set varTMP = Application.InputBox _
("Range select.", "Select", , , , , , 8)
Set objPPApp = CreateObject("PowerPoint.Application")
With objPPApp
.Visible = True
.Presentations.Add
.ActivePresentation.Slides.Add 1, 12
ThisWorkbook.Worksheets(varTMP.Parent.Name).Range _
(varTMP.Address).CopyPicture
Set objSlide = .ActivePresentation.Slides(1)
Set objPPRange = objSlide.Shapes.Paste
With objPPRange
.LockAspectRatio = False
.Width = objSlide.Design.SlideMaster.Width
.Height = objSlide.Design.SlideMaster.Height
.Align 4, True
.Align 1, True
End With
Tabelle1.Range(varTMP.Address).Copy
.ActivePresentation.Slides.Add 2, 12
.ActiveWindow.View.GotoSlide (2)
.ActiveWindow.View.PasteSpecial 10, , , , , -1
.ActivePresentation.Slides.Add 3, 12
.ActiveWindow.View.GotoSlide (3)
.ActiveWindow.View.PasteSpecial 2
strFileName = PP_Save
.ActivePresentation.SaveAs strFileName & strPPSave
End With
Fin:
Application.CutCopyMode = False
Set objPPRange = Nothing
Set objPPApp = Nothing
Set objSlide = Nothing
End Sub
Zudem:Wenn der Kopiervorgang abgeschlossen ist, finde ich nebst einer Folie mit dem Kopierergebniss immer noch zwei weitere unnützliche Folien.
Kann ich diese irgendwie per Code gleich noch löschen ?