Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Alle CSV Dateien mit Makro bearbeiten

Alle CSV Dateien mit Makro bearbeiten
05.11.2014 16:40:09
dip
Hallo Allerseits,
Gerne würde ich folgende Problemstellung in das Forum einbringen, in der Hoffnung, jemand kann mir weiterhelfen :-)
Mit dem untenstehenden Makro kann ich eine beliebige Anzahl von Dateien in einem bestimmten Verzeichnis öffnen, mittels dem Makro (der zwischen "Start des Codes!!!" und "Ende des Codes!!!" steht) bearbeiten und wieder abspeichern.
Dies funktioniert mit .xls, .xlsx, .xlsm wunderbar.
Nun wollte ich .csv Dateien bearbeiten, dies klappt leider nicht.
Wüsste jemand woran es liegt bzw. wie das Makro angepasst werden müsste damit auch CSV Dateien bearbeitet werden können?
Bin für jede Hilfe/Tipp sehr dankbar!
Beste Grüsse
Patrick
Option Explicit
Const strPath As String = "C:\Users\xxxx\Desktop\xxxxx\xxxxx\" 'Verzeichnis anpassen!!!
Dim strDir() As String
Dim Zeile As Long
Sub Main()
Dim strDateiname As String
Dim wkbBook As Workbook
Dim lngLastRowQ As Long
Dim lngLastRowZ As Long
Dim lngLastCol As Long
Dim intCalc As Integer
Dim i As Long
On Error GoTo Fin
With Application
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
intCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
'strDateiname = Dir$(ThisWorkbook.Path & "\*.xls") Dateityp anpassen!!!
Zeile = 1
Tree strPath, "*.csv", True
For Zeile = 1 To UBound(strDir)
Set wkbBook = Workbooks.Open(strDir(Zeile))
' Start des Codes!!!
' Ende des Codes!!!
wkbBook.Close savechanges:=True ' True wenn gespeichert werden soll, False wenn nicht!!!
Set wkbBook = Nothing
Next Zeile
Fin:
Set wkbBook = Nothing
With Application
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = intCalc
.DisplayAlerts = True
End With
If Err.Number 0 Then
MsgBox "Error: " & Err.Number & " " & Err.Description
End If
MsgBox "Done!", vbInformation
End Sub
'________________________________________________________________________
'Code von Bernd (bst)
'http://www.online-excel.de/fom/fo_read.php?f=3&bzh=121&h=120#a123x
Sub Tree(actdir As String, filename As String, showfiles As Boolean)
Dim fname
Dim i As Integer, j As Integer
Dim subdirs() As String
Call ShowDir(actdir, filename, showfiles)
i = 0
fname = Dir(actdir & "\*.*", vbDirectory)
While fname ""
If fname "." And fname ".." And (GetAttr(actdir & "\" & fname) And vbDirectory) = _
vbDirectory Then
i = i + 1
ReDim Preserve subdirs(i)
subdirs(i) = actdir & "\" & fname
End If
fname = Dir
Wend
For j = 1 To i
Call Tree(subdirs(j), filename, showfiles)
Next
ReDim subdirs(0)
End Sub
Private Sub ShowDir(actdir As String, filename As String, showfiles As Boolean)
Dim fname
If showfiles Then
fname = Dir(actdir & "\" & filename)
While fname  ""
ReDim Preserve strDir(1 To Zeile)
strDir(Zeile) = actdir & "\" & fname
'Cells(Zeile, 1).Value = actdir & "\" & fname
Zeile = Zeile + 1
fname = Dir
Wend
Else
ReDim Preserve strDir(1 To Zeile)
strDir(Zeile) = actdir & "\" & fname
'Cells(Zeile, 1).Value = actdir
Zeile = Zeile + 1
End If
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle CSV Dateien mit Makro bearbeiten
05.11.2014 19:57:43
Frank
Hallo,
was klappt denn nicht? Gibt's ne Fehlermeldung?
So ins Blaue hineingeraten, würde ich sagen, dass CSV eben keine XLS sind und sich deshalb mit WORKBOOKS nicht angesprochen fühlen. Dann würde ein Set wkbBook = Workbooks.Open(strDir(Zeile))
ins Leere führen.
Grüsse,
Frank

AW: Alle CSV Dateien mit Makro bearbeiten
05.11.2014 23:48:05
Dip
Guten Abend Frank,
Danke für dein Feedback!
Das lustige ist, ich bekomme keine Fehlermeldung. Das Änderungsdatum der Datei zeigt auch an, das gerade eben was geändert wurde. Wenn ich die Datei anschliessend öffne, wurde aber nichts geändert. Bei einer .xls Datei werden die Anweisungen des Makros durchgeführt und abgespeichert.
Wie müsste das Makro angepasst werden, damit auch csv Dateien angesprochen werden?
Beste Grüsse
Patrick

Anzeige
CSV ist auchein Workbook
06.11.2014 10:04:02
Frank
Hallo Patrick,
Jetzt habe ich's mal so probiert.
Sub Test()
Workbooks.Open Filename:="C:\...\Test.csv"
Sheets(1).Cells(1, 5).Value = "Test"
End Sub

Der String wird richtig in die Zelle eingetragen. Die Variante mit SET ist mir suspekt, aber Du wirst wissen, was Du tust, wenn es mit xls funtioniert...
Da müsste man sich wohl direkt den Code anschauen. Wichtig ist vielleicht noch, dass das Blatt ( das einzige) in so einer CSV-Datei, wenn man sie in XL öffnet, immer so heisst, wie die CSV und auch so angesprochen werden muss - Sheets("Test") in meinem Falle. Die Mappe dann entsprechend mit Workbooks("Test.csv").
Grüsse,
Frank
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige