AW: Daten aus .csv Datei in Excel einfügen
10.12.2014 15:39:41
fcs
Hallo Tim,
ich hab das Makro jetzt so umgebaut, dass die CSV-Datei in einem Excelblatt geöffnet wird, plus etwas formatieren und Titelzeile einfügen.
Zum Schluß wird der Speichern-Unter-Dialog angezeigt, um die Datei als Excel-Arbeitsmappe zu speichern.
Die Zeilen zum Kopieren von Daten in ein anderes Blatt hab ich zu Kommentaren gemacht.
Die Schaltfläche zum Starten des Makros wählst aus den Formular-Steuerelementen aus und fügst sie im Tabellenblatt ein.
Anschliessend weist du im Dialog das Makro "GetCSV_Data" der Schaltfläche zu.
Gruß
Franz
'Makro in einem allgemeinen Modul der Datei einfügen
Sub GetCSV_Data()
Dim wkbCSV As Workbook, wksCSV As Worksheet
Dim wkbZiel As Workbook, wksZiel As Worksheet
Dim lngZeile As Long, lngSpalte As Long
'Zieldatei merken/setzen
Set wkbZiel = ActiveWorkbook
'CSV-Datei auswählen/öffnen
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte CSV-Dateien auswählen"
.InitialView = msoFileDialogViewDetails
.InitialFileName = "*.csv"
.AllowMultiSelect = False
If .Show = -1 Then
Set wkbCSV = Workbooks.Open(Filename:=.SelectedItems(1), Local:=True) 'Lokal:=True: CSV- _
Inhalte sind lokal formatiert (Datum/Zeit, Dezimalzahlen)
Set wksCSV = wkbCSV.Worksheets(1)
End If
End With
If wkbCSV Is Nothing Then Exit Sub
With wksCSV
'Zieltabelle setzen
Set wksZiel = wkbZiel.Worksheets("Tabelle1")
'Spalte A Formatieren
.Columns(1).NumberFormat = "DD.MM.YYYY hh:mm:ss"
'Spaltenbreiten automaisch anpassen
.Columns.AutoFit
'Titelzeile einfügen
.Rows(1).Insert
.Cells(1, 1) = "Datum Zeit"
.Cells(1, 2) = "Meldung"
.Cells(1, 3) = "Maschine"
'Titelzeile fixieren:
Range("A2").Select
ActiveWindow.FreezePanes = True
'Letzte Daten-Zeile in CSV
' lngZeile = .UsedRange.Row + .UsedRange.Rows.Count - 1
'Inhalte aus CSV-Datei in Zieltabellenblatt einfügen
'Daten aus B2 in B1 eintragen
' wksZiel.Cells(1, 2).Value = .Cells(2, 2).Value
'Daten aus Spalte D kopieren und ab C2 einfügen
' .Range(.Cells(1, 4), .Cells(lngZeile, 4)).Copy Destination:=wksZiel.Range("C2")
'usw.
End With
'CSV-Datei als Excel-Datei speichern
If Application.Dialogs(xlDialogSaveAs).Show(wksCSV.Name, 51) = False Then '51 = xlsx-Format
'Speichern wurde abgebrochen - CSV-Datei wird ohne Speichern wieder geschlossen
wkbCSV.Close savechanges:=False
Exit Sub
End If
End Sub