Excel-Tabelle (keine Liste) aus Access heraus aufbereiten und in Access-Tabelle einlesen - A2K3

28/10/2007 - 09:34 von Andreas Volkert | Report spam
Hallo liebe Newsgroup-Freunde,

darf ich Euch mal wieder um einen Rat bzw. Hilfe bei folgendem Problem
bitten?

In einer aus Datev exportierten Chefübersicht liegen Daten in einer
Excel-Tabelle, die für die Weiterverarbeitung in Access aufbereitet und
anschließend in eine Access-Tabelle importiert werden sollen.

Bisher habe ich die Aufbereitung in Excel mit folgendem Code durchgeführt
und damit die Daten in ein separates Registerblatt "Liste" (vorher angelegt)
geschrieben. Danach habe ich den Inhalt dieses Tabellenblattes(Liste)
manuell nach Access importiert, um weitere Berechnungen durchzuführen.

[...]
intColSource = 3
intRowSource = 1
intColTarget = 1
intRowTarget = 2
For intRowSource = 1 To 10000
If wksQuelle.Cells(intRowSource, 1).Value = "Zeile" Then
For intColSource = 3 To wksQuelle.Cells(intRowSource,
Columns.Count).End(xlToLeft).Column Step 2
wksZiel.Cells(1, 1).Value = "ArtikelNr"
wksZiel.Cells(1, 2).Value = "Gesamt"
'ArtikelNr
wksZiel.Cells(intRowTarget, 1).Value wksQuelle.Cells(intRowSource + 1, intColSource).Value
'Gesamtsumme
wksZiel.Cells(intRowTarget, 14) = wksQuelle.Cells(intRowSource +
17, intColSource).Value
intRowTarget = intRowTarget + 1
Next intColSource
End If
Next intRowSource
[...]

Nun möchte ich das ganze aber komplett von Access aus steuern, also (am
liebsten) einen Öffnen Dialog in Access anbieten, bei dem ich die
Excel-Tabelle auswàhlen kann. Danach soll der oben aufgeführte Code - von
Access aus gesteuert - die Aufbereitung der Daten übernehmen aber die Daten
ohne Zwischenschritt direkt in die Access-Tabelle schreiben bzw. an eine
bestehende Tabelle anfügen.

Nun meine Frage: Ist das so überhaupt realisierbar (es müssen mehrere Werte
im gleichen Datensatz in verschiedene Felder (Kostenarten) geschrieben
werden).
Wie kann ich Excel von Access aus steuern? Mit dem Application-Objekt? Muss
da die Bibliothek von Excel vorher eingebunden sein (Early binding) oder
kann ich das auch mit late binding machen?
Wie spreche ich das Excel-Objektmodell korrekt an, damit mein Vorhaben
klappt?
Kann ich die aus Excel gelesenen Daten an ein recordset anfügen (rs.addnew?)
oder wie würdet Ihr so etwas sinnvollerweise lösen?
Könnt ihr mir bitte vielleicht mit dem einen oder anderen Codeschnipsel auf
die Sprünge helfen?

Vielen Dank im Voraus.

Viele Grüße aus München

Andi Volkert
 

Lesen sie die antworten

#1 Thomas Möller
28/10/2007 - 09:57 | Warnen spam
Hallo Andi,

Andreas Volkert schrieb:
In einer aus Datev exportierten Chefübersicht liegen Daten in einer
Excel-Tabelle, die für die Weiterverarbeitung in Access aufbereitet
und anschließend in eine Access-Tabelle importiert werden sollen.

Bisher habe ich die Aufbereitung in Excel mit folgendem Code
durchgeführt und damit die Daten in ein separates Registerblatt
"Liste" (vorher angelegt) geschrieben. Danach habe ich den Inhalt
dieses Tabellenblattes(Liste) manuell nach Access importiert, um
weitere Berechnungen durchzuführen.
[...]
intColSource = 3
intRowSource = 1
intColTarget = 1
intRowTarget = 2
For intRowSource = 1 To 10000
If wksQuelle.Cells(intRowSource, 1).Value = "Zeile" Then
For intColSource = 3 To wksQuelle.Cells(intRowSource,
Columns.Count).End(xlToLeft).Column Step 2
wksZiel.Cells(1, 1).Value = "ArtikelNr"
wksZiel.Cells(1, 2).Value = "Gesamt"
'ArtikelNr
wksZiel.Cells(intRowTarget, 1).Value > wksQuelle.Cells(intRowSource + 1, intColSource).Value
'Gesamtsumme
wksZiel.Cells(intRowTarget, 14) > wksQuelle.Cells(intRowSource + 17, intColSource).Value
intRowTarget = intRowTarget + 1
Next intColSource
End If
Next intRowSource
[...]

Nun möchte ich das ganze aber komplett von Access aus steuern, also
(am liebsten) einen Öffnen Dialog in Access anbieten, bei dem ich die
Excel-Tabelle auswàhlen kann. Danach soll der oben aufgeführte Code -
von Access aus gesteuert - die Aufbereitung der Daten übernehmen aber
die Daten ohne Zwischenschritt direkt in die Access-Tabelle schreiben
bzw. an eine bestehende Tabelle anfügen.

Nun meine Frage: Ist das so überhaupt realisierbar (es müssen mehrere
Werte im gleichen Datensatz in verschiedene Felder (Kostenarten)
geschrieben werden).
Wie kann ich Excel von Access aus steuern? Mit dem
Application-Objekt? Muss da die Bibliothek von Excel vorher
eingebunden sein (Early binding) oder kann ich das auch mit late
binding machen? Wie spreche ich das Excel-Objektmodell korrekt an,
damit mein Vorhaben
klappt?
Kann ich die aus Excel gelesenen Daten an ein recordset anfügen
(rs.addnew?) oder wie würdet Ihr so etwas sinnvollerweise lösen?
Könnt ihr mir bitte vielleicht mit dem einen oder anderen
Codeschnipsel auf die Sprünge helfen?



ich würde auf die vorherige Manipulation der Daten in Excel verzichten.

Ich löse solche Aufgaben i.d.R. wie folgt:

Der User wàhlt über einen Dateiauswahldialog die zu importierende
Excel-Datei aus. Die so ausgewàhlte Excel-Datei wird als Tabelle nach
Access verknüpft.
Jetzt werden die Daten aus der Excel-Tabelle in eine (temporàre)
Access-Tabelle importiert. Bei diesem Import können schon erste
Manipulation der Daten vorgenommen werden.
Als nàchstes werden die Daten in der temporàren Excel-Tabelle
entsprechend der Vorgaben angepasst.
Nun werden die Daten mit einer Anfügeabfrage in die Zieltabelle
geschrieben und die temporàre Tabelle wird wieder gelöscht.

Der Vorteil dieser Lösung liegt IMHO darin, dass ich ganz ohne Excel
auskomme. Die Daten können mit den gewohnten Möglichkeiten von Access
bearbeitet und aufbereitet werden.

HTH
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen