Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
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
Inhaltsverzeichnis

Dateien aus Ordner einlesen

Dateien aus Ordner einlesen
25.10.2016 21:37:00
Simone
Hallo zusammen,
da bin ich wieder. Also nach wie vor bin ich eine Anfängerin in VBA, wobei ich aber schon einige fortschritte gemacht habe. Nun stehe ich aber vor einem großen Fragezeichen. Folgendes habe ich vor: Ich möchte ein Makro erstellen, dass alle Excel Dateien automatisch(alle im .xlsx Format) aus einem Ordner öffnet, die dann bearbeitet werden per Makro (Stpalten hin und her verschieben) und die Dateien dann in einem anderen Ordner als .CSV abspeichert. Die Dateien die ursprungsdateien (die im .xlsx Format) sollen gelöscht werden. Wichtig die Dateien dürfen nicht zusammengepackt werden. Den Teil mit dem bearbeiten der Spalten etc. per Makro habe ich schon hin bekommen, allerdings bin ich mir bei dem automatischen auslesen und speichern, löschen nicht sicher ob das Funktioniert und wenn Ja wie ?
Für eure Hilfe bin ich euch jetzt schon mal sehr sehr Dankbar.
Liebe Grüße
Eure Simone

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien aus Ordner einlesen
26.10.2016 08:36:54
baschti007
Hey Ho So in der Art könnte man das machen
Gruß Basti
Sub fff()
Dim strOrdner As String
Dim objFSO As Object
Dim objOrdner As Object
Dim colDateien As Object
Dim objDatei As Object
Dim wkbkSource As Workbook
Dim PfadCSV As String
Dim NamenErstellt As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
PfadCSV = "C:\Users\" & Environ("username") & "\Desktop\Test\" ' Anpassen des CSV Pfades
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\"
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1)  "\" Then strOrdner = strOrdner & "\"
Else
strOrdner = ""
End If
End With
If strOrdner = "" Then
MsgBox ("Kein Ordner gewählt!")
Else
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOrdner = objFSO.GetFolder(strOrdner)
Set colDateien = objOrdner.Files
For Each objDatei In colDateien
If objFSO.GetExtensionName(objDatei) = "xlsx" Then
Set wkbkSource = Workbooks.Open(objDatei)
' Mach was mit der geöffneten Datei (Dein Makro)
wkbkSource.SaveAs Filename:=PfadCSV & Left(wkbkSource.Name, InStrRev( _
wkbkSource.Name, ".") - 1) & ".CSV", FileFormat:=xlCSV, CreateBackup:=False ' save  CSV
NamenErstellt = NamenErstellt & vbCr & wkbkSource.Name
wkbkSource.Close False ' Datei Schließen
Kill (objDatei) ' Datei Löschen
End If
Next objDatei
Set wkbkSource = Nothing
Set objFSO = Nothing
Set objOrdner = Nothing
Set colDateien = Nothing
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "Diese CSV Dateien Wurden Erstellt" & vbCr & NamenErstellt
End If
End Sub

Anzeige
AW: Dateien aus Ordner einlesen
26.10.2016 12:48:09
Simone
Hallo Basti,
das ist genau das was ich gesucht habe. Allerdings habe ich nun das Problem das beim Ausführen mein Makroteil in der Datei ausgeführt wird die die Dateien öffnet. Habe ich da was vergessen?
AW: Dateien aus Ordner einlesen
26.10.2016 13:07:43
baschti007
Dazu müsstest du dein Makro mal Posten
Gruß basti
AW: Dateien aus Ordner einlesen
26.10.2016 13:45:53
Simone
Ein Teil meines Codes ist diese Funktion:

Private Sub Durchlaufen()
Dim Zelle As Range
i = 1
For Each Zelle In Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)
i = i + 1
If Zelle = Abs(Zelle) Then 'Prüft ob die Zahl positiv ist
Cells(i, "G") = Cells(i, "A")
Cells(i, "E").Value = 2
Else  ' Wenn die Zahl negativ dann
Cells(i, "H").Value = Zelle * -1
Cells(i, "E").Value = 3
End If
Next
End Sub

und in deinen Code eingefügt:
 If strOrdner = "" Then
MsgBox ("Kein Ordner gewählt!")
Else
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOrdner = objFSO.GetFolder(strOrdner)
Set colDateien = objOrdner.Files
For Each objDatei In colDateien
If objFSO.GetExtensionName(objDatei) = "xlsx" Then
Set wkbkSource = Workbooks.Open(objDatei)
' Mach was mit der geöffneten Datei (Dein Makro)
Durchlaufen ' aufruf meiner Funktion
wkbkSource.SaveAs Filename:=PfadCSV & Left(wkbkSource.Name, InStrRev( _
wkbkSource.Name, ".") - 1) & ".CSV", FileFormat:=xlCSV, CreateBackup:=False ' save  CSV
NamenErstellt = NamenErstellt & vbCr & wkbkSource.Name
wkbkSource.Close False ' Datei Schließen
Kill (objDatei) ' Datei Löschen
End If
Next objDatei

Anzeige
AW: Dateien aus Ordner einlesen
26.10.2016 14:32:11
baschti007
Ja du musst es auch so zuweisen das er weis auf welche Workbook und auf welchem Sheet er dein Makro machen soll =D
Dann probiere ma so
Gruß Basti
Sub fff()
Dim strOrdner As String
Dim objFSO As Object
Dim objOrdner As Object
Dim colDateien As Object
Dim objDatei As Object
Dim wkbkSource As Workbook
Dim PfadCSV As String
Dim NamenErstellt As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
PfadCSV = "C:\Users\" & Environ("username") & "\Desktop\Test\" ' Anpassen des CSV Pfades
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\"
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1)  "\" Then strOrdner = strOrdner & "\"
Else
strOrdner = ""
End If
End With
If strOrdner = "" Then
MsgBox ("Kein Ordner gewählt!")
Else
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOrdner = objFSO.GetFolder(strOrdner)
Set colDateien = objOrdner.Files
For Each objDatei In colDateien
If objFSO.GetExtensionName(objDatei) = "xlsx" Then
Set wkbkSource = Workbooks.Open(objDatei)
' Mach was mit der geöffneten Datei (Dein Makro)
Call Durchlaufen(wkbkSource.Worksheets(1))
wkbkSource.SaveAs Filename:=PfadCSV & Left(wkbkSource.Name, InStrRev( _
wkbkSource.Name, ".") - 1) & ".CSV", FileFormat:=xlCSV, CreateBackup:=False ' save  CSV
NamenErstellt = NamenErstellt & vbCr & wkbkSource.Name
wkbkSource.Close False ' Datei Schließen
Kill (objDatei) ' Datei Löschen
End If
Next objDatei
Set wkbkSource = Nothing
Set objFSO = Nothing
Set objOrdner = Nothing
Set colDateien = Nothing
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "Diese CSV Dateien Wurden Erstellt" & vbCr & NamenErstellt
End If
End Sub
Private Sub Durchlaufen(WS As Worksheet)
With WS
Dim Zelle As Range
i = 1
For Each Zelle In .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
i = i + 1
If Abs(Zelle) = Zelle Then 'Prüft ob die Zahl positiv ist
.Cells(i, "G") = Cells(i, "A")
.Cells(i, "E").Value = 2
Else  ' Wenn die Zahl negativ dann
.Cells(i, "H").Value = Zelle * -1
.Cells(i, "E").Value = 3
End If
Next
End With
End Sub

Anzeige
AW: Dateien aus Ordner einlesen
26.10.2016 15:01:11
Simone
Ich habe den Fehler gefunden, war ein Fehler bei mir.
Vielen Danke nochmal.
Gruß
Simone

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige