Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

CSV nach XLS

CSV nach XLS
29.01.2007 22:13:16
Jürgen
Hallo zusammen,
ich habe ein für mich sehr komplexes Problem zu lösen.
Im Verzeichnis G:\csv stehen x csv-Datei en mit identischem Aufbau.
Diese sollen nun in 1 xls-Datei mit allen Datensätzen zusammengefasst
werden und in G:\xls gespeichert werden. Mittels Hilfe aus dem Forum
habe ich nunmehr eine Teillösung realisiert, die die csv-Dateien in
einezelne xls-Dateien automatisiert umwandeln soll:
-------------------------------------------------------------------

Sub scanner()
Dim dName$
dName = "g:\csv\*.csv"
If Dir(dName) <> "" Then
umwandeln
Else
Application.Quit
End If
End 

Sub

Sub umwandeln()
'einlesen der ermittelten csv datei
Dim DatVgl As Date
Dim Mappe As String
Dim ZMappe As String
Const m = "g:\csv"
Mappe = Dir(m & "\*.csv")
Do Until Mappe = ""
DatVgl = FileDateTime(m & "\" & Mappe)
Dat = DatVgl
ZMappe = m & "\" & Mappe
Mappe = Dir()
Loop
Application.Visible = False
Workbooks.Open Filename:=ZMappe
Application.Visible = False
'datei wird als kopie in unterordner verschoben
Dim s As String
Const Lw = "g:\"
Const Pfad = "g:\xls"
'Ermitteln des Dateinamens
s = ActiveWorkbook.Name
ChDrive Lw
ChDir Pfad
'Arbeitsmappe speichern
ActiveWorkbook.SaveAs Filename:=s, FileFormat:=xlExcel8, Password:="",
WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
'Zuvor bearbeitete Datei wird aus Hauptverzeichniss gelöscht
On Error GoTo ende:
ChDir "g:\csv"
Kill (s)
ende:
'erneutes starten des scanners
scanner
End 

Sub
Die Quell-Dateien sehen wie folgt aus:
Quelle01.csv
Typ; Datum; Name; Rufnummer; Nebenstelle; Eigene Rufnummer; Dauer
1;31.12.06 17:04;;093485858686;Telefon;Festnetz;0:04
1;31.12.06 15:47;;unbekannt;Telefon;Festnetz;0:02
Quelle02.csv
Typ; Datum; Name; Rufnummer; Nebenstelle; Eigene Rufnummer; Dauer
1;02.08.06 20:01;;unbekannt;Telefon;Festnetz;0:01
1;02.08.06 18:14;;0699785433;Telefon;Festnetz;0:03
3;02.08.06 15:21;Meier R;2671;Telefon;Internet: 837677;0:05
Die Ziel-Datei sollte wie folgt aussehen:
Ziel.xls
Typ Datum            Name    Rufnummer    Nebenstelle Eigene Rufnummer Dauer
1   31.12.2006 17:04         093485858686 Telefon     Festnetz         00:04
1   31.12.2006 15:47         unbekannt    Telefon     Festnetz         00:02
1   30.12.2006 20:01         unbekannt    Telefon     Festnetz         00:01
1   30.12.2006 18:14         0699785433   Telefon     Festnetz         00:03
3   30.12.2006 15:21 Meier R 2671         Telefon     Internet: 837677 00:05
Das tatsächliche Ergebins ist jedoch:
Typ; Datum; Name; Rufnummer; Nebenstelle; Eigene Rufnummer; Dauer
1;31.12.06 17:04;;093485858686;Telefon;Festnetz;0:04
1;31.12.06 15:47;;unbekannt;Telefon;Festnetz;0:02
1;02.08.06 20:01;;unbekannt;Telefon;Festnetz;0:01
1;02.08.06 18:14;;0699785433;Telefon;Festnetz;0:03
3;02.08.06 15:21;Meier R;2671;Telefon;Internet: 837677;0:05
Was mache ich falsch ?
mfg
Jürgen

		

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV nach XLS
30.01.2007 05:47:41
Ramses
Hallo
Markiere die Spalte A und führe
Daten - Text in Spalten
aus.
Dann einfach dem Assistenten folgen und als Trennzeichen das ";" (Semikolon) angeben.
Gruss Rainer
AW: CSV nach XLS
30.01.2007 08:30:06
Jürgen
Danke Rainer.
Das löst jedoch mein Problem nicht bei Hunderten von Dateien. Das wäre schön, wenn es im Makro laufen würde. Leider klappt das nicht bei mir, da sich die Tabelle nicht als xls-File speichern lässt.
Jürgen
AW: CSV nach XLS
30.01.2007 11:28:34
Ramses
Hallo
"....Das wäre schön, wenn es im Makro laufen würde..."
Einfach mit dem Makrorekorder aufzeichnen und ans Ende deines Codes kopieren
"...da sich die Tabelle nicht als xls-File speichern lässt...."
ActiveWorkbook.SaveAs "C:\DeinName.xls",True
Das sollte gehen
Gruss Rainer
Anzeige
AW: CSV nach XLS
30.01.2007 19:58:58
Jürgen
Hallo Rainer,
Danke für den Tip. Geht aber nict. Erzeugt immer ein mit dem Original identisches csv-File!
Makro: https://www.herber.de/bbs/user/40025.txt
Vielleicht kannst Du ja helfen. Wäre super.
mfg
Jürgen
AW: CSV nach XLS
01.02.2007 23:04:39
Horst
Ramses ist schon länger außer Form, da kannst du
nichts Produktives erwarten.
Stell die Frage nochmal neu.
mfg Horst
AW: CSV nach XLS
02.02.2007 08:21:12
Ramses
Hallo du Superhirn,
Lass es doch drauf ankommen, und zeig mal, dass du auch noch was anderes auf dem Kasten hast als dumme Sprüche zu verbreiten.
Wie lautet deine Lösung ?
Gruss Rainer
Anzeige
AW: CSV nach XLS
02.02.2007 08:19:46
Ramses
Hallo
Probier mal den Code aus

Sub Convert_CSV_to_XLS()
Dim i As Long, totFiles As Long
Dim gefFile As String, gefName As String
Dim srcPfad As String, conFile As String
Dim secPfad As String, secFile As String
Dim bacPfad As String
Dim oldStatus As Variant
Dim myFSO As Object, myTar As String
Set myFSO = CreateObject("scripting.filesystemobject")
'Dateitypen definieren
conFile = "csv"
secFile = "xls"
'Pfadangaben mit Backslash am Ende
'srcPfad = Hier sind die CSV Dateien
srcPfad = "G:\csv\"
'bacPfad = Hier werden die CSV-Sicherheitsdateien gespeichert
bacPfad = "G:\csv\csv_conv_to_xls\"
'secPfad = Hier sollen die XLS Dateien hin
secPfad = "G:\xls\"
Application.ScreenUpdating = True
oldStatus = Application.StatusBar
With Application.FileSearch
.LookIn = srcPfad
.SearchSubFolders = True
.Filename = "*." & conFile
If .Execute() > 0 Then
totFiles = .FoundFiles.Count
Application.StatusBar = "Total " & totFiles & " gefunden"
For i = 1 To .FoundFiles.Count
gefFile = .FoundFiles(i)
Application.Workbooks.Open gefFile
'Spalte konvertieren
Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Semicolon:=True
'Speichern im Zielordner
With ActiveWorkbook
.SaveAs secPfad & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 3) & secFile, True
.Close , True
End With
'Sicherheitsdatei erstellen
'Prüfen ob Sicherungsorder besteht
If Not myFSO.folderexists(bacPfad) Then
MkDir bacPfad
End If
'CSV-Datei verschieben
myFSO.MoveFile gefFile, bacPfad
Next i
End If
End With
MsgBox i & " CSV-Dateien konvertiert ", vbInformation + vbOKOnly, "Fertig"
Application.StatusBar = oldStatus
Application.ScreenUpdating = True
End Sub

Aufrufen kannst du ihn ja auch aus dem Workbook.Open Ereignis wie deinen alten Code.
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige