Vba: csv Datei in Access importieren

Hallo Franz,

sorry, aber ich habe den Sinn der Fragestellung nicht
verstanden.

sorry2, kurz,knapp und präzise zu erklären ist leider nicht
mein Ding:frowning: :smile:

Ich möchte eine csv, deren Anfang so aussieht:

„33996344“,„33996351“,„GB“,„GBR“,„UNITED KINGDOM“
„50331648“,„69956103“,„US“,„USA“,„UNITED STATES“
„69956104“,„69956111“,„BM“,„BMU“,„BERMUDA“
„69956112“,„83886079“,„US“,„USA“,„UNITED STATES“
„94585424“,„94585439“,„SE“,„SWE“,„SWEDEN“

mittels Vba-Aufruf der nicht in Access gestartet wird so in
Access importieren, daß mich dann in Access dieses Bild
anlächelt:

Tabellenblatt: C:[CSVEinlesen.xls]!Teil1
│ A │ B │ C │ D
│ E │
──┼──────────┼──────────┼────┼─────┼────────────────┤
1 │ 33996344 │ 33996351 │ GB │ GBR
│ UNITED KINGDOM │
──┼──────────┼──────────┼────┼─────┼────────────────┤
2 │ 50331648 │ 69956103 │ US │ USA
│ UNITED STATES │
──┼──────────┼──────────┼────┼─────┼────────────────┤
3 │ 69956104 │ 69956111 │ BM │ BMU
│ BERMUDA │
──┼──────────┼──────────┼────┼─────┼────────────────┤
4 │ 69956112 │ 83886079 │ US │ USA
│ UNITED STATES │
──┼──────────┼──────────┼────┼─────┼────────────────┤
5 │ 94585424 │ 94585439 │ SE │ SWE
│ SWEDEN │
──┴──────────┴──────────┴────┴─────┴────────────────┘

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Links die Zeilennummern 1-5 und oben die Spaltenbezeichnungen
A-E sind unwichtig, so würde es in Excel aussehen.

Meine Versuche eine csv manuell in Access zu öffnen
scheiterten, irgendwas ging immer bei der Umwandlung schief,
egal was ich wählte.
(Hinweis, ich kenne mich in Access überhaupt nicht aus)

Wenn Du eine CSV-Datei importieren willst, dann benutz
Transfertext mit einer evtl. vorher erstellten
Importspezifikation

?

Option Explicit
Public appaccess As Object
Public Function csvimport()


Set appaccess = CreateObject("Access.Application")
With appaccess
.Opencurrentdatabase "c:\test.mdb"

 .Visible = True

.DoCmd.TransferText 0, "CSVImport", "tbl\_AccessTabelle", "c:\test.csv", True
.
.
'Mit SQL und Execute -----------------
.
.
.
Dim FF as long, S as String, Satz as Variant 
FF = FreeFile
Application.StatusBar = "Lese csv-Datei ein"
Open Pfad & Dat For Binary As #FF

Line Input(FF,S) ' falls erste Zeile Feldnamen besitzt
do until Eof(FF)
Line Input(FF,S)

Satz = Split(S, ",")

.Execute "insert into tbl\_AccessTabelle (Feld1,Feld2,Feld3) Values(" & \_
"'" & Satz(0) & "'" & \_
"'" & Satz(1) & "'" & \_
"'" & Satz(2) & "')"
Close FF


End With

End Function

vorher muß in Access für die CSV-Datei einmalig mit Hilfe des Importassistenten (Datenbankfenster/Tabellen , Rechtsklick, Importieren und dann im Verlauf des Ass. auf „weitere“ klicken) die Import-Spez „CSVImport“ definiert und gespeichert(!) werden.

ungetestet, nur prinzipiell und die Recordsetmethode lass ich mal außen vor.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

oder lies die Datei per VBA-(File) Open

und Line Input ein und benutz einen Recordset zum Speichern in
eine Tabelle.

Das verstehe ich schon eher.
Okay, der Code müßte ja auch in Access klappen:

FF = FreeFile
Application.StatusBar = „Lese csv-Datei ein“
Open Pfad & Dat For Binary As #FF
S = Input(FileLen(Pfad & Dat), #FF)
Close #FF
Satz = Split(S, Chr(10))

Nun hab ich im Array Satz die einzelnen Zeilen der csv-Datei,
wie kriege ich die nun in eine Tabelle von Access?
Recordset sagt mir leider gar nix, schon mal gelesen aber k.A.

Wobei CSV „Comma Separated Values“ als auch „Character
Separated Values“ bedeuten kann.

Stimmt, hatte ich vergessen :smile:

Was das Schließen von Access betrifft, wird die Sitzung nur
unsichtbar, im Taskmanager sammeln sich die sich aber durchaus
an.

Aha, danke für die Info, hatte ich vergessen zu prüfen.
Aber trotzdem, gibt es einen „Dreh“ daß die Anwendung sichtbar
bleibt?

Vielleicht wird alles verständlicher wenn ich den Hintergrund
erkläre, im Excelbrett ist eine Anfrage wo jmd. eine csv in
Excel einlesen will, das geht aber nicht weil sein Excel nur
65536 Datensätze kennt und die csv mehr Datensätze hat.
beim Versuch diese csv-datei in Excel kommt eine riesenlange
Fehlermeldung (so lang hab ich noch keine gesehen *gg*) wo
gesagt wird, man solle die csv in Access öffnen, dann durch
die Export-Funktion von Access sie in kleinen Excel-dateien
exportieren.

Ich habe daraufhin eine Excel-Vba-Lösung gebastelt die diese
übergroße csv-datei einliest.
Nur die dauert 2-4 Minuten.

Deshalb dachte ich, ich setze das was die Fehlermeldung besagt
in Vba um, also die csv in Access importieren, dann in kleinen
Häppchen als xls speichern.
Das müßte ja theoretisch fix gehen.

Es geht um diese Anfrage:

/t/fehlermeldung-csv-datei-wuerde-auch-xls-betreffen…

Danke für das Interesse
Gruß
Reinhard