Ist es möglich, batch-Konvertierung von csv zu xls mit einem makro?
Habe ich eine große Menge von csv
Dateien, die ich brauche in .xls
- format. Ist es möglich, eine batch-Konvertierung mit einem makro oder am besten mit einer anderen Sprache?
Ich habe diesen code http://www.ozgrid.com/forum/showthread.php?t=71409&p=369573#post369573 Referenz zu meinem Verzeichnis, aber ich bin mir nicht sicher, ob der Befehl zum öffnen der jeweiligen Datei, und speichern Sie Sie. Hier ist, was ich habe:
Sub batchconvertcsvxls()
Dim wb As Workbook
Dim CSVCount As Integer
Dim myVar As String
myVar = FileList("C:\Documents and Settings\alistairw\My Documents\csvxlstest")
For i = LBound(myVar) To UBound(myVar)
With wb
Application.Workbooks.OpenText 'How do I reference the myvar string ?
wb.SaveAs '....
End With
Next
End Sub
Function FileList(fldr As String, Optional fltr As String = "*.*") As Variant
Dim sTemp As String, sHldr As String
If Right$(fldr, 1) <> "\" Then fldr = fldr & "\"
sTemp = Dir(fldr & fltr)
If sTemp = "" Then
FileList = Split("No files found", "|") 'ensures an array is returned
Exit Function
End If
Do
sHldr = Dir
If sHldr = "" Then Exit Do
sTemp = sTemp & "|" & sHldr
Loop
FileList = Split(sTemp, "|")
End Function
Edit: Die Dateien sind .txt-Dateien formatiert als csv -
Ein interessanter link : softinterface.com/..., Wenn Sie Google-Suche gibt es eine andere Software, die dies bereits tun. Allerdings, wenn Sie tun dies als eine übung, dann ignorier den link 🙂
InformationsquelleAutor Alistair Weir | 2012-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehr viel weniger Zeilen code, das sollte Sie bekommen, was Sie wollen. Allerdings werde ich sagen, das mag nicht der Schnellste Weg, um bekommen es zu tun, weil Sie sind das öffnen, speichern und schließen der Arbeitsmappe, jedes mal. Ich werde schauen für einen schnelleren Weg, aber ich vergesse die Methode aus der Spitze von meinem Kopf.
** UPDATE **
Sie müssen die richtige fileformat Aufzählung für einen .xls-Datei. Ich denke, die 50, aber Sie können hier Excel-Datei-Typ-Enumeration, wenn es nicht.
Das ist alles gut. Ändern Sie einfach jeden Bezug auf .csv-oben .txt.
auch fügen Sie diese Zeile vor dem "Loop" strFile = Dir
InformationsquelleAutor Scott Holtzman
Durch die Kombination der code von Scott Holtzman und 'ExcelFreak', die Umwandlung funktioniert Recht gut. Der endgültige code sieht ungefähr so aus:
Öffnen Sie die konvertierte .xls-Datei wird eine Warnung jedes mal:
"Die Datei die Sie versuchen zu öffnen, 'filename', ist in einem anderen format als spezifiziert durch die Datei-Erweiterung. Stellen Sie sicher, dass die Datei nicht beschädigt ist und aus einer vertrauenswürdigen Quelle vor dem öffnen der Datei. Möchten Sie die Datei öffnen?"
Wenn Sie ja anklicken, dann öffnet sich die .xls-Datei.
Gibt es einen Weg, um loszuwerden, diese Warnmeldung? Excel wirft eine Warnung, jedes mal wenn das .xls-Datei geöffnet wird.
Sie können auch
wb.SaveAs Replace(wb.FullName, ".csv", ".xlsx"), 51 'UPDATE:
speichern als Excel-2007-format und loswerden der Warnung, wenn Sie die Datei öffnen.InformationsquelleAutor Rishab Jain
Den Code von Scott Holtzman fast Tat es für mich. Ich hatte zwei änderungen, um es an die Arbeit:
Er vergaß hinzuzufügen, die Linie, die unsere Schleife fortfahren mit der nächsten Datei. Die Letzte Zeile vor der Schleife sollte Lesen
strFile = Dir
Den Arbeitsmappen.Open-Methode nicht Lesen Sie meine CSV-Dateien, wie erwartet (die ganze Zeile endete sein text in der ersten Zelle). Wenn ich Hinzugefügt die parameter
Local:=True
es funktionierte:Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True)
InformationsquelleAutor ExcelFreak
Diese funktioniert zumindest auf Excel 2013. Mit FileFormat:=xlExcel8 parameter anstelle der filetype-tag 50 erstellt Dateien öffnen ohne Sicherheit nags.
Sub CSV_to_XLS()
Dim wb As Workbook
Dim strFile As String, strDir As String
strDir = "C:\temp\"
strFile = Dir(strDir & "*.csv")
Do While strFile <> ""
Schleife
End Sub
InformationsquelleAutor RaaonGB
Dies war eine gute Frage, die ich im internet fand einige Antworten. Nur sehr kleine änderungen (ich konnte nicht Bearbeiten des codes bereits veröffentlicht) ich konnte die Dinge machen, die Arbeit ein bisschen besser:
InformationsquelleAutor Bartolomeo Rodas