txt-Datei in Excel einlesen und als xls-Datei speichern
-
Hallo Leute,
hab folgendes Problem. Ich hab eine Textdatei mit Daten, die ich nun in eine Exceltabelle speichern möchte. Das an sich ist auch kein Problem. Das Problem kommt beim speichern. Er speichert es zwar mit der Endung .xls es bleibt aber als txt-Datei gespeichert. Wenn man sich den VBA-Befehl anschaut sieht man das man nach dem Dateinamen noch einen Parameter FileFormat:= _xlNormal angeben muss. Meine Frage ist nun wie bekomme ich das hin? Kann man den Parameter irgendwie vorher setzen? Oder vielleicht mit in der SaveAs-Funktion?
Mein Code sieht folgender maßen aus:
try { Excel = GetActiveOleObject("Excel.Application"); } catch(...) { Excel = CreateOleObject("Excel.Application"); } Excel.OlePropertySet("Visible", true); try { WorkBooks = Excel.OlePropertyGet("WorkBooks"); WorkBooks.OleFunction("OpenText", "C:\\teile.txt"); ActiveWorkBook = Excel.OlePropertyGet("ActiveWorkbook"); WorkSheets = Excel.OlePropertyGet("Worksheets"); WorkSheet = WorkSheets.OlePropertyGet("Item", 1); WorkSheet.OleFunction("Activate"); ActiveWorkBook.OleFunction("SaveAs", "C:\\test.xls"); } __finally { //Excel.OleFunction("Quit"); //Excel = NULL; }
-
Schade das mir bisher keiner helfen konnte.
Würde gerne mal eure Meinung zu anderen Lösungen hören.1. Daten direkt in Excel schreiben. Hab ich folgende Probleme mit. Erstens es ist extrem langsam (würde also bei wenigen Daten gehen). Zweitens nach einer gewissen Zeit bricht er einfach ab. D.h. nur ca 75% meiner Daten kommen auch in der Excel-Datei an.
2. Vorhandene Excel Datei öffnen, die einen Makro hat der die Txt-Datei einliest formatiert und dann speichert! In VBA bekomme ich das mit dem Speichern (SaveAs) als xls hin.
Hat vielleicht solche Lösungen schon mal jemand probiert und kann seine Erfahrungen mit mir teilen? Bzw. kennt jemand die Problematik von meinen ersten Alternativvorschlag und hat ein paar Tips.
Danke für eure Hilfe!!
-
das sollte funktionieren (Quelle Google):
ActiveWorkBook.OleFunction("SaveAs", "C:\\test.xls",1);
-
Da kann ich nur Danke sagen!
ist mal wieder genau so wie du es sagst.Also nochmal ein dickes DANKE!!!
-
1. Das es langsam ist, das liegt an der OLE Schnittstelle. Deinen Fehler kann man ohne Code schlecht reproduzieren.
2. Warum nicht die (anscheinend) vorhandene Textdatei als csv in Excel importieren und dann als Excel File abspeichern ?
-
Oler schrieb:
1. Das es langsam ist, das liegt an der OLE Schnittstelle. Deinen Fehler kann man ohne Code schlecht reproduzieren.
2. Warum nicht die (anscheinend) vorhandene Textdatei als csv in Excel importieren und dann als Excel File abspeichern ?Hallo Oler,
zu 2: die txt Datei ist eben nicht vorhanden. Früher war es mal so, dass die Daten die man ermittelt hat als txt-Datei gespeichert wurden. Dann gab es eine Excel-Datei mit einem Makro die nichts weiter gemacht hat als die Ziel-Datei zu öffnen die txt Datei in diese einzulesen und zu speichern. D.h. man musste immer mehrere Schritte machen. Jetzt wollte ich sozusagen alles zusammenfassen und die Daten direkt schreiben. Da mir das aber wie schon gesagt zu langsam ist und es bei zu vielen Daten auch zu Problemen kommt, schreib ich die Daten halt wieder temporär in eine txt-Datei öffne Excel und lese die Daten ein. Das funktioniert ja jetzt auch dank des Tipps von Linnea. Ich brauch also die Alternativen nicht mehr.
Trotzdem Danke für deine Antwort