Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

copyfromrecordset funktioniert nicht mehr

Forumthread: copyfromrecordset funktioniert nicht mehr

copyfromrecordset funktioniert nicht mehr
09.12.2024 13:26:49
JensS
Hallo zusammen,

ich versuche heute schon eine ganze Weile den Fehler für das nachfolgend genannte Problem zu finden. Bis gestern hat mit dem nachfolgenden VBA-Code alles tatellos funktioniert und heute hängt er sich an der fett markierten Stelle auf.

Es wird im Übrigen der Fehler 430 "VBA Klasse unterstützt keine Automatisierung oder unterstützt erwartete Schnittstelle nicht" ausgegeben.
Ansonsten werden beim Mouseover die korrekten Werte ausgegeben.

Es hat sich offensichtlich nichts verändert ... die Daten und die XLS-Dateien sind vorhanden, ebenso die Pfade.
Ich kann es mir absolut nicht erklären warum sich der Code mit dieser Fehlermeldung aufhängt.
Auch eine Windows Online-Reparatur hat nichts gebracht.

==> Es wird schlichtweg das Einkopieren der Daten nicht vollzogen.

Eigenartig ist auch, dass dieselbe Datenbank mit den selben XLS-Dateien problemlos auf einem anderen PC funktioniert.

Kann bitte jemand helfen ?
Danke Jens


Sub ExcelExportCopyFromRecordset(AcTabAbfrSQL As String, _
FullExcelDatName As String, _
ExcelTabName As String, _
ExcelStartZelle As String, _
ZellenLeeren As Boolean)

' KEIN Verweis auf Excel notwendig
' Access97, Excel97 getestet
Dim xlApp As Object, xlbook As Object, xlsheet As Object
Dim AktDb As DAO.Database, rs As DAO.Recordset

Set AktDb = CurrentDb

On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If xlApp Is Nothing Then
Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0
Set xlbook = xlApp.Workbooks.Open(FullExcelDatName)
Set xlsheet = xlbook.sheets(ExcelTabName)
xlApp.Visible = False

Set rs = AktDb.OpenRecordset(AcTabAbfrSQL)
If ZellenLeeren Then
xlsheet.Range(ExcelStartZelle, Mid(xlsheet.UsedRange.Address, _
InStr(xlsheet.UsedRange.Address, ":") + 1)).ClearContents
End If
xlsheet.Range(ExcelStartZelle).copyfromrecordset rs
xlbook.Save
xlbook.Close
Set rs = Nothing
Set xlsheet = Nothing
Set xlbook = Nothing
Set xlApp = Nothing

End Sub
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: copyfromrecordset funktioniert nicht mehr
09.12.2024 16:10:46
JensS
Hallo Boris,

ich wollte nicht einfach auf ein fremdes Forum verweisen.
Bei Interesse kann ich eine kleine Beispiel-Datenbank zur Verfügung stellen, in der sich der Code aufhängt ... sofern jemand auch unter Office 365 arbeitet.
Anzeige
AW: copyfromrecordset funktioniert nicht mehr
09.12.2024 17:22:35
Alwin Weisangler
Hallo Jens,

welche Bibliothek ist aktiviert? Dies ist wichtig, da du mit Early Binding arbeitest. Es muss zur benutzen Office Version die passende Bibliothek aktiviert sein.

Gruß Uwe
AW: copyfromrecordset funktioniert nicht mehr
09.12.2024 17:29:40
JensS
aktuell angehakte Verweise:

Visual Basic for Applications
Microsoft Access 16.0 Object Libary
OLE Auromation
Microsoft Office 16.0 Access database engine Object libary
Anzeige
AW: copyfromrecordset funktioniert nicht mehr
09.12.2024 20:49:20
Alwin Weisangler
Hallo,

unter welcher Officeversion gibts den Fehler.

Gruß Uwe
AW: copyfromrecordset funktioniert nicht mehr
09.12.2024 20:56:09
JensS
Version 2402 (Build 17328.20648 Klick & Los) 32 Bit
MS Access - MS 365 MSO (Version 2402 Build 16.0.17328.20648) 32 Bit
AW: copyfromrecordset funktioniert nicht mehr
09.12.2024 21:14:48
Alwin Weisangler
hmm. Da muss jemand mit 'ner 365 Version ran. Ich habe unter O2019/64bit bzw. O2021 keine Probleme weder mit DAO noch ADO.
Nimm mal den On Error Kram raus und gehe mal Step by Step die Sache durch. Vielleicht hängt da schon was vorher und es knallt dadurch dann an der Datenschnittstelle.
Du kannst ja alles was du dazu hast anonymisiert in einer gezippt hochladen.

Gruß Uwe
Anzeige
AW: copyfromrecordset funktioniert nicht mehr
10.12.2024 09:58:38
JensS
Guten Morgen,

anbei wie gewünscht eine Beispiel-Datei.
https://www.herber.de/bbs/user/174215.zip
Bitte beachten das der Export in eine vordefinierte XLSM-Datei eingefügt werden soll und der Pfad in diese gemäß Code erst erstellt oder angepasst werden muss.

Ansonsten hab ich nur noch den für den Export relevanten Code in der Datenbank gelassen, bei dem ansonsten keine Fehler auftauchen.
Anzeige
AW: copyfromrecordset funktioniert nicht mehr
10.12.2024 15:50:06
JensS
Ich habe mal mit dem MS Copiloten a bissl gespielt und komme nach der Code-Umstellung auf ADODB zu dem Ergebnis, dass dieser nun wieder wie gewünscht funktioniert.

Sub ExcelExportCopyFromRecordset(AcTabAbfrSQL As String, _

FullExcelDatName As String, _
ExcelTabName As String, _
ExcelStartZelle As String, _
ZellenLeeren As Boolean)

Dim xlApp As Object, xlbook As Object, xlsheet As Object
Dim AktDb As Object, rs As Object
Dim sqlString As String
Dim qdf As QueryDef

On Error GoTo ErrorHandler

' Set ADODB connection and recordset objects
Set AktDb = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

' Open the Access database connection
AktDb.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & CurrentDb.Name
AktDb.Open
Debug.Print "Verbindung zur Datenbank hergestellt."

' Open Excel and the specified workbook
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If xlApp Is Nothing Then
Set xlApp = CreateObject("Excel.Application")
End If
On Error GoTo 0
If xlApp Is Nothing Then
MsgBox "Excel konnte nicht gestartet werden."
Exit Sub
End If

Set xlbook = xlApp.Workbooks.Open(FullExcelDatName)
Set xlsheet = xlbook.Sheets(ExcelTabName)
xlApp.Visible = False
Debug.Print "Excel-Datei geöffnet: " & FullExcelDatName

' Get the SQL from the saved query
Set qdf = CurrentDb.QueryDefs(AcTabAbfrSQL)
sqlString = qdf.SQL
Debug.Print "SQL-Abfrage: " & sqlString

' Use ADODB constants explicitly
Const adOpenStatic = 3
Const adLockReadOnly = 1

' Open the recordset with explicit ADODB parameters
rs.Open sqlString, AktDb, adOpenStatic, adLockReadOnly
Debug.Print "Recordset geöffnet."

' Clear the specified range if necessary
If ZellenLeeren Then
xlsheet.Range(ExcelStartZelle, Mid(xlsheet.UsedRange.Address, _
InStr(xlsheet.UsedRange.Address, ":") + 1)).ClearContents
End If

' Check if the recordset is empty
If rs.BOF And rs.EOF Then
MsgBox "Das Recordset ist leer!"
Else
xlsheet.Range(ExcelStartZelle).CopyFromRecordset rs
End If

' Save and close the Excel workbook
xlbook.Save
xlbook.Close
rs.Close
AktDb.Close

' Clean up
Set rs = Nothing
Set qdf = Nothing
Set xlsheet = Nothing
Set xlbook = Nothing
Set xlApp = Nothing

Exit Sub

ErrorHandler:
MsgBox "Fehler " & Err.Number & ": " & Err.Description
End Sub
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18