923 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,
Ich habe folgendes Problem:
Mein Makro kopiert ein Bild mehrfach von einem Tabellenblatt in ein anderes (Tabelle 1 in Tabelle 6; Tabelle 2 in Tabelle 7 usw.).
In der Regel funktioniert das sehr gut allerdings bekomme ich manchmal (ca. 5-10% der Fälle) die Fehlermeldung " Laufzeitfehler 1004, Die Paste-Methode des Worksheet-Objektes konnte nicht durchgeführt werden"
Wenn ich den Debugger aktiviere Zeigt er mir immer die gleiche Code Zeile an jedoch hängt er immer bei einem anderen Tabellenblatt. Sprich: manchmal sind die Blätter 6-8 schon mit logo versehen, manchmal nur Blatt 6 usw.
Wenn ich mein Makro ein 2. mal aktiviere funktioniert es in der Regel
Ich habe bis jetzt noch keinerlei Zusammenhang zu irgendwelchen anderen Aktivitäten in Excel oder auf dem Rechner feststellen können.
In einem anderen Makro in dem ich mit dem gleichen Programmschnipsel das Bild in eine andere Datei kopiere habe ich das gleiche Problem.

Hier mein (aus dem Internet geklauter) Programmschnipsel:


Sub Copy_Logo
dim pct1[, ...] as Picture

With Sheets("Tabelle1").Pictures("Bild 9")
.Copy
Sheets("Tabelle6").Paste 'Zeile des Anstosses
Set pct1 = Sheets("Tabelle6").Pictures("Bild 9")
pct1.Left = .Left
pct1.Top = .Top
End With

[...]
End Sub


gibt es für Bilder Spezielle Pastebefehle wie z.B.
[/code]
.PasteSpecial Paste:=xlPasteFormats
[code]
(für Formate)?
Oder könnt Ihr mir sonst einen Tipp geben der diese Fehlermeldung verschwinden lässt?

Herzlichen Dank schon im voraus
Gruß SirSolaris

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

hier mal eine andere Möglichkeit, um ein Bild - ohne Namen - zu kopieren:

Sub logocopy()

Worksheets("Tabelle1").Shapes(1).Copy
With Worksheets("Tabelle6")
.Paste
With .Shapes(1)
.Top = 1
.Left = 1
End With
End With

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.
vielen Dank für deine Hilfe!
ich habe deinen Code für meine Bedürfnisse ein wenig umgeschrieben:


Sub Copy_Logo_2()
Dim i, k As Integer

For i = 1 To 5
k = i + 5
Sheets(i).Shapes(1).Copy
With Sheets(k)
.Paste
.Shapes(1).Top = Sheets(i).Shapes(1).Top
.Shapes(1).Left = Sheets(i).Shapes(1).Left
End With
Next i
End Sub


läuft bis jetzt fehlerfrei. Mal schauen ob's so bleibt ;)

Macht das eigentlich einen unterschied ob ich ein Blatt mit "Sheets()" oder "Worksheets()" anspreche?
Ich arbeite die Ganze Zeit mit Sheets sehe aber in Foren häufiger Worksheets...

Gruß SirSolaris
0 Punkte
Beantwortet von
Hallo SirSolaris,

nach meiner Erfahrung macht es im Alltag keinen Unterschied ob man Sheets oder Worksheets verwendet. Beide Auflistungen haben bei Tabellenblättern die gleichen Parameter. Der Unterschied besteht lediglich in der Nummerierung. Falls du in deiner Arbeitsmappe außer normalen Tabellenblättern auch ander Blattregister verwendest (z.B. Diagrammblätter oder Excel-4.0-Makroarbeitsblätter), werden diese bei Worksheets nicht mitgezählt, während Sheets ALLE vorhandenen Blätter widergibt. Die Unterscheidung macht insofern Sinn, da ein Diagrammblatt auch Diagrammspezifische Eigenschaften ansprechen kann.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo Mr.K.
Nein, Diagrammblätter verwende ich nicht. Vielen Dank für deine Hilfe!
Gruß SirSolaris
...