Hallo,
ich will aus einem Verzeichnis 9 .csv Dateien in einer Mappe, aber in 9 verschiedenen Worksheets öffnen. Bis jetzt habe ich es nur geschafft, 9 verschiedene Mappen zu öffnen, kann mir vielleicht jemand helfen?
Hier ist mein Code:
Sub Test()
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.Filename = „*.csv“
.LookIn = „C:“
If .Execute > 0 Then
Dim file
Dim i As Integer
Dim Mappe As Workbook
For Each file In .FoundFiles
i = i + 1
Application.StatusBar = "Working on " & file
Set Mappe = Workbooks.Open(file, UpdateLinks:=0)
.
.
. usw.
Kann ich hier die Variable Mappe als Worksheet definieren? Wie kann ich zu einem Worksheet verschiedene Dateien zuordnen, mit Worksheets.Add?
Für jede Hilfe wäre ich sehr dankbar.
Unr3al
ich will aus einem Verzeichnis 9 .csv Dateien in einer Mappe,
aber in 9 verschiedenen Worksheets öffnen. Bis jetzt habe ich
es nur geschafft, 9 verschiedene Mappen zu öffnen, kann mir
vielleicht jemand helfen?
Hallo ?,
ungetestet:
Sub Test()
Application.ScreenUpdating = False
Dim Datei
Dim i As Integer, zei As Long, sp As Integer
Dim anz As Byte
With Application.FileSearch
.NewSearch
.Filename = "\*.csv"
.LookIn = "C:\"
If .Execute \> 0 Then
Application.SheetsInNewWorkbook = .FoundFiles.Count
Workbooks.Add
Application.SheetsInNewWorkbook = 3
For Each Datei In .FoundFiles
zei = 0
i = i + 1
Application.StatusBar = "Working on " & Datei
Open Datei For Input As #1
While Not EOF(1)
Input #1, Satz
Satz2 = Split(Satz, ",")
zei = zei + 1
For sp = 0 To UBound(Satz2)
ActiveWorkbook.Worksheets(i).Cells(zei, sp + 1) = Satz2(sp)
Next sp
Wend
Close
Next Datei
End If
End With
Application.ScreenUpdating = True
End Sub
Gruß
Reinhard
Hier ist mein Code:
Sub Test()
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.Filename = „*.csv“
.LookIn = „C:“
If .Execute > 0 Then
Dim file
Dim i As Integer
Dim Mappe As Workbook
For Each file In .FoundFiles
i = i + 1
Application.StatusBar = "Working on " & file
Set Mappe = Workbooks.Open(file,
UpdateLinks:=0)
.
.
. usw.
Kann ich hier die Variable Mappe als Worksheet definieren? Wie
kann ich zu einem Worksheet verschiedene Dateien zuordnen, mit
Worksheets.Add?
Für jede Hilfe wäre ich sehr dankbar.
Unr3al
Hallo Reinhard,
vielen Dank erst einmal für die Hilfe. Die Dateien werden jetzt in einer Mappe aufgemacht, allerdings wird der Inhalt in einer Spalte dargestellt. Als Beispiel, die .csv-Datei sind so aus:
Stunde,Montag,Dienstag,Mittwoch,Donnerstag,Freitag
Mathe,Deutsch,Englisch,Mathe,Kunst
Also wird es im Excel wie folgt dargestellt:
Stunde
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Mathe
Deutsch
Englisch
Mathe
Kunst
Weiß jemand woran es liegen könnte und was man am Code ändern soll, damit es richtig dargestellt wird?
Vielen Dank im Voraus.
ich will aus einem Verzeichnis 9 .csv Dateien in einer Mappe,
aber in 9 verschiedenen Worksheets öffnen. Bis jetzt habe ich
es nur geschafft, 9 verschiedene Mappen zu öffnen, kann mir
vielleicht jemand helfen?
Hallo ?,
ungetestet:
Sub Test()
Application.ScreenUpdating = False
Dim Datei
Dim i As Integer, zei As Long, sp As Integer
Dim anz As Byte
With Application.FileSearch
.NewSearch
.Filename = „*.csv“
.LookIn = „C:“
If .Execute > 0 Then
Application.SheetsInNewWorkbook = .FoundFiles.Count
Workbooks.Add
Application.SheetsInNewWorkbook = 3
For Each Datei In .FoundFiles
zei = 0
i = i + 1
Application.StatusBar = "Working on " & Datei
Open Datei For Input As #1
While Not EOF(1)
Input #1, Satz
Satz2 = Split(Satz, „,“)
zei = zei + 1
For sp = 0 To UBound(Satz2)
ActiveWorkbook.Worksheets(i).Cells(zei, sp
-
- = Satz2(sp)
Next sp
Wend
Close
Next Datei
End If
End With
Application.ScreenUpdating = True
End Sub
Gruß
Reinhard
Hallo ?,
kann irgendwie nicht sein vom Code her.
Mit #Input #1, Satz# wird jede Datei Zeilenweise ausgelesen, nach #Satz2 = Split(Satz, „,“)# ist jede Zeile aufgesplittet am Komma,also aus #Stunde,Montag,Dienstag# wird #Satz2(0)=Stunde#, #Satz2(1)=Montag#,#Satz(2)=Dienstag#.
Die Syntax von Cells ist Cells(Zeile,Spalte)
In der For-Schleife wird der Spaltenzähler sp in #Cells(zei,sp)# laufend erhöht und Satz2(0) in Spalte 1, Satz2(1) in Spalte 2, Satz(2) in Spalte 3 geschrieben.
Füge mal nach #Satz2 = Split(Satz, „,“)# folgendes ein:
msgbox Satz
msgbox Satz2(0)
msgbox Satz2(1)
und poste hier was passiert.
Gruß
Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Reinhard,
Füge mal nach #Satz2 = Split(Satz, „,“)# folgendes ein:
msgbox Satz
msgbox Satz2(0)
msgbox Satz2(1)
und poste hier was passiert.
Ich habe es gemacht und Folgendes ist passiert. Es hat sich zuerst ein Dialog(?) geöffnet, in dem Stunde drinstand und ein „OK“-Button. Wenn ich OK gedrückt habe, hat sich noch ein Dialog geöffnet mit dem gleichem Inhalt. Wenn ich wieder auf OK gedrückt habe, meckert der Editor und zwar an dieser Stelle:
MsgBox Satz2(1)
Und zwar sagt er, dass Index außerhalb des gültigen Bereichs ist.
Hoffe, du kannst mir trotzdem noch helfen.
Viele Grüße,
Unr3al
Hi Unr3al,
ich habe es jetzt ausgetestet, der Code funtioniert perfekt.
Ich weiß jetzt nicht warum es bei dir nicht klappt.
Öffne mal die csv-Dateien mit Notepad, Wordpad und schaue nach dem Trennungszeichen ob es das ist wie bei Split.
Nachfolgend nochmal der funktionierende Code.
Gruß
Reinhard
Sub Test()
Application.ScreenUpdating = False
Dim Datei
Dim i As Integer, zei As Long, sp As Integer
Dim anz As Byte
With Application.FileSearch
.NewSearch
.Filename = "\*.csv"
.LookIn = "C:\"
If .Execute \> 0 Then
Application.SheetsInNewWorkbook = .FoundFiles.Count
Workbooks.Add
Application.SheetsInNewWorkbook = 3
For Each Datei In .FoundFiles
zei = 0
i = i + 1
Application.StatusBar = "Working on " & Datei
Open Datei For Input As #1
While Not EOF(1)
Input #1, Satz
Satz2 = Split(Satz, ",")
zei = zei + 1
For sp = 0 To UBound(Satz2)
ActiveWorkbook.Worksheets(i).Cells(zei, sp + 1) = Satz2(sp)
Next sp
Wend
Close
Next Datei
End If
End With
Application.ScreenUpdating = True
End Sub