Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
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

Fehler1004 SpecialPaste kann nicht ausgeführt werd

Fehler1004 SpecialPaste kann nicht ausgeführt werd
Cornelia
Hallo,
Da ich hier gestern so tolle Hilfe bekommen habe, um meine ZielDatei zu finden und zu öffnen, wende ich mich nun mit einem weiteren Problem hoffnungsvoll an dieses Forum: der unten stehende Code läuft im Abschnitt "ZielDatei Werte einfügen" in einen "Laufzeitfehler 1004 / Die PasteSpecial-Methode des Range-Objekts konnte nicht ausgeführt werden".
Die verschiedenen Tipps aus diesem Forum zu diesem Laufzeitfehler habe ich schon ausprobiert – leider erfolglos  Kann mir jemand weiterhelfen, wo der Fehler liegt?
Ausserdem habe ich dann noch ein Problem beim Setzen der Formeln in den Zellen G5 / G58 / G79 / G96 / H5 / H79 / H96. Da weiss ich aber noch nicht, was nicht stimmt (die Zeilen werden rot eingefärbt, wenn ich sie ins Modul kopiere…Vielleicht hat da jemand einen Hinweis für mich?
Hier mein Code:
Sub Budgets_kopieren()
Dim Ziel As Workbook
Dim Quelle As Workbook
Dim zs As Object
Dim zVerz As Object
Dim zDatei As Object
Dim zDateien As Object
Dim qs As Object
Dim qVerz As Object
Dim qDatei As Object
Dim qDateien As Object
Dim strZiel As String
Set zs = CreateObject("Scripting.FileSystemObject")
Set zVerz = zs.GetFolder("F:\DWH Programme\Makros\Budgets kopieren\Reportings\")
Set zDateien = zVerz.Files
Set qs = CreateObject("Scripting.FileSystemObject")
Set qVerz = qs.GetFolder("F:\DWH Programme\Makros\Budgets kopieren\Budgets\")
Set qDateien = qVerz.Files
For Each qDatei In qDateien
'QuellDatei öffnen
Application.DisplayAlerts = False
Set Quelle = Workbooks.Open(qDatei)
Application.DisplayAlerts = True
'QuellDatei Blatt "4.4) ER_2J_Plg" auf 2 Seiten anpassen
Quelle.Sheets("4.4) ER_2J_Plg").Select
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
Set ActiveSheet.HPageBreaks(1).Location = Range("A71")
ActiveWindow.View = xlNormalView
ActiveWindow.Zoom = 120
'QuellDatei Blatt "4.5) Lieferschein" + "4.4) ER_2J_Plg" drucken
'Sheets(Array("4.5) Lieferschein", "4.4) ER_2J_Plg")).Select
'    Application.ActivePrinter = "\\S2001-PR010\p2001-2096pcl5 auf Ne05:"
'    ExecuteExcel4Macro _
'        "PRINT(1,,,1,,,,,,,,2,""\\S2001-PR010\p2001-2096pcl5 auf Ne05:"",,TRUE,,FALSE)"
'    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
'QuellDatei Spalten G + H kopieren
Sheets("4.4) ER_2J_Plg").Select
Columns("G:H").Select
Selection.Copy
'QuellDatei speichern + schliessen
Sheets("4.4) ER_2J_Plg").Select
ActiveWorkbook.Save
'ZielDatei suchen
strZiel = Dir("F:\DWH Programme\Makros\Budgets kopieren\Reportings\" & Left(qDatei.Name, 4) & "* _
.xl*")
If strZiel  "" Then
'ZielDatei öffnen
Application.DisplayAlerts = False
Set Ziel = Workbooks.Open(zVerz & "\" & strZiel)
Application.DisplayAlerts = True
Else
'Fehlermeldung
MsgBox "die Datei ist nicht vorhanden!"
'Quelle wieder schliessen
Quelle.Sheets("4.4) ER_2J_Plg").Select
ActiveWorkbook.Close
End If
'ZielDatei Budget-Spalten einblenden
Ziel.Sheets("ER").Select
ActiveSheet.Unprotect "Kater"
Columns("D:I").Select
Selection.EntireColumn.Hidden = False
ActiveWindow.SmallScroll Down:=27
Rows("71:84").Select
Selection.EntireRow.Hidden = False
Rows("73:77").Select
Selection.EntireRow.Hidden = True
ActiveWindow.SmallScroll Down:=-6
Rows("95:111").Select
Selection.EntireRow.Hidden = False
'ZielDatei Werte einfügen
Ziel.Sheets("ER").Select
Columns("G:H").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'ZielDatei Formeln in Spalten G + H wieder einsetzen
Sheets("ER").Activate
Range("G4").FormulaLocal = "=WENN(Lieferschein!$A$4=1;(SVERWEIS($N$4;Code!$A$101:$G$169;2));( _
SVERWEIS($N$4;Code!$A$101:$G$169;5)))"
'Range("G5").FormulaLocal = "=WENN(Lieferschein!G11="Q2";(MONATSENDE(Lieferschein!H11;6)+365);( _
WENN(Lieferschein!G11="Q3";(MONATSENDE(Lieferschein!H11;3)+365);(WENN(Lieferschein!G11="Q4";Lieferschein!H11+365;" ")))))"
Range("G14").FormulaLocal = "=SUMME(G10:G13)"
Range("G21").FormulaLocal = "=SUMME(G17:G20)"
Range("G33").FormulaLocal = "=SUMME(G26:G27;G30:G32)"
Range("G38").FormulaLocal = "=SUMME(G36:G37)"
Range("G40").FormulaLocal = "=G14+G21+G23+G33+G38"
Range("G44").FormulaLocal = "=G40"
Range("G47").FormulaLocal = "=G44+(SUMME(G45:G46))"
Range("G52").FormulaLocal = "=G47+(SUMME(G48:G50))"
Range("G57").FormulaLocal = "=G52"
'Range("G58").FormulaLocal = "=WENN(Lieferschein!$G$11="Q4";ER!D71;(WENN(Lieferschein!$G$11="Q3" _
;ER!F71;"")))"
Range("G59").FormulaLocal = "=SUMME(G57:G58)"
Range("G71").FormulaLocal = "=G59+(SUMME(G62:G65;G67:G69))"
Range("G78").FormulaLocal = "=WENN(Lieferschein!$A$4=1;(SVERWEIS($N$4;Code!$A$101:$G$169;2));( _
SVERWEIS($N$4;Code!$A$101:$G$169;5)))"
'Range("G79").FormulaLocal = "=WENN(Lieferschein!G11="Q2";(MONATSENDE(Lieferschein!H11;6)+365);( _
WENN(Lieferschein!G11="Q3";(MONATSENDE(Lieferschein!H11;3)+365);(WENN(Lieferschein!G11="Q4";Lieferschein!H11+365;" ")))))"
Range("G95").FormulaLocal = "=WENN(Lieferschein!$A$4=1;(SVERWEIS($N$4;Code!$A$101:$G$169;2));( _
SVERWEIS($N$4;Code!$A$101:$G$169;5)))"
'Range("G96").FormulaLocal = "=WENN(Lieferschein!G11="Q2";(MONATSENDE(Lieferschein!H11;6)+365);( _
WENN(Lieferschein!G11="Q3";(MONATSENDE(Lieferschein!H11;3)+365);(WENN(Lieferschein!G11="Q4";Lieferschein!H11+365;" ")))))"
Range("G98").FormulaLocal = "=D104"
Range("G104").FormulaLocal = "=SUMME(G98:G103)"
Range("H4").FormulaLocal = "=WENN(Lieferschein!$A$4=1;(SVERWEIS($N$4;Code!$A$101:$G$169;2));( _
SVERWEIS($N$4;Code!$A$101:$G$169;5)))"
'Range("H5").FormulaLocal = "=WENN(Lieferschein!G11="Q2";(MONATSENDE(Lieferschein!H11;6)+730);( _
WENN(Lieferschein!G11="Q3";(MONATSENDE(Lieferschein!H11;3)+730);(WENN(Lieferschein!G11="Q4";Lieferschein!H11+730;" ")))))"
Range("H14").FormulaLocal = "=SUMME(H10:H13)"
Range("H21").FormulaLocal = "=SUMME(H17:H20)"
Range("H33").FormulaLocal = "=SUMME(H26:H27;H30:H32)"
Range("H38").FormulaLocal = "=SUMME(H36:H37)"
Range("H40").FormulaLocal = "=H14+H21+H23+H33+H38"
Range("H44").FormulaLocal = "=H40"
Range("H47").FormulaLocal = "=H44+(SUMME(H45:H46))"
Range("H52").FormulaLocal = "=H47+(SUMME(H48:H50))"
Range("H57").FormulaLocal = "=H52"
Range("H58").FormulaLocal = "=G71"
Range("H59").FormulaLocal = "=SUMME(H57:H58)"
Range("H71").FormulaLocal = "=H59+(SUMME(H62:H65;H67:H69))"
Range("H78").FormulaLocal = "=WENN(Lieferschein!$A$4=1;(SVERWEIS($N$4;Code!$A$101:$G$169;2));( _
SVERWEIS($N$4;Code!$A$101:$G$169;5)))"
'Range("H79").FormulaLocal = "=WENN(Lieferschein!G11="Q2";(MONATSENDE(Lieferschein!H11;6)+730);( _
WENN(Lieferschein!G11="Q3";(MONATSENDE(Lieferschein!H11;3)+730);(WENN(Lieferschein!G11="Q4";Lieferschein!H11+730;" ")))))"
Range("H95").FormulaLocal = "=WENN(Lieferschein!$A$4=1;(SVERWEIS($N$4;Code!$A$101:$G$169;2));( _
SVERWEIS($N$4;Code!$A$101:$G$169;5)))"
'Range("H96").FormulaLocal = "=WENN(Lieferschein!G11="Q2";(MONATSENDE(Lieferschein!H11;6)+730);( _
WENN(Lieferschein!G11="Q3";(MONATSENDE(Lieferschein!H11;3)+730);(WENN(Lieferschein!G11="Q4";Lieferschein!H11+730;" ")))))"
Range("H98").FormulaLocal = "=G104"
Range("H104").FormulaLocal = "=SUMME(H98:H103)"
'ZielDatei Blatt "ER" auf 2 Seiten anpassen
Sheets("ER").Select
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
Set ActiveSheet.HPageBreaks(1).Location = Range("A71")
ActiveWindow.View = xlNormalView
ActiveWindow.Zoom = 120
'ZielDatei speichern + schliessen
Sheets("Lieferschein").Select
ActiveWorkbook.Save
ActiveWorkbook.Close
Next qDatei
End Sub
Herzliche Grüsse
coko
Nicht nur Fehler 1004
21.12.2010 16:58:43
Renee
Cornelia,
Bei diesem Code wird einem Angst und Bang.
Du solltest dich dringend mit diesem Thema beschäftigen!
Dann: Wenn du schon Quelle und Ziel als Objekte referenzierst, solltest du anstelle von
.Copy
.....
.PasteSpecial
Direkt die Range.Copy-Methode anwenden, z.B. so:
     Quelle.Worksheets("Blabla").Range("G:H:").Copy Destination:=Ziel.Worksheets("BlaBla2").Range("G:H")
...aber Achtung die Blätter müssen vom gleichen Typ sein (beide XL2007 oder beide XL97-2003)!
Zu deinen roten Befehlen:
Du kannst eine Stringvariable nicht mit einem _Fortsetzungszeichen unterbrechen. XL weiss dann nicht, was noch in den String gehört und was nicht. Aber du kannst 'beliebig' Strings zusammensetzen, also:
Befehl = "Sehr lange String-Variable" & _
" kurz unterbrochen ;-)"
GreetZ Renée
Anzeige
AW: Nicht nur Fehler 1004
21.12.2010 17:30:14
Cornelia
Hi Renée
Ich weiss, dass mein Code keinen Schönheitspreis gewinnt ;-) Er ist halt zusammengebastelt aus MakroRekorder und vielen Schnipseln aus verschiedenen Büchern und Foren (und natürlich hat da jeder einen anderen Stil). So ist eben für Anfänger nicht immer einfach, die Code-Schnipsel auf die eigenen Bedürfnisse anzupassen. Ich kenne die Seite, die du gelinkt hast, und hab auch versucht, den Makro-Code zu verbessern - nur dann geht's halt hier nicht mehr und da nicht mehr, etc. :-( Da ich ja auch das Programm demnächst einsetzen müsste, sollte es nun bald einfach funktionieren. Zum Optimieren habe ich dann danach immer noch Gelegenheit.
Aber nun werde ich erst mal versuchen deine Tipps einzubauen:
die Range.Copy-Methode kenne ich auch aus einem anderen Beispiel, aber ich habe nicht herausgefunden, wo ich den platzieren soll. Würdest du dann erst beide Dateien öffnen, Range.Copy und dann erst die übrigen Arbeiten erledigen?
Woher die Fortsetzungszeichen in den Formeln kommen, weiss ich nicht - aber ich habe den ganzen Text erst in Word eingegeben und dann in den Code kopiert...wahrscheinlich ist mir da der Fehler passiert. Danke für diesen Hinweis!
So, ich melde mich wieder, sobald ich einen Schritt weiter bin.
LG coko
Anzeige
AW: Fehler1004 SpecialPaste kann nicht ausgeführt werd
21.12.2010 17:25:06
Christian
Hallo Coko,
nach 'nem kurzen Überflug über deinen Code fällt auf:
- du kopierst die Spalten G:H und speicherst und schließt die Mappe bevor du die kopierten Spalten einfügst. -> Das kann nicht klappen - also erst einfügen.
- bei den rot markierten Code-Zeilen ist es schwer zu entscheiden, ob die Zeilenumbrüche Darstellung des Codes auf dieser Forumseite kommen oder ob du diese bewusst so gesetzt hast.
-> Wenn du im Code in den String der Formel einem Zeilenumbruch einsetzt, muss dieser entsprechend gequotet werden.
Bsp:
strTxt = "asdfgh"
strTxt = "asd" & _
"gfh"
also Zeilenumbruch löschen oder die einzelnen Teile in Anführungszeichen setzen und den Zeilenumbruch mit '& _' einleiten
Gruß
Christian
Anzeige
AW: Fehler1004 SpecialPaste kann nicht ausgeführt werd
21.12.2010 17:48:44
Cornelia
Hi Christian und Renée
Ich hab nun den Abschnitt "QuellDatei speichern + schliessen" entfernt und siehe da: nun läuft das Programm durch und die Werte in der ZielDatei stimmen mit der QuellDatei! Super, herzlichen Dank für eure Hilfe :-)
Hingegen die Geschichte mit den Formeln kann ich mir noch nicht erklären: also die underlines sind nur hier im Forum - im Code selber kann ich keine solchen Zeichen finden...ich hab dann mal die erste fehlbare Zeile wieder aktiviert und den Code laufen lassen: es kommt die Fehlermeldung "Fehler beim Kompilieren: Erwartet Anweisungsende" dabei werden die Zeichen "Q2" markiert. Die Formel funktioniert aber, so wie sie ist im Excel selber...
Ich hoffe, ihr könnt mir da noch weiterhelfen?
LG coko
Anzeige
AW: Fehler1004 SpecialPaste kann nicht ausgeführt werd
21.12.2010 18:23:47
Josef

Hallo coko,
du musst die "" verdoppeln.
statt

="Q2"
musst du

=""Q2""
schreiben

Gruß Sepp

AW: Fehler1004 SpecialPaste kann nicht ausgeführt werd
22.12.2010 09:55:17
Cornelia
Oh Mann, Sepp, so einfach - wenn man's weiss ;-) Jetzt funktioniert das ganze Programm genauso wie ich mir das vorstelle - das ist ja fast wie Weihnachten :-)
Ganz herzlichen Dank an alle Helfer und jetzt schon fröhliche Feiertage!
LG coko
Anzeige
Zur Darstellung im Forum dürfen die Zeilen...
21.12.2010 18:43:44
Luc:-?
…nicht zu lang sein, Coko,
die Forumssoftware ist da brutal und donnert sonst einfach die Fortsetzungszeichen rein, was natürlich zu Missverständnis­sen führen kann. Also immer in der Vorschau kontrollieren, dazu ist die nämlich da, was daraus wird und ggf lieber selber kürzen/umbrechen-fortsetzen.
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige