Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1744to1748
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

CopyPicture von Excel zu PPT

CopyPicture von Excel zu PPT
18.03.2020 13:28:06
Excel
Hallo,
ich habe ein Excel Problem mit der CopyPicture Funktion.
Auf den Rechnern auf der Arbeit mit Excel 2016 funktioniert die Funktion aus meiner Datei ohne Probleme.
Zu Hause mit Excel 2019 funktioniert es komischerweise nicht. Hat sich bei Excel 2019 vielleicht etwas geändert?
Fehlermeldung siehe unten.
Habt ihr Ideen? Es ist wichtig, dass die entspr. Range unbedingt als Picture in Powerpoint eingefügt wird, da sich teilweise mehrere Grafiken in der Range befinden.
Leider kann ich die gesamte Datei aus dienstlichen Gründen nicht uploaden. Ich habe aber bereits viel herum probiert und auch mit PasteSpecial etc. keinen Erfolg gehabt.
Range("TIMELINE").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(40).Shapes.Paste
.LockAspectRatio = True
.Left = 100
.Top = 100
.Width = 500
End With

Userbild
Vielen Dank im Voraus.
Chris

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CopyPicture von Excel zu PPT
18.03.2020 14:22:42
Excel
Hi,
ich habe auch in einem Projekt, in denen eine Vielzahl von Pictures von Excel zu Pp kopiert wird, diese Fehlermeldung gehabt. Manchmal tratt der Fehler auf, wenn der User während der makroabarbeitung zwischen den Anwendungen hinundher geklickt hat, manchmal gab es für den Fehler "keinen äußeren Anlass".
Ich habe das Ganze dann damit in den Griff bekommen, dass ich grungsätzlich für alle Objekte eine Objektvariable deklariert und gefüllt habe.
Also nach dem Muster:

Dim obj_quell_range as Range
Set obj_quell_range = Range("TimeLine")
ggf. auch alle Worksheetobjekte so referenzieren.
Gruß Regina
Anzeige
AW: CopyPicture von Excel zu PPT
18.03.2020 14:26:56
Excel
Hallo Reppi,
ich habe kein XL2019, weiß aber, dass die CopyPicture-Funktion ab und zu Probleme macht.
Probiere es mal mit xlBitMap aus. Möglicherweise geht das und weist dann auf die fehlerhafte xlPicture-Funktionalität hin.
Da das aber nicht das gleiche ist, probiere u.a. Code zur Mehrfachversuchung aus:
   Do
     Range("TIMELINE").CopyPicture Appearance:=xlScreen, Format:=xlPicture '
     If Err.Number = 0 Then Exit Do
     Err.Clear
   Loop

viel Glück dabei
Karl-Heinz
Anzeige
AW: CopyPicture von Excel zu PPT
18.03.2020 14:51:05
Excel
Nachtrag!
  On Error Resume Next
  Do
     Range("TIMELINE").CopyPicture Appearance:=xlScreen, Format:=xlPicture '
     If Err.Number = 0 Then Exit Do
     Err.Clear
   Loop
   on error goto 0

VG KH
Anzeige
AW: CopyPicture von Excel zu PPT
19.03.2020 16:43:37
Excel
Vielen Dank für die zahlreichen Antworten!
Leider hat bisher keine davon funktioniert.
Ich habe selbst alles mögliche von diesem Thread probiert:
https://stackoverflow.com/questions/24740062/copypicture-method-of-range-class-failed-sometimes
Leider ebenfalls ohne Erfolg.
Ein Delay dazwischen hat also auch nichts gebracht, denn es bestand laut Thread die Vermutung, dass der Kopiervorgang zu schnell stattfindet und deswegen nicht korrekt in die Zwischenablage kommt.
Der loop von dir, volti, läuft leider endlos, da er aus dem Fehler nicht raus kommt.
Langsam bin ich mit meinem Latei am Ende, wobei ich auch VBA Anfänger bin ;)
Anzeige
AW: CopyPicture von Excel zu PPT
19.03.2020 16:49:43
Excel
...noch eine Idee. ich habe mir eben meinen Cod ezum Kopieren nochmal angeschaut. Werden nacheinander mehrere Ranges kopiert und eingefügt?
Ich habe bei mir vor jedem neuen Kopiervorgang ein
Application.CutCopyMode =false
eingebaut, damit der vorhergehende Kopiervorgang auf jeden Fall abgeschlossen ist. Außerdem habe ich auch für jedes Slide eine Objektvariable benutzt.
Gruß Regina
AW: CopyPicture von Excel zu PPT
19.03.2020 17:36:43
Excel
Danke für die Antwort, Regina.
Ja genau, es folgen mehrere Kopiervorgänge nacheinander.
Das hatte ich tatsächlich auch schon ausprobiert, aber es hapert immer noch direkt beim ersten Vorgang.
Copy und pastespecial geht ja komischerweise. Echt komisch.
Grüße Chris
Anzeige
AW: CopyPicture von Excel zu PPT
20.03.2020 15:46:42
Excel
Hallo zusammen,
ich bin ein Stückchen weiter gekommen.
Ich habe einfach mal getestet, ob er die CopyPicture Aktion denn zumindest auf ein leeres Worksheet in Excel einfügt. Und siehe da, es funktioniert. Irgendwie scheint also die Kommunikation zwischen Excel und PPT nicht ganz zu funktionieren. Oder an meinem Code passt diesbezüglich etwas nicht.
Hier mal der gesamte Code:
Public Function DateiVorhanden(savePPT As String)
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.filesystemobject")
If objFSO.fileexists(savePPT) = True Then
DateiVorhanden = True
Else
DateiVorhanden = False
End If
Set objFSO = Nothing
End Function
Public Function VorlageVorhanden(pptVorlage As String)
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.filesystemobject")
If objFSO.fileexists(pptVorlage) = True Then
VorlageVorhanden = True
Else
VorlageVorhanden = False
End If
Set objFSO = Nothing
End Function
Sub create_acmb()
Dim strPOTX As String
Dim strPfad As String
Dim pptVorlage As String
Dim savePPT As String
Dim pptApp As Object
Dim pptPres As Presentation
Dim msgDone As Boolean
strPfad = ThisWorkbook.Path
strPOTX = "\ACMB_Vorlage.potx"
pptVorlage = strPfad & strPOTX
missionDate = Worksheets("AIRCRAFT CREW").Range("J2").Value
missionName = Worksheets("AIRCRAFT CREW").Range("D2").Value
savePPT = strPfad & "\" & Format(missionDate, "YYYY-MM-DD") & " ACMB " & missionName & ".pptx"
If VorlageVorhanden(pptVorlage) = False Then
MsgBox "ACMB_Vorlage.potx kann nicht gefunden werden! Bitte sicherstellen, dass sich die  _
Datei im selben Ordner wie XXX befindet!"
Exit Sub
End If
If DateiVorhanden(savePPT) = False Then
Dim Mldg, Stil, Titel, Hilfe, Ktxt, Antwort, Text1
Mldg = "Wirklich alles ausgefüllt? Ein nachträgliches bearbeiten der XXX Daten in Powerpoint  _
ist nicht möglich (weil Bilder)! ACMB wird im gleichen Ordner gespeichert."
Stil = vbYesNo + vbCritical + vbDefaultButton2
Titel = "Fortfahren?"
Hilfe = ""
Ktxt = 1000
Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)
If Antwort = vbNo Then
UserForm2.Hide
Exit Sub
End If
End If
UserForm2.Hide
'On Error Resume Next
If missionDate  "" And missionName  "" Then
Set pptApp = New Powerpoint.Application
'Falls gleichnamige Datei schon vorhanden, diese öffnen und Folien erneut kopieren,  _
anderenfalls neues ACMB erstellen
If DateiVorhanden(savePPT) = False Then
msgDone = False
pptApp.Presentations.Open Filename:=pptVorlage, untitled:=msoTrue
Else
msgDone = True
If pptApp.ActivePresentation Is Nothing Then
pptApp.Presentations.Open Filename:=savePPT, untitled:=msoTrue
Else
pptApp.ActivePresentation.Save
pptApp.ActivePresentation.Close
pptApp.Presentations.Open Filename:=savePPT, untitled:=msoTrue
End If
End If
Set pptPres = pptApp.ActivePresentation
'Missionsname aus AIRCRAFT AND CREW DETAILS wird auf Seite 1 der PPT eingefügt
pptPres.Slides(1).Shapes("Missionsname").TextFrame.TextRange.Characters.Text = Worksheets(" _
AIRCRAFT CREW").Range("D2").Value
'Callsigns aus AIRCRAFT AND CREW DETAILS werden auf Folie ROLL CALL eingefügt
Dim roll As Integer
Dim cs As Integer
roll = 2
For cs = 7 To 19
pptPres.Slides(2).Shapes("rollcall").Table.Cell(roll, 1).Shape.TextFrame.TextRange.Text =  _
Worksheets("AIRCRAFT CREW").Cells(cs, 2).Value
roll = roll + 1
cs = cs + 1
Next
'-------------------------HIER FOLIEN EINFÜGEN----------------------------
'TIMELINE
Range("TIMELINE").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(40).Shapes.Paste
.LockAspectRatio = True
.Left = 100
.Top = 100
.Width = 500
End With
'AIRCRAFT
Range("AIRCRAFT").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(13).Shapes.Paste
.LockAspectRatio = True
.Left = 50
.Top = 150
.Width = 600
End With
'COMPLAN
Range("COMPLAN").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(37).Shapes.Paste
.LockAspectRatio = True
.Left = 100
.Top = 90
.Width = 500
End With
'SOM
Range("SOM").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(10).Shapes.Paste
.LockAspectRatio = True
.Left = 80
.Top = 80
.Width = 550
End With
'HLZ1
Range("HLZ_1").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(18).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 570
End With
'HLZ2
Range("HLZ_2").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(20).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 570
End With
'HLZ3
Range("HLZ_3").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(22).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 570
End With
'HLZ4
Range("HLZ_4").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(24).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 570
End With
'HLZ5
Range("HLZ_5").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(26).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 570
End With
'HLZ6
Range("HLZ_6").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(28).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 570
End With
'CONTINGENCIES
Range("CONTINGENCIES").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(33).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 580
End With
'IIMC
Range("IIMC").CopyPicture Appearance:=xlScreen, Format:=xlPicture
With pptPres.Slides(34).Shapes.Paste
.LockAspectRatio = True
.Left = 70
.Top = 80
.Width = 580
End With
'Speichern mit Datum aus Aircraft and Crew Details
pptPres.SaveAs savePPT
If msgDone = False Then
MsgBox "ACMB erstellt!"
Else
MsgBox "ACMB aktualisiert!"
End If
'Aufräumen
Set pptPres = Nothing
Set pptApp = Nothing
'Ordner öffnen
'Shell "explorer.exe /e, " & strPfad, vbNormalFocus
Else
MsgBox "Bitte Missionsnamen und Datum bei AIRCRAFT AND CREW DETAILS eingeben!"
Worksheets("AIRCRAFT CREW").Activate
End If
End Sub

Danke fürs Drüberschauen!
MfG Chris
Anzeige

240 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige