Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Alle CSV Dateien mit Makro bearbeiten

Betrifft: Alle CSV Dateien mit Makro bearbeiten von: dip
Geschrieben am: 05.11.2014 16:40:09

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

  

Betrifft: AW: Alle CSV Dateien mit Makro bearbeiten von: Frank
Geschrieben am: 05.11.2014 19:57:43

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


  

Betrifft: AW: Alle CSV Dateien mit Makro bearbeiten von: Dip
Geschrieben am: 05.11.2014 23:48:05

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


  

Betrifft: CSV ist auchein Workbook von: Frank
Geschrieben am: 06.11.2014 10:04:02

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


 

Beiträge aus den Excel-Beispielen zum Thema "Alle CSV Dateien mit Makro bearbeiten"