Herbers Excel-Forum - das Archiv

VBA Import von .ASC Dateien

Bild

Betrifft: VBA Import von .ASC Dateien
von: Manfred

Geschrieben am: 23.03.2005 09:27:37
Hallo,
ich habe folgendes Problem:
In einer Arbeitsmappe liste ich mir die in Frage kommenden Dateien auf einem Arbeitsblatt in den Zellen B2-B10 auf. Daraus kann ich den kompletten Pfad zur zu importierenden Datei auslesen und in VBA verwenden. Mit folgendem Code soll dann jeweils ein neues Arbeitsblatt eingefügt und die Datei importiert werden:
***Code Anfang***
Option Explicit
Public file_fullname As String
Public file_name As String
Public file_path As String
Public s_name As String
Public sname As String

Sub file_check()
Dim a As Byte
Dim i As Byte
Dim ri As Byte
Worksheets("files").Activate
file_path = Range("a1").Text
a = Selection.Count
For i = 1 To a
ri = i + 1
file_name = Sheets("files").Range("B" & ri).Text
sname = Mid(file_name, 53, 10)
s_name = Right(sname, 4) & Mid(sname, 3, 3) & "-" & Left(sname, 2)
Debug.Print s_name
file_fullname = file_path & file_name & ".asc"
Debug.Print file_fullname
'Workbooks.Open file_fullname
Sheets.Add after:=Sheets(Sheets.Count), Type:=xlWorksheet
ActiveSheet.Name = s_name
Call file_import
Next i
End Sub


Sub file_import()
With ActiveSheet.QueryTables.Add(Connection:="TEXT;file_fullname" _
, Destination:=Range("A1"))
.Name = "file_name"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Cells.Select
Selection.ColumnWidth = 11
Range("A1").Select
End Sub

***Code Ende***
Das Problem ist, dass er jedesmal zwar ein einziges neues Blatt mit dem richtigen Namen anlegt, aber den Import abbricht mit der Meldung:
Laufzeitfehler '1004':

Excel kann die Textdatei für die Aktualisierung des externen Datenbereichs nicht finden.
Vergewissern Sie sich, dass die Textdatei nicht verschoben oder umbenannt wurde.
Wiederholen Sie anschließend die Aktualisierung.
Sobald ich den Pfad direkt in den Code eingebe, ohne Verweis auf eine Variable, geht es. Weiter nicht.
Wer kann mir hier helfen???
Gruß, Manfred.
Bild

Betrifft: AW: VBA Import von .ASC Dateien
von: Frank Domke
Geschrieben am: 23.03.2005 10:30:30
Hallo Manfred,
versuch es mal so:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & file_fullname & """" _
, Destination:=Range("A1"))
Viel Erfolg
Frank.
Bild

Betrifft: AW: VBA Import von .ASC Dateien
von: Manfred

Geschrieben am: 23.03.2005 10:43:14
Hallo,
ich habe das nach deinem Vorschlag geändert. Nun kommt folgende Fehlermeldung:
Laufzeitfehler '1004':

Auf die Datei konnte nicht zugegriffen werden. Versuchen Sie die folgenden
Lösungsvorschläge:

• Überprüfen Sie, ob der angegebene Ordner existiert.
• Stellen Sie sicher, dass der Ordner, in dem sich die Datei befindet, nicht
schreibgeschützt ist.
• Vergewissern Sie sich, dass der Dateiname keines der folgenden Zeichen enthält: < >
? [ ] : | oder *
• Der Dateiname darf nicht länger sein als 218 Zeichen.
Ich habe dann einmal über Workbooks.open probiert, ob meine Variable überhaupt die richtige Datei öffnet, und das klappt. Warum nicht der Import?!?!?!?
mfg
Manfred.
Bild

Betrifft: AW: VBA Import von .ASC Dateien
von: Frank Domke
Geschrieben am: 23.03.2005 14:19:50
Hallo Manfred,
ich hatte den Code nicht getestet sondern nur gesehen, dass Du die Variable im String verpackt hattest. Damit man Dein Problem nachstellen kann, kopiere doch mal 3 Zeilen Deiner Accii Datei in den Thread!
Gruß
Frank.
Bild

Betrifft: AW: VBA Import von .ASC Dateien
von: Frank Domke

Geschrieben am: 23.03.2005 14:27:24
Hallo Manfred,
so müsste es klappen:
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.QueryTables.Add(Connection:="TEXT;" & file_fullname & """", _
Destination:=ws.Cells(1, 1))
' ....
End With
Viel Erfolg
Frank.
 Bild
Excel-Beispiele zum Thema "VBA Import von .ASC Dateien"
Zeichenfolgen in Zahlen nach Textimport Textimport aus Text-Datei mit Smikoli als Feldtrenner
Import aus dem Internet Textimport mit Semikolon als Feldseparator
In importierter Textdatei englische Werte in deutsche wandeln Textdatei in Tabellenblatt importieren
Nach Textimport Strings in Zahlen wandeln Textdatei nach Begriff durchsuchen und Fundzeile importieren
Diagramm exportieren und in Tabellenblatt importieren Suchbegriffe in UserForm eingeben, Fundstelle importieren