Objektvariable nicht festgelegt
07.11.2003 10:10:13
Torsten K.
aus meiner Anfrage "Daten kopieren aus mehreren Dateien" habe ich aus den Antworten von xXx und Michael Brüggemann versucht, einen Code zu basteln.
Option Explicit
Const strPath As String = _
"Y:\Budget 2004\Turnover_ADMIN\COPA_Upload\"
'Pfad der zu importierenden Dateien
Private Sub cmb_IMSO_Click()
Dim i As Integer
Dim wkbUpload As Workbook 'Dateien, aus welcher die Daten heraus kopiert werden sollen
Dim wksUpload As Worksheet 'WS, aus dem die Daten heraus kopiert werden sollen (Upload")
Dim wkbZiel As Workbook 'Datei, in welche die Daten eingefügt werden sollen (COPA_IMSO)
Dim wksDaten As Worksheet 'WS, in das die Daten eingefügt werden sollen
Dim intNächsteZeile As Integer
Dim intAnzahlZeilen As Integer
If GetPassword = True Then
Application.ScreenUpdating = False
Application.StatusBar = "Der Vorgang wird u.U. einige Minuten dauern. Geduld bitte!"
Set wkbZiel = Workbooks.Open(strPath & "COPA_IMSO", _
password:="", WriteResPassword:="") 'öffnet Zieldatei
Set wksDaten = wkbUpload.Sheets("Daten")
intNächsteZeile = wksDaten.UsedRange.Rows.Count + 1 'ermittelt nächste zu nutzende Zeile
Application.DisplayAlerts = False
With Application.FileSearch
.LookIn = "Y:\Budget 2004\Turnover_ADMIN\COPA_Upload\"
.SearchSubFolders = False
.Filename = "OEM_*"
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open Filename:=.FoundFiles(i)
Set wksUpload = wkbUpload.Sheets("Upload")
intAnzahlZeilen = wksUpload.UsedRange.Rows.Count
'ermittelt Anzahl zu kopierender Zeilen
wksUpload.Range(Cells(4, 1), Cells(intAnzahlZeilen, 108)).Copy
wksDaten.Range("$A$" & intNächsteZeile).Select
wksDaten.PasteSpecial
'wksDaten.PasteSpecial Destination:=wksDaten.Range("$A$" & intNächsteZeile)
Application.CutCopyMode = False
wkbUpload.Close savechanges:=False
intNächsteZeile = intNächsteZeile + intAnzahlZeilen - 3
'berechnet nächste Zeile im wksDaten
wkbZiel.Save
Next i
End If
End With
wkbZiel.Close
Else
MsgBox "Password ist falsch"
End If
Application.DisplayAlerts = True
Application.StatusBar = False
Application.ScreenUpdating = True
MsgBox "COPA-Datei wurde aktualsiert"
End Sub
Leider bleibt er an mehreren Stellen hängen mit der Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt", und zwar u.a. an folgenden Stellen, obwohl ich die Objektvariablen definiert habe:
- Set wksDaten = wkbUpload.Sheets("Daten")
- intNächsteZeile = wksDaten.UsedRange.Rows.Count + 1
sowie
- .LookIn = "Y:\Budget 2004\Turnover_ADMIN\COPA_Upload\"
.SearchSubFolders = False
.Filename = "OEM_*"
- For i = 1 To .FoundFiles.Count
Was muß ich denn noch berücksichtigen, damit dieser Code läuft?
In dem Zusammenhang fällt mir ein, daß in dem UsedRange (A4:DDxxxx)nicht alle Spalten mit Werten gefüllt sind. Kann das auch zu Fehlern führen und wenn ja, wie muß ich den Code dann anpassen?
Für Eure Hilfestellungen (und Geduld!) im voraus besten Dank.
Gruß
Torsten