online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon ina87xxx vom 14.07.2021, 21:40 Options

VBA Problem mit Makro

Hallo zusammen,

ich habe ein Problem mit einem Makro. Es soll mir aus einem Unterordner alle (ca. 200) excel dateien auslesen bzw aus jeder datei 6 bestimmte zellen kopieren und diese in die aktuelle datei einfügen. Soweit so gut, das Makro funktioniert, wenn ich es mit besipiel excel tabellen mache... nur sobald die original dateien ins spiel kommen funktioniert es nicht mehr.
Die orginal Datein sind schreib geschütze und mit anderen Makro versteckte Dateien. Ist es möglich, dass das Makro durch den Schreibschutz nicht funktioniert?
Das komische ist, dass es die erste geforderte zelle der ersten datei ausliest und danach der fehler kommt und das makro aufhört zu laufen...

Der Fehler tritt immer in folgender Zeile auf:
ThisWorkbook.Sheets("form").Cells(iRow, 1).PasteSpecial

Falls noch irgendwelche Informationen fehlen fragt mich :)

Hoffe jemand kann mir helfen...


Antwort schreiben

Antwort 1 von ina87xxx vom 14.07.2021, 21:41 Options

hier noch der code:


Option Explicit

Sub Daten_kopieren()

Dim Pfad As String, Dateiname As String, iRow As Long

Application.ScreenUpdating = False

Pfad = "F:\RKA\Kfz\JA2008\NK und LZB\von Gesellschaft\Forms\"
Dateiname = Dir(Pfad & "*.xls")
Do While Dateiname <> ""

Workbooks.Open Filename:=Pfad & Dateiname

iRow = ThisWorkbook.Sheets("form").Range("A65536").End(xlUp).Offset(1, 0).Row


Workbooks(Dateiname).Sheets("form").Range("J6").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 1).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J8").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 2).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J14").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 3).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J126").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 4).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J217").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 5).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J219").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 6).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J252").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 7).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J156").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 8).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J257").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 9).PasteSpecial

Workbooks(Dateiname).Sheets("form").Range("J371").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 10).PasteSpecial


Workbooks(Dateiname).Close
Dateiname = Dir()

Loop
End Sub

Antwort 2 von coros vom 15.07.2021, 05:27 Options

Hallo Marina,

was für eine Laufzeitfehlermeldung wird Dir denn angezeigt, wenn das Makro mit dem Laufzeitfehler beendet wird?

Du schreibst, dass der Fehler immer in der Codezeile

ThisWorkbook.Sheets("form").Cells(iRow, 1).PasteSpecial

auftritt. Hast Du die Zeilen

Workbooks(Dateiname).Sheets("form").Range("J6").Copy
ThisWorkbook.Sheets("form").Cells(iRow, 1).PasteSpecial

mal durch ein Hochkomma ( ' ) auskommentiert oder gelöscht und dann geprüft, ob das Makro durchläuft?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von ina87xxx vom 15.07.2021, 09:16 Options

Hallo Oliver,

also der Fehler heißt:

Run-time error '-2147417848(80010108)' Method 'PasteSpecial' of object 'Range' failed

Der Debugger springt dann immer sofort in die Zeile:
ThisWorkbook.Sheets("form").Cells(iRow, 1).PasteSpecial

Wenn ich die Zeile dann auskommentiere und das Makro nochmal laufen lasse kommt der Fehler:

Run-time error 9 Subscript out of range
und danach springt der Debugger dann in die Zeile davor:
Workbooks(Dateiname).Sheets("form").Range("J6").Copy

Da mir die erste Zelle der ersten Datei kopiert wird liegt das Problem sozusagen darin, dass das Makro nicht von der ersten Zelle zur nächsten springt.

Vielen Dank...

Antwort 4 von coros vom 15.07.2021, 09:23 Options

Hallo Marina,

ich hatte geschrieben, Du möchtest auch mal die Codezeile

Workbooks(Dateiname).Sheets("form").Range("J6").Copy

auskommentieren um dann zu sehen, ob das Makro durchläuft oder ob der Fehler dann in der nächsten Copy-Anweisung auftritt.

Mach das mal bitte und gib bescheid, ob das Makro durchläuft oder ebenfalls abbricht.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von ina87xxx vom 15.07.2021, 12:25 Options

Hi Oliver,

sorry das hab ich etwas unklar geschrieben ;)...
Ich habe es aus kommentiert und es ging trotzdem nicht...

aber ich hab ne neue spur...
hab eine ungeschütze datei aus dem vorjahr gefunden und bei der funktioniert es... sprich es muss irgendwie an dem blattschutz liegen...

irgendein tip, was ich machen könnte?
ist es einfach ein neues makro zu schreiben oder veruchen den blattschutz aufzuheben?!

Grüßle

Antwort 6 von coros vom 15.07.2021, 12:35 Options

Hallo Marina,

mit der "Worksheet.Unprotect-Methode" kannst Du den Blattschutz aufheben. Schaue dazu mal in der VBA-Hilfe nach. Das wird dort ausführlich beschrieben.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Ähnliche Themen

VBA Code
Marodas  02.05.2008 - 68 Hits - 1 Antwort

Makro in VBA
Bollerkohl  21.08.2008 - 51 Hits - 7 Antworten

VBA zellenergebnisse in rechnungen weiter verwenden!?!
dala  17.01.2009 - 147 Hits - 3 Antworten

VBA in VB6 umwandeln?
dersuchendeX09  28.11.2009 - 706 Hits - 2 Antworten

Frage zu VBA / Excel
pamus  27.05.2009 - 273 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026