Anzeige
Archiv - Navigation
1448to1452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

nur einige Daten aus TXT Datei

nur einige Daten aus TXT Datei
26.09.2015 23:40:04
Andre´
Hallo alle zusammen,
nachfolgend die Daten in der txt.Datei https://www.herber.de/bbs/user/100417.txt
Userbild
Mit einem Makro möchte ich nur folgendes auslesen
Userbild
Kann mir jemand behilflich sein.
Vielen Dank im Voraus!
MFG Andre

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur einige Daten aus TXT Datei
27.09.2015 00:04:36
Daniel
Hallo
    With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Pfad\100417.txt", Destination:=Range("$A$1"))
.CommandType = 0
.Name = "100417"
.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 = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 9, 9, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
mit .TextFileColumnDataTypes = Array(1, 1, 9, 9, 1, 1) legst du fest, welche Spalten importiert werden (1) und welche nicht (9).
Gruss Daniel

Anzeige
AW: nur einige Daten aus TXT Datei
27.09.2015 00:42:07
Andre´
Hallo Daniel,
danke für den Tipp, ohne .CommandType = 0 funktioniert es fast.
Teil3 soll in der Spalte A stehen, Bescheibung3 in B ...
Gibt es keine andere Möglichkeit, als die Datenverbindung?
Vielleicht über Split.
'Text Zeilenweise in ein Array
ArrayData = Split(sInhalt, vbCrLf)
MFG Andre

AW: nur einige Daten aus TXT Datei
27.09.2015 01:24:48
Daniel
HI
du kannst auch die Datei normal als Textdatei öffnen.
dann musst du halt die Spalten, die du nicht brauchst löschen und durch ausschneiden und an anderer Stelle einfügen die richtige Reihenfolge herstellen.
gruss Daniel

AW: nur einige Daten aus TXT Datei
27.09.2015 08:45:14
Sepp
Hallo André,
teste mal. Importiert wird in die Tabelle1!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub importTXT()
Dim objADO As Object, objRS As Object
Dim strPath As String, strFile As String, strSQL As String
Dim lngI As Long

With Application.FileDialog(msoFileDialogFilePicker)
  .InitialFileName = "E:\Forum"
  .Title = "Datei auswählen"
  .ButtonName = "Import Starten"
  .Filters.Clear
  .Filters.Add "Text Dateien", "*.txt; *.csv", 1
  .Filters.Add "Alle Dateien", "*.*", 2
  .FilterIndex = 1
  .InitialView = msoFileDialogViewList
  If .Show = -1 Then strFile = .SelectedItems(1)
End With

strPath = Mid(strFile, 1, InStrRev(strFile, "\"))
strFile = Mid(strFile, InStrRev(strFile, "\") + 1)

If Len(strFile) Then
  With Sheets("Tabelle1")
    .UsedRange.ClearContents
    If MakeSchemaINI(strFile, strPath) Then
      Set objADO = CreateObject("ADODB.CONNECTION")
      objADO.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strPath & _
        "; Extended Properties=""text; HDR=Yes; FMT=Delimited; IMEX=1;"""
      Set objRS = CreateObject("ADODB.RECORDSET")
      strSQL = "SELECT [Teil3],[Beschreibung3],[Teil1],[Beschreibung1] From [" & strFile & "]"
      objRS.Open strSQL, objADO, 3, 1, 1
      If Not objRS.EOF Then
        For lngI = 1 To objRS.Fields.Count
          .Cells(1, lngI) = objRS.Fields(lngI - 1).Name
        Next
        .Cells(2, 1).CopyFromRecordset objRS
      End If
      objRS.Close
      objADO.Close
    End If
    .Columns.AutoFit
  End With
End If
End Sub

Private Function MakeSchemaINI(FileName As String, Path As String) As Boolean
Dim strFile As String, strText As String
Dim ff As Integer

MakeSchemaINI = True

On Error GoTo ErrExit

If Right(Path, 1) <> "\" Then Path = Path & "\"

strFile = Path & "Schema.ini"


strText = "[" & FileName & "]" & vbCrLf & _
  "Format=Delimited(;)" & vbCrLf & _
  "ColNameHeader=True" & vbCrLf & _
  "MaxScanRows=0" & vbCrLf


ff = FreeFile

Open strFile For Output As #ff
Print #ff, strText;
Close #ff

Exit Function

ErrExit:
MakeSchemaINI = False
End Function

Gruß Sepp

Anzeige
kleine Anpassung
27.09.2015 09:04:35
Sepp
Hallo André,
nimm diese Version von "MakeSchemaINI", dann werden die Teilenummern als Zahl importiert.
Private Function MakeSchemaINI(FileName As String, Path As String) As Boolean
Dim strFile As String, strText As String
Dim ff As Integer

MakeSchemaINI = True

On Error GoTo ErrExit

If Right(Path, 1) <> "\" Then Path = Path & "\"

strFile = Path & "Schema.ini"


strText = "[" & FileName & "]" & vbCrLf & _
  "Format=Delimited(;)" & vbCrLf & _
  "ColNameHeader=True" & vbCrLf & _
  "MaxScanRows=0" & vbCrLf & _
  "Col1=Teil1 Long" & vbCrLf & _
  "Col2=Beschreibung1 Text" & vbCrLf & _
  "Col3=Teil3 Long" & vbCrLf & _
  "Col4=Beschreibung3 Text" & vbCrLf


ff = FreeFile

Open strFile For Output As #ff
Print #ff, strText;
Close #ff

Exit Function

ErrExit:
MakeSchemaINI = False
End Function

Gruß Sepp

Anzeige
Bullshit!
27.09.2015 10:19:47
Sepp
Hallo nochmal,
die deklaration von 'strText' muss natürlich si lauten.
strText = "[" & FileName & "]" & vbCrLf & _
  "Format=Delimited(;)" & vbCrLf & _
  "ColNameHeader=True" & vbCrLf & _
  "MaxScanRows=0" & vbCrLf & _
  "Col1=Teil1 Long" & vbCrLf & _
  "Col2=Beschreibung1 Text" & vbCrLf & _
  "Col3=Teil2 Long" & vbCrLf & _
  "Col4=Beschreibung2 Text" & vbCrLf & _
  "Col5=Teil3 Long" & vbCrLf & _
  "Col6=Beschreibung3 Text"

Gruß Sepp

Anzeige
AW: Bullshit!
27.09.2015 12:04:31
Andre´
Hallo Sepp,
auch dir DANKE für den Lösungsvorschlag, es funktioniert erstmal wie gewünscht.
Ich werde es ausgiebig testen.
Im 2. Schritt will ich einige Zeilen nicht einlesen, wenn an einer bestimmten Stelle im String eine gewisse Zeichenfolge ist, deshalb dachte ich an einer Lösung mit Array und dann Zeilenweise wiedergeben.
MFG Andre

AW: Bullshit!
27.09.2015 12:12:13
Sepp
Hallo André,
sag halt, was du genau willst, das lässt sich sicher auch mit meinem Code erledigen.
Gruß Sepp

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige