Suche aus der txt-Datei
#1
Hallo Excel-Group-User,

ich hoffe jemand kann mir helfen bzgl. eines VBA script. Das Script sollte aus MAIN-Tabelle die Text-Datei, C:\TEMP\wlist.txt, die ersten Spalte durchsuchen.
 
Ist die Suche erfolgreich, trägt aus der Spalte 2 der Text-Datei den Wert in der Spalte I ein.

zB findet in der ersten Spalte der TXT-Datei “hostname”, trägt in Spalte I den Wert “display host name“ ein. Wiederholgen sind in der Spalte H wohl möglich.
 
Die TXT Datei hat nur 2 Spalte und etwa 500 Zeilen.

danke für die Hilfe.


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 9 KB / Downloads: 13)
.txt   wlist.txt (Größe: 792 Bytes / Downloads: 23)
Antworten Top
#2
Moin,

wozu VBA? Das kann doch Powerquery viel einfacher.
Falls es doch VBA sein soll: Welche vorarbeit hast du schon geleistet? An welchem konkreten Problem hakt es noch? wie sieht dein jetztiger Code aus, welche Fehler wirft er aus? Welche Vorkenntnisse hast du? Oder handelt es sich um einen Programmierauftrag?

Viele Grüße
derHöpp
Antworten Top
#3
Hallo Zusammen
Die Action ist schwieriger als ich dachte. Denn von SAP gelieferte Excel Datei hat weitgehend komplizierte Struktur.
Dennoch, hier eine Lösung :
1:die Spalten in der Text-Datei müssen via TAB getrennt sein und zwar nur eine TAB-Taste.
2:die erste Spalte in der Text-Datei ist Case sensitive.
Ihr könnte so anpassen, wie Ihr wollt.



Sub test()
    Dim ws As Worksheet
    Dim txtFile As String
    Dim txtLine As String
    Dim txtArray() As String
    Dim cell As Range
    Dim fso As Object
    Dim ts As Object
    Dim dict As Object
    Dim searchTerms As Variant
    Dim term As Variant
   
    Set ws = ThisWorkbook.Sheets("sapi")
    txtFile = "C:\temp\wlist.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(txtFile, 1)
    Set dict = CreateObject("Scripting.Dictionary")
    Do While Not ts.AtEndOfStream
        txtLine = ts.ReadLine
        txtArray = Split(txtLine, vbTab)
        If UBound(txtArray) >= 1 Then
            dict(CStr(txtArray(0))) = txtArray(1)
        End If
    Loop
    ts.Close

    searchTerms = Array("Call", "Cd", "dir", "Cmd", "Color")

    For Each cell In ws.Range("H14:H" & ws.Cells(ws.Rows.Count, "H").End(xlUp).Row)
        For Each term In searchTerms
            If InStr(1, cell.Value, term, vbTextCompare) > 0 Then
                If dict.exists(CStr(cell.Value)) Then
                    cell.Offset(0, 1).Value = dict(CStr(cell.Value))
                Else
                    cell.Offset(0, 1).Value = "Not Found"
                End If
                Exit For
            End If
        Next term
    Next cell

    Set dict = Nothing
    Set ts = Nothing
    Set fso = Nothing
End Sub
Antworten Top
#4
Code:
Sub M_snb()
  Sheets.Add , Sheets(Sheets.Count), , "G:\OF\wlist.txt"
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste