Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1184to1188
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kleine Änderung - aber wie ?

Kleine Änderung - aber wie ?
Mapsi
Guten Tag zusammen
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 ?

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Kleine Änderung - aber wie ?
17.11.2010 12:58:17
Peter.H
Hallo Mapsi
bei mir funktioniert der Code...und kopiert aus dem aktuellen Tabellenblatt.
Die beiden zusätzlichen Slides werden durch den auskommentierten Code nicht mehr eingefügt.
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
Gruß
Peter
Anzeige
AW: Kleine Änderung - aber was?
17.11.2010 13:16:18
Renee
Hi Mapsi,
1. Der Code kopiert den durch die Inputbox ausgewählten Zellenbereich egal aus welchem Blatt dieser stammt. Also muss IMO auch nichts geändert werden.
2. Den Codeteil von (mit erster Zeile) - bis(mit letzter Zeile kannst du löschen
        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
strFileName = PP_Save
3. bzw. durch diese 3 Zeilen ersetzen:
        strFileName = InputBox("PPT-Name eingeben:", "PPT", ThisWorkbook.Path & "\")
.ActivePresentation.SaveAs Filename:=strFileName
.Quit
GreetZ Renée
Anzeige
AW: Kleine Änderung - aber was?
17.11.2010 14:18:15
Mapsi
Danke für All Eure top-Hilfe !
Nun scheint der Code wirklich zu laufen.
Nun hab ich einfach das Problem, dass das Kopierte viel viel zu gross dargestellt wird auf der PPT - Folie
Darum frage ich mich ob es allenfalls möglich ist, diese Kopierfunktion so zu erweitern, dass auch gleich noch eine angesehene Formatierung der Daten in PPT ausgeführt wird.
... oder wisst Ihr gleich, wie ich das tun müsste ?
Zudem:
Kann ich den Code evt. um ne Möglichkeit erweitern / ergänzen, die es erlaubt, pro vorhandenem Tabellenblatt in Excel auch gleich eine Folie zu erstellen. (ohne dass ich jeden Range einzeln auswählen muss) ?
also z.B.
ich habe in meiner Arbeitsmappe total 4 Tabellenblätter mit je unterschiedlicher Datensatz-Anzahl.
Nun ... wie müsste ich das Makro ändern, damit dieses auf Knopfdruck alle vorhandenen Tabellenblätter und Datensätze auf je eine Folie (pro Tabellenblatt) kopiert ?
Währe Super wenn mir da jemand helfen könnte
Anzeige
AW: Kleine Änderung - aber wie ?
17.11.2010 15:11:03
Case
Hallo,
finde es nicht in Ordnung, dass Du hier permanent neue Themen anfängst und dann auch noch von Google sprichst:
Mapsi1
Mapsi2
Na ja - viel Glück. Vielleicht findest Du noch jemand der Dir die "Kartoffeln aus dem Feuer holt". :-(
Servus
Case

Genauer, stets das gleiche Thema neu, case! orT
17.11.2010 17:22:05
Luc:-?
Gruß Luc :-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige