csv-Datei mittels Makro einfügen

11/01/2008 - 19:02 von Frank Spade | Report spam
Guten Tag,

ich möchte mittels eines VBA-Makros in eine bestehende Tabelle, am Anfang
der Zeile in der der Cursor steht, den Inhalt einer .csv-Datei einfügen
(manuell würde ich über "externe Daten importieren" gehen). Dabei möchte ich
den Ordner aus dem die Datei eingefügt werden soll voreinstellen, den
Benutzer im Filedialog die einzufügende Datei auswàhlen lassen und angeben,
dass die Werte in der Datei durch Komma getrennt sind.

Ich benutze Excel 2003 (SP2) unter Windows XP.

Kann mir bitte jemand damit helfen?
 

Lesen sie die antworten

#1 stefan onken
12/01/2008 - 13:56 | Warnen spam
Frank Spade wrote:
Guten Tag,

ich möchte mittels eines VBA-Makros in eine bestehende
Tabelle, am Anfang der Zeile in der der Cursor steht, den
Inhalt einer .csv-Datei einfügen (manuell würde ich über
"externe Daten importieren" gehen). Dabei möchte ich den
Ordner aus dem die Datei eingefügt werden soll voreinstellen,
den Benutzer im Filedialog die einzufügende Datei auswàhlen
lassen und angeben, dass die Werte in der Datei durch Komma
getrennt sind.
Ich benutze Excel 2003 (SP2) unter Windows XP.

Kann mir bitte jemand damit helfen?



hallo Frank,
mittels Daten importieren könnte das Makro so aussehen:

Sub csvImportQT()
ChDir "C:\test"
datei = Application.GetOpenFilename("csv Files (*.csv), *.csv")
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & datei, _
Destination:=Range("A" & ActiveCell.Row))
.Name = datei
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileCommaDelimiter = True
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub

Über ChDir ist der Pfad einstellbar. Ich würde aber Daten importieren
nur dann nutzen, wenn ich sich regelmàßig àndernde Daten aus einer
Datenquelle importieren wollte. Ich denke, dass die
Querytable-Verknüpfungen die Datei aufblàhen werden. Es gibt noch einen
anderen Weg, zB

Sub csvImport()
Application.ScreenUpdating = False
r = ActiveCell.Row
ChDir "C:\test"
datei = Application.GetOpenFilename("csv Files (*.csv), *.csv")
Workbooks.OpenText datei, comma:=True
ActiveSheet.UsedRange.Copy _
Destination:=ThisWorkbook.ActiveSheet.Range("A" & r)
ActiveWorkbook.Close False
Application.ScreenUpdating = True
End Sub

Gruß
stefan

Ähnliche fragen