Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Export von Access ins Excel

Begonnen von benjamin.grimm, September 10, 2013, 11:43:40

⏪ vorheriges - nächstes ⏩

benjamin.grimm

Hallo zusammen,

ich möchte Daten von Access ins Excel exportieren.

Ich habe hierfür eine Excel Tabelle erstellt, die immer die gleiche ist.

Die erste Registerkarte ist benannt mit Übersicht. (Hier soll die Abfrage_Vertrag rein geschrieben werden)

In die anderen Registerkarten sollen jeweils Informationen über Vertrage eingefügt werden. (sind benennt mit Tabelle1, Tabelle2, Tabelle3, Tabelle4 usw.)

Ich hab folgenden Code geschrieben, bekomm aber den Laufzeitfehler 91 (markierte Zeile); Objektvariable oder With-Variable nicht festgelegt.

Private Sub Befehl0_Click()
   Dim xlApp As Object         'Excel.Application
    Dim xlBook As Object        'Excel.Workbook
    Dim xlSheet As Object       'Excel.Worksheet
    Dim rstID As DAO.Recordset, tmpStr As String
    Dim rstGr As DAO.Recordset, strSQL As String
    Dim Dateipfad As String
    Dim dlg As FileDialog
    Dim strPfad As String
    Dim xlbook1 As Object
    Dim xlsheet1 As Object
    Dim rst As DAO.Recordset
   
    strSQL = "SELECT SuWID FROM Abfrage_alles GROUP BY SuWID;"
    Set rstID = CurrentDb.OpenRecordset(strSQL)
    If rstID.RecordCount > 0 Then
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True
       
        Set xlApp1 = CreateObject("Excel.Application")
        xlApp1.Visible = True
             Set dlg = Application.FileDialog(msoFileDialogOpen)
     'Titelzeile
     dlg.Title = "Bitte geben Sie den Pfad der Exceldatei!"
     'standardpfad
     dlg.InitialFileName = "C:\"
     'Button text
     dlg.ButtonName = "speichern"
     dlg.Filters.Clear
     dlg.Filters.Add "Excel", "*.xlsm"
     
        If dlg.show Then
         'wenn Exceldatei angegeben wurde
         Dateipfad = dlg.SelectedItems(1)
     
        Set xlbook1 = xlApp.Workbooks.Open(Dateipfad)
        Set xlsheet1 = xlBook.sheets("Übersicht")
        Set rst = CurrentDb.OpenRecordset("Abfrage_Vertrag")
        xlsheet1.Range("B2").CopyFromRecordset rst
        rst.Close
     
     
        Set xlBook = xlApp.Workbooks.Open(Dateipfad)
        Set xlSheet = xlBook.sheets("Tabelle1")
        xlSheet.Range("A2:E14").ClearContents
       
        Do While Not rstID.EOF
            Set xlSheet = xlBook.sheets("Tabelle" & rstID.Fields("SuWID"))
           
           
            xlSheet.Name = "ID" & rstID.Fields("SuWID")
            Set rstGr = CurrentDb.OpenRecordset("SELECT SAP, Geris, Pauschale, SuWID, Jahr_Y FROM Abfrage_alles WHERE SuWID = " & rstID.Fields("SuWID"))
            xlSheet.Range("A2").CopyFromRecordset rstGr
            rstGr.Close
            rstID.MoveNext
        Loop

    xlSheet.Range("B2").CopyFromRecordset rst

    Else
        MsgBox "No information to export", vbInformation, "No data exported"
    End If
    End If
   
    rstID.Close
    Set rstID = Nothing
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub


Woran liegt das?

Hab im Anhang die Datei angehängt.



[Anhang gelöscht durch Administrator]

DF6GL

Hallo,
das liegt dadran, dass "xlBook"  erst 4 Zeilen  später initialisiert wird, nachdem es verwendet wurde ...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

benjamin.grimm