VBA Generieren von Excel-Datei von Access (QueryTable)

Habe ich ein Projekt, dass im Grunde das Ziel ist das generieren von Excel (Berichts -) ab dem Klick auf eine Schaltfläche in Access mit VBA.

Den Inhalt dieser Bericht ist das Ergebnis einer Gespeicherten Prozedur, SQL-Server-Datenbank.

die Zeile des Fehlers:

With MeuExcel.Worksheets(4)
    .QueryTables.Add connection:=rs, Destination:=.Range("A2")
End With

Den ich bekomme, ist:

invalid procedure call or argument (erro '5')

Komplette Code (Bearbeitet mit Remou User Tipps):

Sub GeraPlanilhaDT()

Dim MeuExcel As New Excel.Application
Dim wb As New Excel.Workbook

Set MeuExcel = CreateObject("Excel.Application")
MeuExcel.Workbooks.Add

MeuExcel.Visible = True

Dim strNomeServidor, strBaseDados, strProvider, strConeccao, strStoredProcedure As String

strNomeServidor = "m98\DES;"
strBaseDados = "SGLD_POC;"
strProvider = "SQLOLEDB.1;"
strStoredProcedure = "SP_ParametrosLeads_DT"

strConeccao = "Provider=" & strProvider & "Integrated Security=SSPI;Persist Security Info=True;Data Source=" & strNomeServidor & "Initial Catalog=" & strBaseDados

Dim cnt As New ADODB.connection
Dim cmd As New ADODB.command
Dim rs As New ADODB.recordset
Dim prm As New ADODB.parameter

cnt.Open strConeccao

cmd.ActiveConnection = cnt
cmd.CommandType = adCmdStoredProc
cmd.CommandText = strStoredProcedure
cmd.CommandTimeout = 0

Set prm = cmd.CreateParameter("DT", adInteger, adParamInput)
cmd.Parameters.Append prm 
cmd.Parameters("DT").Value = InputBox("Digite o Código DT", "Código do Distribuidor")

Set rs = cmd.Execute()

Dim nomeWorksheetPrincipal As String
nomeWorksheetPrincipal = "Principal"

Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = nomeWorksheetPrincipal



With MeuExcel.Worksheets(4)
    .QueryTables.Add connection:=rs, Destination:=.Range("A2")
End With


cnt.Close
Set rs = Nothing
Set cmd = Nothing
Set strNomeServidor = Nothing
Set strBaseDados = Nothing
Set strProvider = Nothing

If (ActiveSheet.UsedRange.Rows.Count > 1) Then
    FormataDadosTabela
Else
    MsgBox ("Não foi encontrado nenhum Distribuidor com esse DT")
End If


End Sub

Das merkwürdige ist, dass der code funktioniert, wenn Sie ausführen, in Excel aber nicht in Access

  • Okay, so wie du, ich habe jetzt code, der in Excel funktioniert, aber nicht in Access. Es scheint ein problem zu sein das hinzufügen von Abfragen Tabellen. Ich kann nicht sehen, warum noch. Ich Frage mich, ob eine alternative Lösung passen würde? Zum Beispiel würde einfach schreiben der Datensätze auf einem Arbeitsblatt werden geeignet?
  • FYI: ich habe die automatisierte Excel aus Access-Abfragetabellen für Jahre ohne problem, wenn auch mit Access-Daten als Quelle. Allerdings habe ich nicht versucht, es in Office 2010.
  • Vielleicht könnten Sie schreiben einige arbeiten Zugangscode?
  • Ich aktualisiert meine Antwort mit Beispiel-code. Hoffe, es hilft!
InformationsquelleAutor Predoff | 2012-01-03
Schreibe einen Kommentar