J'ai un projet dont l'objectif principal est de générer Excel (Rapport) en cliquant sur le bouton d'un bouton dans Access en utilisant VBA.VBA - Générer un fichier Excel à partir d'Access (QueryTable)
Le contenu de ce rapport est le résultat d'une base de données SQL Server stockée.
la ligne d'erreur:
With MeuExcel.Worksheets(4)
.QueryTables.Add connection:=rs, Destination:=.Range("A2")
End With
je reçois est:
invalid procedure call or argument (erro '5')
code complet (Edité en utilisant remou Conseils):
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
La chose étrange est que la le code fonctionne lorsqu'il est exécuté dans Excel mais ne fonctionne pas dans Access
Ok , comme vous, j'ai maintenant du code qui fonctionne dans Excel mais ne fonctionne pas dans Access. Il semble y avoir un problème lors de l'ajout de tables de requête. Je ne peux pas voir pourquoi pour le moment. Je me demande si une solution alternative conviendrait? Par exemple, est-ce que le fait d'écrire simplement les enregistrements dans une feuille de calcul convient? – Fionnuala
FYI: J'ai automatisé Excel Querytables d'Access pendant des années sans problème, mais avec des données d'accès en tant que source. Cependant, je ne l'ai pas essayé dans Office 2010. –
@Rachel Peut-être pourriez-vous poster un code d'accès fonctionnel? – Fionnuala