Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anwendungs- oder objektdefinierter Fehler

Anwendungs- oder objektdefinierter Fehler
Josef
Hallo!
Ich bekomme nach dem Start des Makros immer den Fehler Anwendungs- oder objektdefinierter Fehler.
Das Makro hatte bereits funktioniert . Ich hatte nur den Pfad geändert:
Im Ordner mit der Variable dokname3 befinden sich csv Dateien, welche dann eingelsen werden.
Wo könnte hier der Fehler bitte sein?
Danke
Josef

Sub CSV2XLS()
'Alle .txt (Trennzeichen ;) eines Ordners in .xls umwandeln
Dim oFS As Object, oFolder As Object, oFile As Object
Dim strFolder As String
Dim strTxt As String, myArr, lngL As Long, wks As Worksheet, iFREE As Integer
Dim dokname
Dim dokname2
Dim dokname3
Dim wks2 As Worksheet
Set wks2 = Workbooks("Import_Ersatz.xls").Worksheets("Tabelle1")
dokname = wks2.Range("Tabelle1!D1").Value
dokname2 = wks2.Range("Tabelle1!D2").Value
dokname3 = wks2.Range("Tabelle1!F3").Value
If Dir("K:\Allg_dat\TRANSFER\HST\ABT08\" & dokname2 & dokname & "\" & dokname3 & "\")  ""  _
Then
With Application.FileDialog(4)
.InitialFileName = "K:\Allg_dat\TRANSFER\HST\ABT08\" & dokname2 & dokname & "\" &  _
dokname3 & "\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
Else
MsgBox "Der Ordner wurde noch nicht angelegt"
Exit Sub
End If
Workbooks.Add
Sheets("Tabelle3").Select
Sheets.Add
Sheets("Tabelle4").Select
Sheets("Tabelle4").Move After:=Sheets(4)
Sheets("Tabelle4").Select
Sheets("Tabelle4").Name = "Rest"
On Error GoTo FEHLER
DoEvents
GetMoreSpeed
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder(strFolder)
iFREE = FreeFile
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Set wks = Worksheets.Add
wks.Name = Left(oFile.Name, 25)
lngL = 1
Open oFile For Input As iFREE
'Do Until EOF(iFREE)
' Line Input #iFREE, strTxt
' myArr = Split(strTxt, ";")
' For I = 0 To UBound(myArr)
'   myArr(I) = Trim(myArr(I))
' Next
' With WKS
'   .Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
' End With
' lngL = lngL + 1
'Loop
Do Until EOF(iFREE)
Line Input #iFREE, strTxt
myArr = Split(strTxt, ";")
With wks
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
lngL = lngL + 1
Loop
Close #iFREE
End If
Next oFile
Call Umbenennen
Call Format
Call Zeichenkorrektur
Call DS_Löschen
Call Bundeslandzahl
Call Verarbeitung_Oesterreich
Call Korrektur
Call Ueberschriften
Call Verarbeitung_Rest
AUFRAEUMEN:
Set oFile = Nothing
Set oFolder = Nothing
Set oFS = Nothing
GetMoreSpeed False
Exit Sub
FEHLER:
If Err.Number Then
MsgBox "Fehler!" & vbLf & Err.Description
Err.Clear
Resume AUFRAEUMEN
End If
End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
07.07.2009 10:00:05
Josef
Hallo!
Habe die Zeile gesucht bei der der Fehler auftaucht.
Der Fehler erfolgt bei der Zeile
With wks
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
Danke
Josef
AW: Anwendungs- oder objektdefinierter Fehler
07.07.2009 10:25:50
Luschi
Hallo Josef
wenn bei dieser Vba-Zeile 'Line Input #iFREE, strTxt' die Variable 'strTxt' leer ist, also eine _ Leerzeile aus der csv-Datei eingelesen wurde, dann kommt es zu dieser Fehlermeldung.

Line Input #iFREE, strTxt
If ""  strTxt Then
myArr = Split(strTxt, ";")
With wks
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
lngL = lngL + 1
End If

Gruß von Luschi
aus klein-Paris

Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
07.07.2009 10:51:51
Josef
Hallo Luschi!
Danke für Deine Antwort.
Habe jetzt in den csv Dateien.in der ersten Zeile ein Leerzeichen (Tab) gesetzt). Es wurde auch die erste Datei eingelesen.
Jetzt bekomme ich beim Einlesen der zweiten Datei folgende Fehlermeldung:
Kann einem Blatt nicht den gleichen Namen geben wie einem anderen Blatt, einer Objektbibliothek oder einer Arbeitsmappe, auf die Visual Basic Bezug nimmt.
Das ganze passiert glaube ich in diesen Zeilen:
Set wks = Worksheets.Add
wks.Name = Left(oFile.Name, 25)
Danke
Josef
AW: Anwendungs- oder objektdefinierter Fehler
07.07.2009 11:00:22
Luschi
Hallo Josef,
wenn ich csv_Dateien aus dem Firmen-Intranet downloade, dann haben die auch immer urst lange Dateinamen. Wenn sich, wie in Deinem Fall, diese Dateinamen auf den 1. bis 25. Zeichen gleichen wie ein Ei dem anderen, dann bleibt Dir nichts weiter, einen weiteren internen Zähler einzusetzen und den als 26. Zeichen am neuen Blattnamen anzuhängen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
07.07.2009 14:20:09
Josef
Hallo Luschi!
Jetzt habe ich es. Ich danke Dir für Deine Hilfe und wünsche Dir noch einen Tag.
mfG
Josef

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige