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]
Hallo,
das liegt dadran, dass "xlBook" erst 4 Zeilen später initialisiert wird, nachdem es verwendet wurde ...
ja super danke!