2016-09-18 6 views
0

Ich habe mehrere TXT-Dateien (nahe 1000) und möchte Excel importieren. Ich habe den Text-Import-Assistenten verwendet und dann die feste Breite gewählt. Meine Frage ist, wie man für jede Datei das gleiche Format verwendet, das ich nicht jedes Mal anpassen muss.Wie wird die Spalte automatisch geteilt?

Dies ist das Beispiel Link: http://www.fhwa.dot.gov/bridge/nbi/1992/AL92.txt

Dies ist das Aufzeichnungsformat: http://www.fhwa.dot.gov/bridge/nbi/format.cfm

+1

Sie können entweder die VBA 'Range.Parse' Methode oder die' Workbooks.OpenText' Methode verwenden und die * FieldInfo * entsprechend definieren. Wenn Sie Probleme mit Ihrem Code haben, schreiben Sie ihn mit Ihrem Code zurück und erklären Sie das Problem damit. –

+1

Sie können auch die 'QueryTables.Add' Methode verwenden. Zeichnen Sie auf jeden Fall ein Makro auf, während Sie tun, was Sie wollen, und bereinigen Sie es dann. –

Antwort

0

Ihnen ein wenig Zeit ich das Array vorbereitet zu speichern (aus dem Format Web-Seite oben verlinkten) für die Querytables/Importiere für dich basierend auf @ RonRosenfelds Rat und habe schnell eine Textdatei importiert (die ich aufgenommen habe). Muss hier einfügen, weil es zu groß für Kommentare ist. Sie müssten natürlich entsprechend anpassen.

With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\AL92.txt", Destination:=Range("$A$1")) 
    .RefreshOnFileOpen = False 
    .RefreshStyle = xlInsertDeleteCells 
    .RefreshPeriod = 0 
    .TextFilePromptOnRefresh = False 
    .TextFilePlatform = 850 
    .TextFileStartRow = 1 
    .TextFileParseType = xlFixedWidth 
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 
    .TextFileFixedColumnWidths = Array(3, 15, 1, 1, 1, 5, 1, 2, 3, 5, 24, 1, 18, 25, 4, 7, 1, 10, 2, 8, 9, 3, 1, 2, 2, 2, 4, 2, 2, 6, 4, 1, 4, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 1, 1, 1, 2, 1, 2, 3, 4, 3, 5, 6, 3, 3, 4, 4, 4, 1, 4, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 6, 4, 2, 3, 3, 3, 4, 4, 4, 6, 6, 6, 4, 3, 2, 15, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 2, 1, 1, 1, 1, 6, 4, 4) 
    .TextFileTrailingMinusNumbers = True 
    .Refresh BackgroundQuery:=False 
End With 
+0

Vielen Dank, aber ich würde gerne wissen, was es falsch ist (.Refresh BackgroundQuery: = False) – Jeffrey

+0

Wenn Sie einen Fehler in dieser Zeile erhalten versuchen Sie loszuwerden der BackgroundQuery: = False und sehen, wie das geht. Ich habe gerade wieder mit beiden getestet und es funktionierte wie gestern. –

Verwandte Themen