Excel Datei als csv speichern einfache Programmierung?

  • #1
P

ppdavinci

Mitglied
Themenersteller
Dabei seit
29.06.2007
Beiträge
6
Reaktionspunkte
0
Hallo,

Ich möchte excel Dateien zweimal als .csv abspeichern. Einmal als Dateiname.csv und einmal als in.csv. (zum Export in andere Software). Hat jemand eine Idee, wie man das automatisieren könnte, so dass ich nicht jede Datei öffnen und zweimal speichern unter muss?
 
  • #2
Hallo ppdavinci,

liegen die Dateien denn alle in einem eigenen Verzeichnis ?

Wenn nein, würde die jeweilige Kopie in.csv die vorhergehende überschreiben.

Weitere Fragen:
Aus was für einer Ursprungsdatei heraus willst du die csv-Datei speichern ? *.xls ?
Wird der Name der Datei beiebehalten und ändert sich nur die Endung ?
Liegt die Ursprungsdatei und die csv-Datei in einem Verzeichnis ?

Gruß Matjes :)
 
  • #3
Hallo,

Ja, es handelt sich um .xls-Dateien, die in einem Verzeichnis mit der in.csv-Datei liegen. Diese in.csv-Datei wird dann mit einem geschriebenen Programm in eine andere Software übertragen (hotpotatoes, Software zum Erstellen von Multiple-choice-Klausuren u.ä., generiert htm-codes). Nachdem eine Datei übertragen wurde, wird die in-csv-Datei jedesmal überschrieben. (Die bisher bearbeiteten habe ich dann aber auch unter Dateinamen.csv gespeichert für spätere Zwecke).

Gruß,

ppdavinci
 
  • #4
Hallo ppdavinci,

hier ist zunächst ein Makro der eine aktive Mappe als Dateiname.csv und in.csv speichert.
Probier mal aus, ob das deinen Wünschen nahekommt. Das Makro muß in einer Excel-Datei liegen, die nicht kopiert wird.

Hat jemand eine Idee, wie man das automatisieren könnte, so dass ich nicht jede Datei öffnen und zweimal speichern unter muss?
Soll das Öffnen der Dateien auch noch automatisch erfolgen, z.B. alle *.xls-Dateien im Verzeichnis und ggf. auch in den Unterverzeichnissen.

Gruß Matjes :)

Code:
Option Explicit

Sub AktuelleDateiAlsCSVSpeichern()

 Dim wb As Workbook, ws As Worksheet
 Dim sPfad As String
 Dim sDateiname As String, sDateinameOhneEndung As String, sEndung As String
 Dim pos As Long, poslast As Long
 
 Set wb = ActiveWorkbook
 
->ist mehr als ein Blatt in der Mappe enthalten
 If wb.Sheets.Count > 1 Then
  MsgBox _
   Datei kann nicht als csv-Datei gespeichert werden, & vbLf & _
   da mehr als ein Blatt enthalten ist.
  GoTo AUFRAEUMEN
 End If
 
->ist das Blatt ein Arbeitsblatt ?
 If wb.Worksheets.Count <> 1 Then
  MsgBox Blatt ist kein Arbeitsblatt.
  GoTo AUFRAEUMEN
 End If
 
->Makro-Datei ist nicht Datei ?
 If wb.Name = ThisWorkbook.Name Then
  MsgBox Makro-Datei kann Makro nicht auf sich selbst ausführen.
  GoTo AUFRAEUMEN
 End If
 
->Dateiinhalt ist gespeichert
 If Not wb.Saved Then
 
 sPfad = wb.Path
 sDateiname = wb.Name
 poslast = 0
 pos = InStr(1, sDateiname, .)
 Do
  If pos = 0 Then Exit Do
  poslast = pos
  pos = InStr(pos + 1, sDateiname, .)
 Loop
 If poslast = 0 Then
  sEndung = 
  sDateinameOhneEndung = sDateiname
 Else
  sEndung = Right(sDateiname, Len(sDateiname) - poslast)
  sDateinameOhneEndung = Left(sDateiname, poslast - 1)
 End If
 
->Datei ist nicht schon csv-Datei ?
 If LCase(sEndung) = csv Then
  MsgBox Datei ist bereits csv-Datei
  GoTo AUFRAEUMEN
 End If
 
->Dateiinhalt nicht gespeichert ?
 If Not wb.Saved Then
  MsgBox _
   Die Datei enthält Änderungen, die noch nicht gespeichert sind. & vbLf & _
   Bitte vorher speichern.
  GoTo AUFRAEUMEN
 End If
 
->Datei als Csv-Datei mit gleichem Namen und als in.csv speichern
 Application.DisplayAlerts = False
 wb.SaveAs _
  Filename:=sPfad & Application.PathSeparator & sDateinameOhneEndung & 1 & .csv, _
  FileFormat:=xlCSVWindows->xlCSVMSDOS, xlCSV
 wb.SaveAs _
  Filename:=sPfad & Application.PathSeparator & in & 2 & .csv, _
  FileFormat:=xlCSVMSDOS
 Application.DisplayAlerts = True
 
 wb.Close Savechanges:=False
->ursprüngliche Datei öffnen
 Set wb = Workbooks.Open(Filename:=sPfad & Application.PathSeparator & sDateiname)
  
AUFRAEUMEN:
 Set wb = Nothing: Set ws = Nothing

End Sub
 
  • #5
Hallo,

Ich hatte vor ein paar Monaten einmal nach einer Automatisierung gefragt, um .xls-Dateien in .csv-Dateien umzuwandeln. Da habe ich auch ein Makro bekommen, vielen Dank dafür.
Diese sollten für ein geschriebenes Java-Script-Programm dienen, welches die Inhalte der .csv-Dateien in Hotpotatoes-Software überträgt (.jqz-Dateien). Diese generieren mit den gegebenen Fragen und Antworten Oberflächen für multiple-choice-Klausuren.

Nun habe ich ein sehr großes Problem: Das gleiche soll mit Dateien in tschechischer, slovenischer und polnischer Sprache passieren. Bei der Umwandlung in .csv gehen aber alle Sonderzeichen verloren/werden nicht mehr richtig abgebildet. Ich bräuchte also etwas, mit dem ich von .xls diekt in .jqz und dann in .htm umwandeln kann ...
 
  • #6
Hallo ppdavinci,

kannst Du mir eine kleine xls.Beispiel-Datei schicken und das gewünschte Ergebnis als html-Datei. Dann schau ich mal, wie man das am Besten erzeugen kann.

Gruß Matjes :)
 
Thema:

Excel Datei als csv speichern einfache Programmierung?

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben