Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
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

CSV Dateien mit GetOpen öffnen

CSV Dateien mit GetOpen öffnen
01.12.2008 06:36:57
Josef
Guten Morgen!
Mit dem Code
Workbooks.Open Filename:= _
"K:\Allg_dat\TRANSFER\HST\ABT08\Standesdifferenzen_2008\erstes Halbjahr_2008\burausgabedateiMitTraeger20081114_07_24_59.csv"
Application.Run "checkname"
wird eine csv in einer neuen Arbeitsmappe ohne Semikolon geöffnet.
Ich möchte jedoch mit dem Getopen Befehl meine Dateien zum Öffnen selber aussuchen:
Mit folgendem Code wird die CSV datei jedoch nur in der gleichen Datei mit Semikolon geöffnet:

Sub KonvertErsatz()
Dim Textfile As String
Const Textfile_Pfad As String = "K:\Allg_dat\TRANSFER\HST\ABT08\Standesdifferenzen_2008\erstes  _
Halbjahr_2008\"
Const Textfile_Laufwerk As String = "K:"
ChDrive Textfile_Laufwerk
ChDir Textfile_Pfad
Textfile = Application.GetOpenFilename("Textdateien (*.*), *.csv", , "Textdateien")
Workbooks.OpenText Filename:=Textfile
Application.Run "checkname"
End Sub


Wo habe ich hier bitte den Fehler gemacht bzw. wie würde der richtige code bitte lauten?
Danke
Josef

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 06:46:00
Josef
Hallo nochmals:
Korrektur: die csv Datei wird nicht in einer neuen Datei geöffnet, sondern die CSV Datei selbst wird ohne Semikolon in den richtigen spalten angezeigt.
Danke
Josef
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 08:02:00
Josef
Hallo!
So würde es funktionieren wenn es eine Textdatei wäre, leider sind es aber CSV Dateien:

Sub KonvertErsatz()
Dim Textfile As String
Const Textfile_Pfad As String = "K:\Allg_dat\TRANSFER\HST\ABT08\Standesdifferenzen_2008\erstes  _
Halbjahr_2008\"
Const Textfile_Laufwerk As String = "K:"
ChDrive Textfile_Laufwerk
ChDir Textfile_Pfad
Textfile = Application.GetOpenFilename("Textdateien (*.*), *.txt", , "Textdateien")
Workbooks.OpenText Filename:=Textfile, _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:= _
True, Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1 _
, 1), Array(2, 1), Array(3, 1), Array(4, 2), Array(5, 1), Array(6, 1), Array(7, 2),  _
Array(8, 2 _
), Array(9, 2), Array(10, 1), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2),  _
Array( _
15, 2), Array(16, 1), Array(17, 1), Array(18, 2), Array(19, 1), Array(20, 2), Array(21,  _
1), _
Array(22, 2)), TrailingMinusNumbers:=True
Application.Run "checkname"
End Sub


Danke
Josef

Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 08:18:51
Josef
Hallo nochmals!
Ich fand folgende Lösung in der Recherche:

Sub CSV2XLS()
'Alle .csv (Trennzeichen ;) eines Ordners in .xls umwandeln
Dim oFS As Object, oFolder As Object, oFile As Object
Dim strFolder As String
Dim strTxt As String, myArr, lngL As Long, WKS As Worksheet, iFREE As Integer
With Application.FileDialog(4)
.InitialFileName = "K:\Allg_dat\TRANSFER\HST\ABT08\Standesdifferenzen_2008\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
On Error GoTo FEHLER
DoEvents
GetMoreSpeed
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder(strFolder)
iFREE = FreeFile
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Set WKS = Worksheets.Add
WKS.Name = oFile.Name
lngL = 1
Open oFile For Input As iFREE
Do Until EOF(iFREE)
Line Input #iFREE, strTxt
myArr = Split(strTxt, ";")
With WKS
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
lngL = lngL + 1
Loop
Close #iFREE
End If
Next oFile
AUFRAEUMEN:
Set oFile = Nothing
Set oFolder = Nothing
Set oFS = Nothing
GetMoreSpeed False
Exit Sub
FEHLER:
If Err.Number Then
MsgBox "Fehler!" & vbLf & Err.Description
Err.Clear
Resume AUFRAEUMEN
End If
End Sub



