Öffnen von csv-Dateien per VBA

Bild

Betrifft: Öffnen von csv-Dateien per VBA von: Pit
Geschrieben am: 16.02.2005 13:06:14

Hallo!

Scheinbar ist es nicht so einfach, mit VBA csv-Dateien zu öffnen wie in Excel.

Weiter unten sind einige Zeilen. Hier werden alle csv-Dateien in einem Ordner durch Klicken auf eine beliebige geöffnet und danach in eine Tabelle einer einzigen Arbeitsmappe verschoben.
In der Do While....Loop-Schleife passieren dann noch andere Dinge.
Die csv-Dateien werden leider nur in eine Spalte verfrachtet (das ist das eigentliche Problem!!!!), weswegen ich dann noch 'Text in Spalten' anwenden muss. Merkwürdig.
Und ein weiteres Problem ist: In den importierten csv-Dateien sind Dezimalzahlen, die durch Kommata getrennt sind (also die Dezimalstellen). Jetzt kommt es natürlich ganz auf die Einstellungen drauf an, wie die Zahlen ankommen. Habe ich Punkt als Dezimaltrennung angegeben, dann tauchen nach dem Import Lücken auf, was nicht sein darf.
Gibt es für beides Lösungen?

DateiErweiterung = "*.csv"
Datei = Application.GetOpenFilename("csv-Dateien (" & DateiErweiterung & "), " & DateiErweiterung, Title:="Verzeichnisauswahl - erste Datei auswählen")

If Datei = False Then Exit Sub
DateiPfad = CurDir & "\"
If DateiPfad = "" Then Exit Sub
Else
ChDir DateiPfad
Set NeueMappe = Workbooks.Add
DateiName = Dir(DateiPfad & DateiErweiterung)
Do While Len(DateiName) > 0
Workbooks.Open Filename:=DateiPfad & DateiName
Sheets(1).Move After:=NeueMappe.Sheets(NeueMappe.Sheets.Count)
DateiName = Dir()
Loop
End If

Bild


Betrifft: AW: Öffnen von csv-Dateien per VBA von: Volker
Geschrieben am: 16.02.2005 13:42:27

Hallo Pit,

ich hatte mal ein ähnliches Problem. Bei mir waren die Daten durch Kommas getrennt und Dezimaltrennzeichen war ebenfalls ein Komma !!!!!
Mir ist nichts besseres eingefallen, als das Komma beim öffnen als Spaltentrenner zu nehmen und anschließend die Werte wieder zusammen zu bauen.
Bsp: Wert = 26,876
in A1: 26, in B1: 876 usw

A1= A1 + ("0," & B1)
A2= A2 + ("0," & B2)
usw.
ist eine Spalte abgearbeitet, werden die nun leeren Spalten gelöscht.

Das passt zwar nicht 100%, aber da sich sonst keiner gemeldet hat....

i = 1
j = 2
While Cells(i, j) <> ""
'Cells(i, j).Select
While Cells(i, j) <> ""
Cells(i, j) = Cells(i, j) + ("0," & Left(Cells(i, j + 1), 1))
i = i + 1
Wend
i = 1
j = j + 1
For k = 1 To 3
Columns(j).Delete
Next
Wend

Gruß
Volker


Bild


Betrifft: AW: Öffnen von csv-Dateien per VBA von: Werner Oertli
Geschrieben am: 16.02.2005 13:58:24

Hallo Pit

Wie ich Dich verstanden habe, öffnest Du die CSV aus dem Explorer!?

Da war mal folgende Regel ...

Im Explorer unter Extras - Ordneroptionen - Dateitypen - Eintrag csv. - erweitert - Eintrag open - bearbeiten.Hier bei DDE- Nachricht den Eintrag [open("%1")] ändern in [öffnen("%1")].

Gruss Werner


Bild


Betrifft: AW: Öffnen von csv-Dateien per VBA von: Pit
Geschrieben am: 16.02.2005 15:34:07

Werner, das funktioniert leider auch nicht!
Aber du hast recht, ich versuche die Dateien mit dem Explorer zu öffnen (application.getopenfilename).
Ich versuche es jetzt mal mit einem reinen Datenimport. Aber da wird mir das Trennzeichenproblem nicht die Schwierigkeiten machen, da ich ja Semikolon-Trennung der Spalten habe und die Dezimalstelle wird per Komma getrennt.

Trtzdem Dank an Werner und an Volker!


Bild


Betrifft: AW: Öffnen von csv-Dateien per VBA von: Werner Oertli
Geschrieben am: 16.02.2005 15:59:59

Hallo Pit

Wenn Du die CSV-Datei vom Excel aus aufrufst, sollte Dein Problem (alles in einer Spalte) behoben sein.

Gruss Werner


Bild


Betrifft: AW: Öffnen von csv-Dateien per VBA von: Pit
Geschrieben am: 16.02.2005 16:43:10

Ja, wie gesagt, ich brauche die VBA-Lösung!!!
Das scheint unterschiedlich gehandhabt zu werden.

Ein einfaches Öffnen aus dem Explorer aus oder von Excel aus funktioniert (auch ohne deine Änderung). Aber ich benötige einen Aufruf mittels VBA. Das geht nach wie vor nicht.


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Solver-Verweis -> interner Fehler Code von Nepumuk"