Office - Word, Excel und Co. 9.709 Themen, 40.894 Beiträge

Access2003: Datenübergabe an Excel

daCrazyDoc / 5 Antworten / Flachansicht Nickles

Hab mal wieder ein Problem:

möchte Daten aus einer Abfrage in Access an Excel übergeben. Prinzipiell funktioniert das ja relativ einfach mit TransferSpreadsheet. Das hat jedoch den Nachteil, dass hier immer ein neues Excel-Sheet angelegt bzw. das alte gnadenlos überschrieben wird und es meines Wissens auch keine Möglichkeit gibt, beim Export innerhalb Excel ein bestimmtes Tabellenblatt anzusprechen (beim Import aus Excel geht das ja).

Nun besteht aber das Excel-Sheet, das ich verwenden möchte, aus zwei Tabellenblättern: einem, in dem die Daten sind (die ich halt auch über Access aktualisieren/einpflegen möchte) und einem zweiten, das das entsprechende Diagramm aus diesen Daten enthält, das ich dann innerhalb der Access-Anwendung wiederum anzeigen lassen möchte. (Möchte zum Anzeigen nicht Excel direkt verwenden, sondern das innerhalb Access, das eine eigene Benutzeroberfläche hat, machen lassen. Grund hierfür ist, dass mit dem Teil User arbeiten, die sich nicht wirklich mit EDV auskennen und ggfs. mehr kaputt als richtig machen würden).

Hat jemand nen guten Tipp für mich, wie ich es schaffe, die Daten genau in das richtige Tabellenblatt zu exportieren. Angedacht hab ich auch schon mal die Möglichkeit, zwei Excel-Dateien zu verwenden: eines, in das ich exportiere (und das daher auch gnadenlos neu geschrieben werden kann) und ein zweites, dass das Diagramm enthält und sich seine Daten aus dem ersten Sheet holt...

THX für Tipps

bei Antwort benachrichtigen
daCrazyDoc Nachtrag zu: „Hi Volker, langsam muss ich Dir glaube ich mal ein Gehalt für personal Coaching...“
Optionen

Hi,

habe mein Problem jetzt folgendermaßen gelöst:
Anm: Die Datenübertragung wird über den Button bu_ok angestoßen; vorher wird im entsprechenden Formular ein Markt ausgewählt, dessen Ergebnisse bei den verschiedenen Aktionen dargestellt werden sollen.

Dimensionierungen im Formular

Dim objXLS As Excel.Application
Dim objWbk As Excel.Workbooks
Dim objSheet, objSheet2 As Excel.Worksheet
Dim Rst As DAO.Recordset
Dim intI As Integer

******************************************************************
Prg.-Code

Private Sub bu_OK_Click()

If Me.marktID 0 Then

Set Rst = CurrentDb.OpenRecordset("abf_frmStatistik0010")

If Rst.RecordCount > 0 Then

Set objXLS = CreateObject("Excel.Application")
Set objWbk = objXLS.Workbooks
objWbk.Open ("E:\Projekte\DB Markt dev\Export\abf_frmStatistik0010.xls")
Set objSheet = objWbk.Item(1).Worksheets(2)
Set objSheet2 = objWbk.Item(1).Worksheets(1)

' Tabelle leeren
objSheet.Range("A2:E100").Clear
' Excel erst ab Zeile 2 befüllen, da erste Zeile Überschriften enthält, daher intI auf 2 setzen
intI = 2
Rst.MoveFirst
While Not Rst.EOF
objSheet.Range("A" & Right$(Str$(intI), 1)).Value = Rst.Fields(0)
objSheet.Range("B" & Right$(Str$(intI), 1)).Value = Rst.Fields(1)
objSheet.Range("C" & Right$(Str$(intI), 1)).Value = Rst.Fields(2)
objSheet.Range("D" & Right$(Str$(intI), 1)).Value = Rst.Fields(3)
objSheet.Range("E" & Right$(Str$(intI), 1)).Value = Rst.Fields(4)
intI = intI + 1
Rst.MoveNext
Wend

objSheet.Range("A2:A100").NumberFormat = "m/d/yyyy"

' Grafiksheet aktivieren
objSheet2.ChartObjects("Diagramm 2").Activate
>>>> ActiveChart.SetSourceData Source:=objSheet.Range("A1:E" & Right$(Str$(intI - 1), 1)), PlotBy:=xlColumns
objSheet2.Range("A30").Select

objWbk.Close
Set objXLS = Nothing

End If
End If

End Sub

******************************************************************
Funktioniert beim ersten Aufruf, bei weiteren Aufrufen erhalte ich in der mit >>>> gekennzeichneten Zeile folgende Fehlermeldung:

die Methode ActiveChart für das Objekt _Global ist fehlgeschlagen

Merkwürdigerweise ist das Excel-Worksheet auch nicht geschlossen, obwohl dies ja der Fall sein sollte (Kontrolle über Taskmanager). Es erfolgt sogar die Abfrage, ob die Änderungen in dem Sheet
gespeichert werden sollen.

Tipps für nen Dummy???

bei Antwort benachrichtigen