Sub GetMoreSpeed(Optional ByVal Modus As Boolean = True)
If Modus = True Then intCalculation = Application.Calculation
With Application
.ScreenUpdating = Not Modus
.EnableEvents = Not Modus
.Calculation = IIf(Modus = True, xlManual, intCalculation)
.Cursor = IIf(Modus = True, 2, -4143)
End With
End Sub


Leider kann ich diesen Code nicht testen, da hier der Name der jeweiligen CSV Datei als Name für des jeweilige Tabellenblatt verwendet wird. Nachdem jedoch meine CSV Dateien einen längeren Namen haben, bricht der Code immer mit einer Fehlermeldung ab. Wie und wo müßte man hier den code bitte verändern, damit die Tabellenblätter nicht umbenannt werden und der Code ohne Fehlermeldung durchgeführt wird?
Danke
Josef

Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 08:41:42
yusuf
Hi,
der fett, kursive Teil des Codes legt den Namen des neu erzeugten Worksheets fest.
Dort koenntest du, falls gewuenscht durch die Funktion "Links" die gewuenschte Anzahl an Buchstaben von links als Namen festlegen.
z.B. WKS.Name = LINKS(oFile.Name, 10) somit waeren die ersten 10 Buchstaben von links als Name des neuen Worksheets festgelegt.
Gruß
Yusuf

Sub CSV2XLS()
'Alle .csv (Trennzeichen ;) eines Ordners in .xls umwandeln
Dim oFS As Object, oFolder As Object, oFile As Object
Dim strFolder As String
Dim strTxt As String, myArr, lngL As Long, WKS As Worksheet, iFREE As Integer
With Application.FileDialog(4)
.InitialFileName = "K:\Allg_dat\TRANSFER\HST\ABT08\Standesdifferenzen_2008\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strFolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
On Error GoTo FEHLER
DoEvents
GetMoreSpeed
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder(strFolder)
iFREE = FreeFile
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Set WKS = Worksheets.Add
WKS.Name = oFile.Name
lngL = 1
Open oFile For Input As iFREE
Do Until EOF(iFREE)
Line Input #iFREE, strTxt
myArr = Split(strTxt, ";")
With WKS
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
lngL = lngL + 1
Loop
Close #iFREE
End If
Next oFile
AUFRAEUMEN:
Set oFile = Nothing
Set oFolder = Nothing
Set oFS = Nothing
GetMoreSpeed False
Exit Sub
FEHLER:
If Err.Number Then
MsgBox "Fehler!" & vbLf & Err.Description
Err.Clear
Resume AUFRAEUMEN
End If
End Sub


Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 08:54:00
Josef
Hallo!
Danke für Deine Antwort.
Habe jetzt getestet mit 25 Stellen und bekomme folgende Fehlermeldung:
Anwendungs oder objektdefinierter Fehler.
Die erste Datei wurde richtig eingelesen, bei der zweiten kam der Abbruch.
Josef
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 09:31:02
yusuf
Hi,
wie heissen denn deine Dateien?
Sind eventuell die ersten 25 stellen immer gleich?
Gruß
Yusuf
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 09:42:00
Josef
Hallo Yussuf!
Wenn ich 25 Stellen nehme dann nicht.
Die Fehlermeldung erfolgt bei der Zeile
With WKS
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
Josef
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 09:50:00
Rudi
Hallo,
lngL>65536 oder myArr leer?
Gruß
Rudi
Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 10:13:00
Josef
Hallo Rudi!
Danke für Deine Antwort.
1.) .Range(.Cells(lngL, 1), .Cells...= Anwendungs oder objektdefinierter Fehler
2.) IngL = 1
3.) UBound(myArr)=3169
Danke
Josef
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 10:19:19
Rudi
Hallo,
das kann dann ja nicht klappen, da 3170 Spalten benötigt werden.
Gruß
Rudi
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 10:29:33
Josef
Hallo Rudi!
Die CSV Dateien die eingelesen werden sollen haben aber keine 3170 Spalten sondern nur max 18 Spalten.
Josef
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 10:36:00
Rudi
Hallo,
aber anscheinend 3169 ; in Zeile 1?
Ich kenne deine Dateien nicht.
Ich kann nur sagen, dass der Code einwandfrei funktioniert (ist ja auch von mir ;-))
Gruß
Rudi
Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 10:46:00
Josef
Hallo Rudi!
Hier ist eine Musterdatei mit den ersten fünf Zeilen.
https://www.herber.de/bbs/user/57274.xls
Als ich in der Recherche Deinen Namen bei dieser lösung sah, hatte ich Hoffnung, da von Deiner Seite immer produktive und super Lösungen angeboten wurden.
Josef
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 10:53:55
Rudi
Hallo,
interessanter wären die ersten 5 Zeilen als .csv. Was nützen bereits konvertierte Daten?
.csv ist im übrigen auch nur einfach Text, allerdings mit ; getrennt anstatt TAB.
Gruß
Rudi
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 11:04:00
Josef
Hallo Rudi!
Ich wollte diese Datei als csv hochladen nur die möglichkeit wurde mir nicht gegeben.
mir ist eines aufgefallen:
Bei der Erzeugung der CSV Dateien durch unsere EDV wurden in den Zellen mit den Werten viele Leerzeichen erzeugt. (z.B: "HV-VSNR ".
Nachdem ich bei den ersten zwei Dateien in den Überschriften die Leerzeichen entfernte, wurden diese zwei Dateien auch eingelesen. als die Leerzeichen noch drinnen waren, konnte ich nur eine Datei.einlesen. Wenn dies der Fehler sein sollte. müßte ich zuerst alle CSV DAteien öffnen und mittels Trim die Leerzeichen entfernen. Gibt es für diesen Fall bitte eine VBA Lösung?
Danke
Josef
Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 11:45:00
Josef
Hallo Rudi!
Habe jetzt bei sämtlichen CSV Dateien die Leerzeichen mittels Glätten entfernt und der code funktionierte bestens. Alles dort wo es sein sollte.
Wie könnte ich jetzt bitte das Glätten automatisieren?
Josef
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 12:09:00
Rudi
Hallo,
imho sind die Leerzeichen nicht das Problem.

Ich wollte diese Datei als csv hochladen nur die möglichkeit wurde mir nicht gegeben.


Benenne sie in .txt um. Dann sehen wir weiter.
Gruß
Rudi

AW: CSV Dateien mit GetOpen öffnen
01.12.2008 12:31:00
Josef
Hallo Rudi!
hier ist die Textdatei:
https://www.herber.de/bbs/user/57277.txt
Danke nochmals für Deine Mühe und Deine Geduld.
Josef
Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 12:54:00
Rudi
Hallo,
das lässt sich tadellos importieren.
Gruß
Rudi
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 13:09:00
Josef
Hallo Rudi!
die erste Datei lässt sich ja ordentlich einspielen. nur ab der zweiten Datei bekam ich den Fehler.
Nachdem ich jedoch bei allen CSV Dateien die Zellen geglättet hatte und das Makro nochmals startete, gingen alles problemlos über die Bühne.
Nachdem bei vielen unserer Applikationen in den Eingabefeldern feste Fixstellen vorgegeben sind, werden diese bei einer Auswertung auch so von unserer EDV geliefert , auch wenn die eingetragenen Werte kürzer sind.
Zu diesem Punkt hätte ich praktisch nur mehr das Problem, ob eine automatisierte Glättung mittels VBA möglich wäre.
Ansonsten kann ich zu Deiner Lösung nur noch sagen: "Ist Spitze".
Josef
Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 13:29:00
Rudi
Hallo,
es liegt definitiv nicht an den Leerzeichen.
Ich habe deine Bsp.-Datei mehrfach kopiert und auch per Editor noch zusätzliche Leerzeichen eingebaut. Funktioniert mit dem von dir oben geposteten Code einwandfrei.
Wie willst du die Leerzeichen per VBA eliminieren, wenn du die Datei nicht einlesen kannst?
Wenn es denn funktioniert und du nur die Datensätze säubern willst:

Do Until EOF(iFREE)
Line Input #iFREE, strTxt
myArr = Split(strTxt, ";")
For i = 0 To UBound(myArr)
myArr(i) = Trim(myArr(i))
Next
With WKS
.Range(.Cells(lngL, 1), .Cells(lngL, UBound(myArr) + 1)) = myArr
End With
lngL = lngL + 1
Loop


Gruß
Rudi

Anzeige
AW: CSV Dateien mit GetOpen öffnen
01.12.2008 14:00:34
Josef
Hallo Rudi!
Funktioniert jetzt leider wieder nicht. Ob es an der Variable I liegt weiss ich nicht.
Dim I ?
Ich muss halt zuerst die Originaldateien öffnen, glätten und wieder speichern, und danach den Code starten.
Damit würde es klappen. Sind die Leerzeichen entfernt, passt alles bestens.
auf jeden Fall danke ich dir für Deine Mühe und die Lösung.
Josef

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige