Ich habe ein Projekt, das im Grunde genommen das Ziel ist, Excel (Report) zu generieren, das den Click einer Schaltfläche in Access mit VBA startet.
Der Inhalt dieses Berichts ist das Ergebnis einer SQL Server-Datenbank für gespeicherte Prozeduren.
die Fehlerzeile:
%Vor%Ich bekomme ist:
%Vor%Vollständiger Code (Editiert mit Remou Benutzertipps):
%Vor%Das seltsame ist, dass der Code funktioniert, wenn er in Excel ausgeführt wird, aber nicht in Access
funktioniertIn Access müssen Sie den Excel-Anwendungsobjekten die Excel-Anwendungsinstanz voranstellen, zum Beispiel:
%Vor%Außerdem müssen Sie, sofern Sie keinen Verweis auf die Excel-Bibliothek haben, den Wert für die integrierten Excel-Konstanten angeben.
Es ist eine sehr schlechte Idee, den Namen von Objekten für Variablen zu verwenden. Sag nicht:
%Vor%Sagen Sie zum Beispiel:
%Vor%Oder viel besser:
%Vor%Wenn Sie eine geeignete Referenz haben. Sie können dann CreateObject überspringen.
BEARBEITEN
Der Provider muss der Access OLEDB 10-Provider sein, der zum Binden von Recordsets verwendet wird. Dies funktioniert für mich zum Erstellen einer Datentabelle über Access mit SQL Server:
%Vor%FWIW, zwei Dinge fallen auf:
Wie bereits von @Remou hervorgehoben, müssen Excel-Referenzen qualifiziert sein. Derzeit ist Range("A2")
nicht qualifiziert. Wenn der Code in Excel ausgeführt wird, wird ActiveSheet
angenommen. Wenn sie jedoch von einer anderen Anwendung ausgeführt wird, sucht diese Anwendung in ihrer eigenen Bibliothek namens Range
nach einer Methode oder Eigenschaft, die Ihnen in Microsoft Access diesen Fehler anzeigt.
Es gibt keinen Code im Block With
. Sie können also die Schlüsselwörter With
und End With
entfernen. Wenn Sie dies tun, entfernen Sie auch die äußere (), wie folgt:
wb.Worksheets(4).QueryTables.Add Connection:=rs, Destination:=wb.Worksheets(4).Range("A2")
Alternativ verschieben Sie den With
-Block auf den Worksheet
-Level:
Update-Zugriff auf Excel-Beispiel
Dieser Beispielcode automatisiert Excel von Access, erstellt eine neue Arbeitsmappe und fügt dem ersten Arbeitsblatt eine Abfragetabelle hinzu. Die Quelldaten sind eine Access-Tabelle. Dies wird in Office 2007 ausgeführt.
%Vor%Sie sagen nicht, welche Office-Version, aber in Excel 2007/10 ist eine QueryTable eine Eigenschaft eines Listobjects, also würde Ihr Code wie folgt aussehen:
%Vor%Tags und Links vba excel stored-procedures ms-access