2.7k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich möchte eine Text-Datei, deren Namen immer wieder unterschiedlich ist, in eine Excel-Tabelle einlesen. Am liebsten über ein Dialogfenster.
In der Text-Datei befinden sich Werte zwischen 50.000 - 60.000 Zeilen und 2 Spalten, welche durch ein Tabulaor-Zeichen getrennt sind. Beginnen sollte das Einfügen der Werte in der Tabelle ab der 15. Zeile.

Danke im Voraus

6 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
Sub TextDateieinlesen()
Dim strNamemitPfad As String ' Dateiname mit Pfad und Endung

strNamemitPfad = Application.GetOpenFileName("Textdateien " & _
"(*.txt; *.csv;*.asc),*.txt; *.csv; *.asc")
If strNamemitPfad = "Falsch" Then
MsgBox "Es wurde keine Datei ausgewählt", vbInformation, "Dateiauswahl wurde vermutlich abgebrochen"
Exit Sub
End If

Workbooks.OpenText FileName:=strNamemitPfad, Origin:=xlWindows, _
StartRow:=15, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1))

End Sub


das Modul von Microsoft, dass du die datei auswählen kannst, kommt im nächsten Beitrag, das fügst Du als neues Modul ein

Gruß marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Option Explicit

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Sub Command1_Click()
'Quelle http://support.microsoft.com/kb/161286
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = Form1.hwnd
OpenFile.hInstance = App.hInstance
sFilter = "Batch Files (*.bat)" & Chr(0) & "*.BAT" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\"
OpenFile.lpstrTitle = "Use the Comdlg API not the OCX"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "The User pressed the Cancel Button"
Else
MsgBox "The user Chose " & Trim(OpenFile.lpstrFile)
End If
End Sub
0 Punkte
Beantwortet von marie Experte (2k Punkte)
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False,


Das kannst Du natürlich alles rauslöschen, also grundsätzlich alles, was false ist kannst Du weglassen, hab ich halt der Bequemlichkeit halber dringelassen. Aber wenn Du es rauslöschst verstehst Du den Code vermutlich besser.

Gruß marie
0 Punkte
Beantwortet von marie Experte (2k Punkte)
upps
Tab:=True
musst du selbstverständlich drinlassen, sorry
0 Punkte
Beantwortet von
Hallo Marie,

vielen Dank für deine Hilfe. Es hat prima funktioniert.

Gruß Tech
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Das hast Du aber schnell gefunden :-))

Nix zu danken, gerne doch.
...