Datentransfer von Excel nach Access
Hallo,
ich habe aktuell folgende Herausforderung:
IST:
1x Exceltabelle (Daten wurden aus einer CSV importiert) -> ca 900 Spalten und ca. 7000 Zeilen
-> diese Tabelle wird täglich neu und automatisiert erstellt
SOLL:
1x Access Datenbank (in welchem dann im Folgenden ein ordentliches Formular erstellt werden soll)
Datenimport von ca. 60 der 900 Excel Spalten in die Datenbank
Problem:
Es lassen sich nicht alle Spalten in Access importieren, da maximal 255 Spalten in einer DB erstellt werden können. die gewüsnchten Daten müssen also schon im Vorfeld bzw. beim Import (z.B. über Spaltenüberschriften) selektiert werden.
Leider ist es beim normalen Import nur möglich eine Auswahl der NICHT gewünschten Spalten zu treffen (mühselig bei mehr als 800 nicht gewollten Spalten und wenig effizient).
Bei meinen Recherchen im Netz bin ich auf VBA-Formeln gestoßen, mit denen einen bestimmten Bereich importieren kann - führt man dies jedoch für 2 Bereiche nacheinander aus, werden auch die Daten intereinander in der DB eingefügt :
A 1
B 2
wird dadurch zu
A
B
1
2
Hat jemand eine Idee wie ich die Daten im meine Access-DB transferieren kann?
Fremdsoftware steht nicht zur Verfügung und darf auf dem Arbeitsplatz nicht installiert werden.
Vielen Dank schonmal für eure Hilfe
ich habe aktuell folgende Herausforderung:
IST:
1x Exceltabelle (Daten wurden aus einer CSV importiert) -> ca 900 Spalten und ca. 7000 Zeilen
-> diese Tabelle wird täglich neu und automatisiert erstellt
SOLL:
1x Access Datenbank (in welchem dann im Folgenden ein ordentliches Formular erstellt werden soll)
Datenimport von ca. 60 der 900 Excel Spalten in die Datenbank
Problem:
Es lassen sich nicht alle Spalten in Access importieren, da maximal 255 Spalten in einer DB erstellt werden können. die gewüsnchten Daten müssen also schon im Vorfeld bzw. beim Import (z.B. über Spaltenüberschriften) selektiert werden.
Leider ist es beim normalen Import nur möglich eine Auswahl der NICHT gewünschten Spalten zu treffen (mühselig bei mehr als 800 nicht gewollten Spalten und wenig effizient).
Bei meinen Recherchen im Netz bin ich auf VBA-Formeln gestoßen, mit denen einen bestimmten Bereich importieren kann - führt man dies jedoch für 2 Bereiche nacheinander aus, werden auch die Daten intereinander in der DB eingefügt :
A 1
B 2
wird dadurch zu
A
B
1
2
Hat jemand eine Idee wie ich die Daten im meine Access-DB transferieren kann?
Fremdsoftware steht nicht zur Verfügung und darf auf dem Arbeitsplatz nicht installiert werden.
Vielen Dank schonmal für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 373275
Url: https://administrator.de/forum/datentransfer-von-excel-nach-access-373275.html
Ausgedruckt am: 18.04.2025 um 12:04 Uhr
7 Kommentare
Neuester Kommentar
900 Spalten?! Egal was es ist, aber das kann kein Sinnvolles Format sein.
Erster Reflex: Schmeiss es weg und mach es in SQL neu. Dieses mal mit ordentlichem DB Design.
Aber evtl. ist es ja wirklich nötig.
Also:
Importiere es in eine ordentliche SQL DB.
Aber vermutlich ist auch nicht erlaubt und man will unbedingt Access, weil ... naja weil mans halt will. :m
Also bleibt dir nur ein Script
erster Durchlauf: lege nur die Spalte mit den IDs an
zweiter durchlauf: transferiere die ersten n-hundert Spalten anhand der IDs in die DB
dritter durchlauf: transferiere die nächsten n-hundert Spalten anhand der IDs in die DB
usw
Erster Reflex: Schmeiss es weg und mach es in SQL neu. Dieses mal mit ordentlichem DB Design.
Aber evtl. ist es ja wirklich nötig.
Also:
Importiere es in eine ordentliche SQL DB.
Aber vermutlich ist auch nicht erlaubt und man will unbedingt Access, weil ... naja weil mans halt will. :m
Also bleibt dir nur ein Script
erster Durchlauf: lege nur die Spalte mit den IDs an
zweiter durchlauf: transferiere die ersten n-hundert Spalten anhand der IDs in die DB
dritter durchlauf: transferiere die nächsten n-hundert Spalten anhand der IDs in die DB
usw
Moin,
ein "Schnellschuss"-Ansatz wäre:
Bei fixen Spaltenpositionen:
Die CSV zeilenweise einlesen, jede Zeile mit Split() zerlegen, sodass du zunächst mal ein 600-Value großes Array hast (deine Spalten)
Dann erstellst du einen String, der die 60 relevanten Werte aneinanderkettet (man könnte das auch mit einem weiteren Array erledigen)
Die einzelnen Strings werden dann in ein Array der größe [Anzahl Zeilen] eingesetzt.
Alternativ ein zweidimensionales Array erstellen. Dimension 1 ist die Zahl der Zeilen, Dimension 2 die 60 relevanten, zu importierenden Werte.
Musst du die Felder anhand der SPaltenüberschriften selektieren, brauchst du zwei Durchläufe:
Durchlauf 1: du ermittelst die SPalte ("ID") der zu übernehmenden SPalte anhand der Überschrift und merkst dir die "ID"
Durchlauf 2: arbeitest die CSV wie in der oberen Variante ab, setzt dann aber die ID in den Index des Arrays ein(Array(ID)), um die richtige Spalte abzufragen
Gruß
em-pie
ein "Schnellschuss"-Ansatz wäre:
Bei fixen Spaltenpositionen:
Die CSV zeilenweise einlesen, jede Zeile mit Split() zerlegen, sodass du zunächst mal ein 600-Value großes Array hast (deine Spalten)
Dann erstellst du einen String, der die 60 relevanten Werte aneinanderkettet (man könnte das auch mit einem weiteren Array erledigen)
Die einzelnen Strings werden dann in ein Array der größe [Anzahl Zeilen] eingesetzt.
Alternativ ein zweidimensionales Array erstellen. Dimension 1 ist die Zahl der Zeilen, Dimension 2 die 60 relevanten, zu importierenden Werte.
Musst du die Felder anhand der SPaltenüberschriften selektieren, brauchst du zwei Durchläufe:
Durchlauf 1: du ermittelst die SPalte ("ID") der zu übernehmenden SPalte anhand der Überschrift und merkst dir die "ID"
Durchlauf 2: arbeitest die CSV wie in der oberen Variante ab, setzt dann aber die ID in den Index des Arrays ein(Array(ID)), um die richtige Spalte abzufragen
Gruß
em-pie