Ich habe dieses Forum gefunden, als ich versuchte, meinen VBA-Code zu sortieren. Ich habe bisher nur sehr wenig Erfahrung in der VBA-Programmierung. Deshalb habe ich seit zwei Tagen nach einer Lösung für mein Problem gesucht, bisher ohne Erfolg. Allerdings bin ich sehr daran interessiert, meine Programmierkenntnisse zu verbessern und ich hoffe, dass Sie mir dabei helfen können.
Grundsätzlich möchte ich eine TXT-Datei in die aktive Excel-Arbeitsmappe importieren, Blatt mit dem Namen "DataImport", am Ende der Tabelle mit dem Namen "TblDataImport".
Die TXT-Datei besteht aus 13 Spalten, die durch Tabs getrennt sind:
- Zeile: Unternehmensname
- Zeile: Datum Name Kundengruppe Kundennummer Auftragsnummer Artikelnummer Artikelgruppe Linienstatus Menge Preis Rabatt Rabattprozentsatz Nettobetrag
- Zeile: Alle entsprechenden Werte...
Ich muss die erste und die zweite Zeile nicht importieren, da die Tabelle, in die ich die Daten importieren möchte, bereits vorhanden ist, einschließlich Überschriften. Außerdem benötige ich nur 7 der 13 Spalten, die fett formatiert sind. Es wäre perfekt, wenn der Benutzer die Textdatei über einen Datei-Öffnen-Dialog auswählen könnte.
Wenn ich die TXT-Datei manuell öffne und ihren Inhalt in Excel einfüge, wird er bereits in die richtigen Spalten eingefügt. Es sollte also keine Probleme mit der Formatierung geben.
Ich bin gespannt auf die Lösungen, die Sie finden.
Mit dem Makrorekorder kann ich nur einige meiner Bedingungen erfüllen:
Sub DataImport()
' DataImport Makro
Sheets("DataImport").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\Sales.txt", Destination:=Range _
("$A$1"))
.Name = "AxaptaSales"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(4, 1, 9, 9, 1, 9, 9, 9, 1, 1, 1, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Dieser Code fügt jedoch alle Spalten nur in Zelle A1 ein (nicht am Ende der Tabelle). Außerdem enthält er die erste und zweite Zeile sowie die Spalten, die ich nicht benötige.