andre05308
Goto Top

Konvertierung von Tabstopp getrennten Textdateien in xls Format mit VBA

Hallo Administrator.de User,

ich arbeite seit kurzem mit VBA um eine größere Menge von Messdaten in Excel zusammenzuführen und auszuwerten. In diesem Forum habe ich mich angemeldet, da ich schon vom mehreren Beiträgen profitiert habe und die Mitglieder schnelle und kompetente Antworten geben. Außerdem hoffe ich meine Fähigkeiten auszubauen um auch anderen Usern helfen zu können.

Ich bekomme von einem Programm Textdateien mit einem Zahlenteppich ausgeben, der eine variable Anzahl von Zeilen und Spalten hat.
Die Spalten sind durch Tabstopps getrennt und die Zeilen durch Zeilenumbrüche. Alle Dateien befinden sich im selben Verzeichnis und haben verschiedene Dateinamen.

Auszug des Inhalts einer Textdatei:

0,26	0,35	0,41	0,46	0,47	0,48	0,49	0,50	0,52
0,54	0,53	0,52	0,49	0,46	0,45	0,44	0,46	0,47
0,49	0,51	0,48	0,45	0,45	0,50	0,50	0,60	0,69
0,78	1,05	1,12	1,19	1,31	1,42	1,46	1,50	1,54

Nun möchte ich diese Dateien mit der Hilfe von VBA in eine Datei mit dem Format .xls umwandeln.
Die Dateinamen sollen bestehen bleiben.

Ich arbeite mit MS Office 2007

Ich hoffe ich habe keine wichtigen Informationen vergessen.

Vielen Dank im Voraus!

Content-Key: 172564

Url: https://administrator.de/contentid/172564

Printed on: April 25, 2024 at 05:04 o'clock

Member: Skyemugen
Skyemugen Sep 05, 2011 at 09:28:25 (UTC)
Goto Top
Aloha,

du weißt aber, dass Excel die Datei auch simpel öffnen kann, wenn du die Endung von .txt in .xls umänderst? (um das für alle Dateien zu tun, reicht ein simpler cmd-oneliner face-wink)

Zwar meckert es einmalig beim Öffnen rum aber unterteilt dennoch sauber in Zeilen und Spalten face-wink (und man kann dann ja speichern klicken und schon wird es mit der Excelkonfiguration überschrieben)

greetz André
Mitglied: 99045
99045 Sep 05, 2011 at 09:49:58 (UTC)
Goto Top
Hi,

es gibt mehrere Möglichkeiten, die .txt mit Excel zu öffnen:

1. Rechtsklick auf die Textdatei > Öffnen mit > Excel
2. Verknüpfung zu Exec.exe erstellen, Textdatei mit Drag&Drop auf diese Verknüpfung ziehen
3. Exxel > Datei > Öffnen > Dateityp auf .txt stellen > Textdatei öffnen > Fragen nach der Formatierung beantworten (steht eigentlich schon richtig) > Textdatei auswählen > "Fertig stellen"

In allen Fällen als .xls speichern.

Umbenennen muss man die Textdatei dazu nicht.

Wenn's denn doch wirklich mit VBA sein muss: Das ist nicht mein Ding. face-wink

Gruß
Member: bastla
bastla Sep 05, 2011, updated at Oct 18, 2012 at 16:48:10 (UTC)
Goto Top
Hallo Andre05308 und willkommen im Forum!

Vor laaanger Zeit habe ich hier mal etwas zu einem ähnlichen Thema (allerdings als VBS) verbrochen - wenn Du in Zeile 52 ein Komma weglässt, sollte auch "TAB" als Trennzeichen verwendet werden.

Grüße
bastla
Member: Andre05308
Andre05308 Sep 05, 2011 at 12:48:32 (UTC)
Goto Top
Vielen Dank für die schnellen und sehr hilfreichen Antworten, hat mir sehr geholfen!!! Ich bin echt begeistert von diesem Forum, habe nicht mit so schnellen Antworten gerechnet. Die Lösung von bastla hat mich schnell zm Ziel gebracht, ich musste lediglich noch das .csv in der .bat durch ein .txt ersetzen.

Eine Frage habe ich noch: Kann ich die VBS auch in ein Modul meiner PERSONAL.XLSB schreiben oder zumindest aus einem Modul aus aufrufen?

Oder sollte ich lieber versuchen mich auf VBS umzustellen und nur noch mit vbs Dateien arbeiten?

Grüße André
Member: bastla
bastla Sep 05, 2011 at 13:10:05 (UTC)
Goto Top
Hallo Andre05308!
Kann ich die VBS auch in ein Modul meiner PERSONAL.XLSB schreiben?
Nicht 1:1 - aber Du könntest versuchen, Dich schrittweise an eine VBA-Version heranzutasten (einige Kommentare sind ja dabei); ein eigenes "Excel"-Objekt müsstest Du zB nicht erzeugen, wenn Du ohnehin schon Excel verwendest ...
sollte ich lieber versuchen mich auf VBS umzustellen und nur noch mit vbs Dateien arbeiten?
Nicht unbedingt - von der Systemebene her (wie zB Aufruf per Batch) ist VBS besser verwendbar, ansonsten ist VBA handlicher (Stichwort: Editor) und auf Office "zugeschnitten" - daher je nach Bedarf.

Grüße
bastla
Mitglied: 99045
99045 Sep 05, 2011 at 13:13:28 (UTC)
Goto Top
@bastla

Moin,

hab im Netz den Code gefunden, du kannst ihn ja evtl. für TAB anpassen, wenn du Lust hast? Ich mag VBA nicht. face-smile

Option Explicit 

Sub Convert_CSV_to_XLS() 
Dim i As Long, verz As String 
Dim dateiForm As String 
'Mit Backslash am Ende   
verz = "C:\Ordner1\"   
'Dateiform   
dateiForm = "csv"   
On Error GoTo fehler 
ChDrive Left(verz, 2) 
ChDir verz 
With Application.FileSearch 
    .NewSearch 
    .LookIn = verz 
    .SearchSubFolders = False 
    .FileType = msoFileTypeAllFiles 
    .Execute 
     For i = 1 To .FoundFiles.Count 
          Application.StatusBar = "Datei " & i & " von " & .FoundFiles.Count & " wird bearbeitet"   
          If Right(.FoundFiles(i), 3) = dateiForm Then 
               Application.ScreenUpdating = False 
               Debug.Print .FoundFiles(i) 
               Workbooks.Open .FoundFiles(i), local:=True 
               ActiveWorkbook.SaveAs Left(.FoundFiles(i), Len(.FoundFiles(i)) - 3) & "xls"   
               ActiveWorkbook.Close False 
               Application.ScreenUpdating = True 
          End If 
     Next i 
End With 
ErrorExit: 
Application.ScreenUpdating = True 
Application.StatusBar = False 
Exit Sub 

fehler: 
MsgBox Err.Number & "; " & Err.Description   
Resume ErrorExit 
End Sub

Gruß
Member: bastla
bastla Sep 05, 2011 at 13:31:20 (UTC)
Goto Top
@99045

Ich mag's zwar nicht testen, aber mit der folgenden Zeile 24 könnte das gehen:
               .Workbooks.OpenText .FoundFiles(i) , , , , , , True
Grüße
bastla
Mitglied: 99045
99045 Sep 05, 2011 at 13:45:04 (UTC)
Goto Top
Danke, bastla,
brauchst du auch nicht zu testen, es war nur als evtl. Tipp für den TO gedacht.

Gruß