Hallo zusammen, ich arbeite mich aktuell in VBA ein. Habe folgende Aufgabe:
Ich muss eine .txt Datei in eine .xls Datei umwandeln. Dabei existieren auch gewisse Anforderungen:
1) Alle Spalten müssen unbenannt werden. Es gibt insgesamt 15 Spalten, die unbenannt werden müssen. Kann ich da einfach 15 mal die Replace-Function_ verwenden oder gibt es da bessere Varianten?
2) Es müssen 5 neue Spalten hunzugefügt werden. Es müssen aber keine Daten in die Spalten eingefügt werden
3) Es müssen gewisse Spalten gelöscht werden, weil sie im neuen System (.xls) nicht relevant sind
4) Manche Spalten müssen als NUM gesetzt werden. Unterscheid Excel eigentlich zwischen verschiedenen Inhalten? Also als Beispiel Text, Num etc?
5) Manche Spalten müssen als Protected gesetzt werden
Meine Lösung:
1) Dazu habe ich jeweils für jede Spalte immer eine Replace-Function angewendet
Für den Rest habe ich noch keine Lösung. Ist es möglich, dass ihr mir eventuell Lösungsansätze oder Denkanstöße geben könntet?
Aktuell lasse ich die .txt Dateil einlesen, die Spalten unbenennen und in die aktuelle Arbeitsmappe einfügen
so schaut mein Code aus:
Sub convert()
Dim ZeileMax As Integer, j As Integer, i As Integer
Dim temp, Text
ZeileMax = Sheets(1).UsedRange.Rows.Count
Debug.Print ZeileMax
Open "c:/work/Konverter/Example.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, temp
temp = Replace(temp, "STUDYID", "Study Number")
temp = Replace(temp, "PCTEST", "Analyte")
temp = Replace(temp, "PCSPEC", "Matrix")
temp = Replace(temp, "USUBJID", "Subject")
temp = Replace(temp, "VISITDY", "Day Nominal")
temp = Replace(temp, "PCTPTNUM", "Hour Nominal")
temp = Replace(temp, "PCORRES", "Concstat")
temp = Replace(temp, "PCSTRESU", "Concentration Unit")
temp = Replace(temp, "PCREASND", "Condition")
ActiveSheet.Cells(ZeileMax, 1) = temp
For j = 1 To ZeileMax
Text = Split(Cells(j, 1), vbTab)
For i = 0 To UBound(Text)
Cells(j, i + 1) = Text(i)
Next
Next
ZeileMax = ZeileMax + 1
Loop
Close #1
End Sub
Ist meine aktuelle Vorgehensweise so in Ordnung?Ich freue mich über jede Hilfe.
|