Access -> Excel per VBA mit mehreren Sheets

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von SonnyHH.

    Access -> Excel per VBA mit mehreren Sheets

    Hallo @all!

    Folgende Herausforderung (Office 2010):

    In Access wird eine Datenmenge per SQL aus einer Datenbank abgefragt. Die Datenmenge beinhaltet Buchhaltungskonten mit unterschiedlichen Währungen. Bis hier alles gut!
    Jetzt geht es darum, die Daten nach Excel zu exporieren und zwar in unterschiedliche Sheets. Z.B.: "Ausgangsdaten", "EUR", "GBP", "USD" etc.

    Quellcode

    1. ' Neue Excel Instanz öffnen
    2. Dim objExcel As Excel.Application
    3. Set objExcel = New Excel.Application
    4. objExcel.Visible = True
    5. ' Neues Excel Workbook öffnen
    6. Dim objExcelWorkbook As Excel.Workbook
    7. Set objExcelWorkbook = objExcel.Workbooks.Add
    8. 'Worksheets für Ausgangsdaten und Konto 90801 erstellen
    9. Dim objWorksheet As Excel.Worksheet
    10. ' Ausgangsdaten
    11. Set objWorksheet = objExcelWorkbook.Worksheets.Add
    12. objWorksheet.Name = "Ausgangsdaten"
    13. ' Konto 90801
    14. Set objWorksheet = objExcelWorkbook.Worksheets.Add
    15. objWorksheet.Name = "90801"


    Bis hier hin funktioniert auch noch alles und die Sheets werden korrekt erstellt. Jetzt kommt aber mein Problem. Ich muss bei der Verteilung der Daten, also dem Durchlaufen des Recordsets, zwischen den Sheets hin und her wechseln. Das Aktivieren funktioniert auch, allerdings wird im konkreten Fall nur noch das Sheet "90801" beschrieben, egal welches Sheet aktiviert ist.

    Das Beschreiben der Sheets ist folgendermaßen realisiert:

    Quellcode

    1. objExcel.Sheets("Ausgangsdaten").Activate
    2. ' Überschriftenzeile füllen
    3. objWorksheet.Cells(1, 1) = "Konto"
    4. objWorksheet.Cells(1, 2) = "Name"
    5. objWorksheet.Cells(1, 3) = "Whrg"
    6. objWorksheet.Cells(1, 4) = "MW"
    7. objWorksheet.Cells(1, 5) = "FW"
    8. objWorksheet.Range("A1:E1").Font.Bold = True


    Ich vermute, das liegt daran, dass ich nur mit einem Object arbeite, richtig?

    Wie kann ich das Problem nun elegant lösen, so dass ich mehrere Sheets habe, beliebig zwischen den Sheets wechseln und diese befüllen kann.
    Die Anzahl der Sheets steht im Vorwege übrigens nicht fest. Es können mal drei Währungen, mal 10 Währungen in den Basisdaten vorhanden sein.

    Bedanke mich im Voraus für Tipps...

    Viele Grüße
    André

    SonnyHH schrieb:

    objWorksheet.Cells(1, 1) = "Konto"

    Entweder unterschiedliche Objektvariablen zuweisen oder über den Namen adressieren, wenn die Anzahl nicht feststeht.

    Visual Basic-Quellcode

    1. ​objExcelWorkbook.Sheets("Ausgangsdaten").Cells(1,1).Value = "Konto"
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --