Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
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
*.cvs Datei einlesen
Frank
Hallo alle zusammen,
ich habe heute ein Anliegen, dass ich gerade nicht selbst lösen kann. Ich zeichne ein Makro auf: Excel -> Daten -> aus Text. Dann öffnet sich ein Dialog und ich wähle eine beliebige *.csv Datei aus. Danach öffnet sich der Konvertierungs-Assistent und ich nehme gewisse Einstellungen vor. Danach klicke ich auf fertig stellen. Nun zu meinen Fragen:
Wie realisiere ich das sich das Fenster Datei öffnen öffnet und csv voreingestellt ist?
Wie kann ich dann die automatische Konvertierung durchführen, die sonst der Konvertierungs-Assistent durchführt?

Das ist der aufgezeichnete Code, allerdings sollte die Datei dynamisch sein, je nachdem welche ich auswähle.
Sub Makro1()
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Dokumente und Einstellungen\Administrator\Desktop\VBA Tests\klo.csv", _
Destination:=Range("$A$1"))
.Name = "klo"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 1, 2, 2, 2, 2, 2, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Ich hoffe es kann mir jemand helfen, im Forum habe ich nichts über csv Dateien gefunden.
Gruß, Frank

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: *.cvs Datei einlesen
29.09.2009 20:26:50
PeTeR
Hallo Frank,
mit dem Befehl GETOPENFILENAME kannst du den Datei-Öffnen-Dialog vorweg anzeigen. Dein Makro sieht dann in etwa so aus:
Datei=Application.getopenfilename("*.csv, *.csv",.......)
With ActiveSheet.QueryTables.Add(Connection:= Datei ....
Viel Erfolg
PeTeR
AW: *.cvs Datei einlesen
29.09.2009 20:54:51
Frank
Okay danke, dass hilft mir erstmal weiter.
Gruß,Frank
so funktioniert es nicht...
29.09.2009 21:16:58
Frank
Es kommt die Fehlermeldung: Der Zielbereich befindet sich nicht auf dem Arbeitsblatt, auf dem die Abfragetabelle erstellt wurde. Was ist zu ändern?
Sub Öffnen()
Dim sCsvFile As String
ChDir "\"
ChDrive "C:\"
Dateiname = Application.GetOpenFilename _
("CSV-Dateien (*.csv),*.csv,Textdateien (*.txt),* .txt,Alle Dateien (*.*),*.*") 'Das  _
Dialogfenster
If Dateiname = False Then Exit Sub
sCsvFile = Dateiname
'MsgBox "Ihre Auswahl:" & vbNewLine & Dateiname
With ActiveSheet.QueryTables.Add(Connection:=sCsvFile, _
Destination:=Worksheets(1).Cells(1, 1))
'.Name = "klo"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2, 1, 2, 2, 2, 2, 2, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Gruß, Frank
Anzeige
AW: so funktioniert es nicht...
30.09.2009 00:40:22
fcs
Hallo Frank,
beim Starten des Makros ist das 1. Tabellenblatt wahrscheinlich nicht das aktive tabellenblatt. Deshalb kommt es zur Fehlermeldung.
Passe die folgende Zeile an, dann sollte es funktionieren. Wenn die Querrytable immer im Worksheet(1) ausgeben werden soll die 1. Variante, wenn auf dem aktiven Blatt, dann die 2. Variante.
Gruß
Franz
  With Worksheets(1).QueryTables.Add(Connection:=sCsvFile, _
Destination:=Worksheets(1).Cells(1, 1))
oder
With ActiveSheet.QueryTables.Add(Connection:=sCsvFile, _
Destination:=Cells(1, 1))

Anzeige
AW: so funktioniert es nicht...
30.09.2009 09:13:30
Frank
Guten morgen Franz,
also ich habe soeben beide Varianten ausprobiert. Nun kommt eine andere Meldung:
Anwendungs_ oder objektdefinierter Fehler. - in den Zeilen
With Worksheets(1).QueryTables.Add(Connection:=sCsvFile, _
Destination:=Worksheets(1).Cells(1, 1))
oder
With ActiveSheet.QueryTables.Add(Connection:=sCsvFile, _
Destination:=Cells(1, 1))
Hast du noch eine andere Idee, wie dieses Problem zu lösen ist?
Gruß, Frank
AW: so funktioniert es nicht...
30.09.2009 13:41:52
fcs
Hallo Frank,
da hatte sich irgendwann der Datentyp für die datenverbindung verabschiedet. War mir garnicht aufgefallen.
Gruß
Franz

'MsgBox "Ihre Auswahl:" & vbNewLine & Dateiname
With Worksheets(1).QueryTables.Add(Connection:="TEXT;" & sCsvFile, _
Destination:=Worksheets(1).Range("A1"))
'.Name = "klo"

Anzeige
AW: so funktioniert es nicht...
30.09.2009 20:28:20
Frank
Hallo Franz,
danke für deine Mühen, aber ich kann nicht A1 nehmen, da nach dem Import eine erneute Abfrage kommen soll, ob noch eine csv eingelesen werden soll. Und dafür muss dieser Verweis dynamisch bleiben, sprich mit Cells. Der Syntax muss doch irgendwie möglich sein...
Gruß, Frank
Ich hab's...
30.09.2009 20:48:10
Frank
With Worksheets(1).QueryTables.Add(Connection:="TEXT;" & sCsvFile, Destination:=Worksheets(1).Cells(1, 1))
es fehlte... Connection:="TEXT;"
So und nun heiter weiter, vielen Dank Franz, war eine schwere Geburt :-)
Gruß, Frank.

245 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige