Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1264to1268
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

Mehrere CSV Dateien öffnen

Mehrere CSV Dateien öffnen
Michael
Hallo,
ich habe folgenden Code um mehrere CSV Dateien zu öffnen. Leider verstehe ich nicht wie ich die semikolon trennzeichen einfügen kann. Des Weiteren möchte ich gerne die erste Zeile im folgenden format DMY.
Der Code sieht wie folgt aus:
Dim dateien, i
Dim owkb As Workbook
dateien = Application.GetOpenFilename _
("csv-Dateien (*.csv), *.csv", MultiSelect:=True)
If IsArray(dateien) Then
For i = 1 To UBound(dateien)
Workbooks.Open dateien(i), local:=True
Set owkb = ActiveWorkbook
With ThisWorkbook
ActiveSheet.UsedRange.Copy
.Sheets.Add after:=.Sheets(.Sheets.Count)
.Sheets(.Sheets.Count).Name = owkb.Name
.Sheets(owkb.Name).Range("A1").PasteSpecial
End With
Application.CutCopyMode = False
owkb.Close False
Next i
End If
Danke.
VG
Michael

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Mehrere CSV Dateien öffnen
23.05.2012 19:37:41
Reinhard
Hallo Michael,
wo warum willst du da Semikolons einfügen?
Benutze bitte den Button Pre, dann sieht das so aus:
Option Explicit
Sub tt()
Dim dateien, i
Dim owkb As Workbook
dateien = Application.GetOpenFilename("csv-Dateien (*.csv), *.csv", MultiSelect:=True)
If IsArray(dateien) Then
For i = 1 To UBound(dateien)
Workbooks.Open dateien(i), local:=True
Set owkb = ActiveWorkbook
With ThisWorkbook
ActiveSheet.UsedRange.Copy
.Sheets.Add after:=.Sheets(.Sheets.Count)
.Sheets(.Sheets.Count).Name = owkb.Name
.Sheets(owkb.Name).Range("A1").PasteSpecial
 .Sheets(owkb.Name).Rows(1).NumberFormat = "DMY"
    End With
Application.CutCopyMode = False
owkb.Close False
Next i
End If
End Sub

Gruß
Reinhard
Anzeige
AW: Mehrere CSV Dateien öffnen
23.05.2012 20:53:32
Michael
Hallo Reinhard,
Danke für deine Antwort. Was ich mit dem semikolon meine ist das die einzelnen spalten in den csv files per semikolon getrennt sind. das wird im moment nicht beachtet in dem code und ich weiß nicht wie ich das einbauen soll.
Des Weiteren erhalte ich auch folgende fehlermeldung wenn ich mehrere files einlese:
Run-time error '1004':
You typed an invalid name for a sheet or chart...
Ich verstehe nicht wieso dieser fehler auftaucht :(.
Danke.
VG
Michael
AW: Mehrere CSV Dateien öffnen
23.05.2012 21:05:31
Reinhard
Hallo Michael,
dein Semikolon "einfügen" hat mich irritiert. Du willst die csv-Daten die sich nach
.Sheets(owkb.Name).Range("A1").PasteSpecial
alle in A drängeln beim Semikolon trennen und auf Spalten aufteilen.
Dann mußte gleich nach der Codezeile TextinSpalten benutzen.
Das geht auch in Vba.
Markiere einfach eine Zelle, Text in Spalten, Trennzeichen Semikolon und zeichne das alles mit dem Rekorder auf, dann haste den Vba-Code dafür.
Zu deinem Code. Wenn du nur eine csv auswählst wird er wohl nix tun.
Zum 1004 kann ich nix sagen, deshalb Frage noch offen.
Oder tippst du da manuell im Fensterchen Dateinamen ein ohne die in der Auswahl anzuklicken?
Gruß
Reinhard
Anzeige
AW: Mehrere CSV Dateien öffnen
24.05.2012 08:21:27
guentherh
Hallo Michael,
der Code
.Sheets(.Sheets.Count).Name = owkb.Name 
verwendet den ungeprüften Namen der CSV-Datei
wenn dieser zu lang ist, oder Leerzeichen enthält, hast Du

an invalid name for a sheet 
gruß,
Günther
AW: Mehrere CSV Dateien öffnen
24.05.2012 09:48:09
Michael
Hallo Günther,
gibt es eine Möglichkeit dies zu umgehen?
VG
Michael
AW: Mehrere CSV Dateien öffnen
24.05.2012 10:15:30
Reinhard
Hallo Michael,
.Sheets(.Sheets.Count).Name = owkb.Name =Pruef(owkb.Name)
Function Pruef(ByVal strName As String) As String
Dim N As Integer
For N = 1 To Len(strName)
Select Case Mid(strName, N, 1)
Case ":", "\", "'", "/", "?", "*", "[", "]", "{", "}"
'nix
Case Else
Pruef = Pruef & Mid(strName, N, 1)
End Select
Next N
Pruef = Left(Pruef, 31)
End Function

Gruß
Reinhard
Anzeige
AW: Mehrere CSV Dateien öffnen
24.05.2012 10:23:51
Michael
Hallo Reinhard,
Danke für die Antwort. Irgendiwe funktiuoniert das immer noch nicht! Hier der Code. Dort wo er meckert habe ich fett angestrichen.
VG
Michael
Sub CSV_Import()
Dim dateien, i
Dim owkb As Workbook
dateien = Application.GetOpenFilename("csv-Dateien (*.csv), *.csv", MultiSelect:=True)
If IsArray(dateien) Then
For i = 1 To UBound(dateien)
Workbooks.Open dateien(i), local:=True
Set owkb = ActiveWorkbook
With ThisWorkbook
ActiveSheet.UsedRange.Copy
.Sheets.Add after:=.Sheets(.Sheets.Count)
.Sheets(.Sheets.Count).Name = owkb.Name = Pruef(owkb.Name)
.Sheets(owkb.Name).Range("A1").PasteSpecial
'.Sheets(owkb.Name).TextFileSemicolonDelimiter = True
.Sheets(owkb.Name).Rows(1).NumberFormat = "DMY"
End With
Application.CutCopyMode = False
owkb.Close False
Next i
End If
End Sub

Function Pruef(ByVal strName As String) As String
Dim N As Integer
For N = 1 To Len(strName)
Select Case Mid(strName, N, 1)
Case ":", "\", "'", "/", "?", "*", "[", "]", "{", "}"
'nix
Case Else
Pruef = Pruef & Mid(strName, N, 1)
End Select
Next N
Pruef = Left(Pruef, 31)
End Function

Anzeige
AW: Mehrere CSV Dateien öffnen
24.05.2012 10:25:04
guentherh
Hallo Michael,
logisch!!
Dateinamen verwenden, die der 8.3 Nomenklatur folgen. Das ist immer schon der sicherste Weg, 1980 gings nämlich nicht anders, und die Relikte von damals sind immer noch an seltenen Stellen in Programmen zu finden.
Excel lässt aber immerhin31 Zeichen die Buchstaben, Zahlen leerzeichen und manche Sonderzeichen enthalten zu.
Wenn du also Deine Dateinamen aus wenigen kurzen Wörtern und ohne Sonderzeichen gestaltest gibt keine Probleme EXCELFORUMDATEINAMENMAX27.xls funktioniert als Blattname, zumindest bei manueller Eingabe
Gruß,
Günther
AW: Mehrere CSV Dateien öffnen
24.05.2012 10:30:22
Michael
Hallo Günther,
leider bekomme ich diese CSV Dateien von wo anders her und ich kann leider nichts mit der namensgebung ändern :(.
VG
Michael
Anzeige
AW: Mehrere CSV Dateien öffnen
24.05.2012 09:47:20
Michael
Hallo Reinhard,
ich habe es mit dem Rekorder versucht aber irgendwie gibt das alles keinen Sinn für mich. Gibt es keine Möglichkeit das irgendwie selbst zu machen ohne Rekorder?
Danke.
VG
Michael

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige