2017-05-23 2 views
0

Ich konvertiere eine TXT-Datei direkt in ein Array in Excel VBA. Das Standardtrennzeichen ist ein "," (Komma) und ich muss es in "vblf" ändern. Ich habe Probleme herauszufinden, wie ich das mit dem Code, den ich heute habe, machen kann.Konvertieren von TXT-Datei direkt in ein Array mit benutzerdefinierten Trennzeichen

Bitte helfen

Const strFileName As String = [file] 
    Dim CONFIGTXT(1 To 13000) As String 
    Dim intFileNum As Integer 
    Dim intCount As Integer 
    Dim strRecordData As String 

    intFileNum = FreeFile 
    intCount = 1 
    Open strFileName For Input As #intFileNum 
    Do Until EOF(intFileNum) Or intCount > 13000 
     Input #intFileNum, strRecordData 
     CONFIGTXT(intCount) = strRecordData 
     intCount = intCount + 1 

    Loop 
    Close #intFileNum 

    Range("Q2:Q" & UBound(CONFIGTXT) + 1) = WorksheetFunction.Transpose(CONFIGTXT) 
+0

Sie versuchen gerade, ein Array von Strings in eine 'String'-Variable zu platzieren. Das wird nicht funktionieren. Welche Form wollten Sie 'CONFIGTXT' haben? (Am Ende Ihres Codes scheint es, als wollten Sie ihn in eine einzelne Spalte einfügen, also klingt es so, als wollten Sie die Daten nicht wirklich "teilen".) – YowE3K

+0

Ich habe versehentlich meinen experimentellen Code gepostet. Bitte beachten Sie die bearbeitete Version. Ich bin mir nicht sicher, ob Split die richtige Funktion ist. Was passiert, ist, dass das Array jedes Mal, wenn es auf ein Komma in der Zeichenfolge stößt, ein neues Element erstellt, statt für jede Zeile in der TXT-Datei ein neues Array-Element. –

+0

"Was passiert, wenn das Array jedes Mal ein neues Element erstellt über ein Komma in der Zeichenfolge statt ein neues Array-Element für jede Zeile in der TXT-Datei "- Beschreibt das, was Sie ** wollen ** - dh Sie wollen einen neuen Eintrag im Array für jedes Element, anstatt Jeder Eintrag im Array repräsentiert einen Datensatz? Wenn Sie also zwei Datensätze haben, sagen beide "abc/def" '(wobei'/'eigentlich ein Zeilenvorschub ist), wollen Sie ein' 1 To 4' Array erstellen - Sie wollen kein '1 To 2, 1 Zu 2' Array? – YowE3K

Antwort

1

ändern

Input #intFileNum, strRecordData 

zu

Line Input #intFileNum, strRecordData 

Input soll in Daten lesen, die durch Komma getrennte ist, eine Variable zu einem Zeitpunkt. Zum Beispiel, wenn Sie Daten von

haben

12345.789

und verwendet, um die Anweisung

Input #intFileNum var1, var2 

dann würde var1 den Wert 12345 gegeben und var2 würde den Wert 789 gegeben werden .

Line Input soll jeweils eine Zeile lesen, die durch das neue Zeilenzeichen (normalerweise CR/LF) begrenzt wird.

Hinweis: Wenn Ihre Daten durch Zeilenvorschübe getrennt sind, werden diese Teile NICHT in separate Einträge im Array unterteilt. Also, wenn Ihre Daten enthalten

xxx/xxx/xxx

wo die / ist eigentlich ein Zeilenvorschub, die gesamte Datensatz wird in eine Zelle in der endgültigen Ausgabe platziert werden.

+0

FANTASTISCH ... endlich. Manchmal sind es die einfachen Dinge. –

+0

@ Dave-Oh Es muss etwa 10 bis 15 Jahre her sein, dass ich das letzte Mal die Notwendigkeit hatte, 'Input' anstatt' Line Input' zu verwenden, also dachte ich nicht einmal daran, dass dies ein Problem ist. Ich dachte nur, Sie hätten Daten mit LFs in der Mitte des Datensatzes und wollten den Datensatz so aufteilen, als ob jeder LF ein CR/LF wäre. – YowE3K

Verwandte Themen