Tengo un proyecto que básicamente el objetivo es generar Excel (Informe) comenzando el clic de un botón en Access usando VBA.VBA - Generar archivo de Excel desde Access (QueryTable)
El contenido de este informe es el resultado de una base de datos de SQL Server del Procedimiento almacenado.
la línea de error:
With MeuExcel.Worksheets(4)
.QueryTables.Add connection:=rs, Destination:=.Range("A2")
End With
lo que consigo es:
invalid procedure call or argument (erro '5')
código completo (Editado utilizando puntas Remou Usuario):
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
Lo extraño es que la el código funciona cuando se ejecuta en Excel pero no funciona en Access
Vale , como tú, ahora tengo un código que funciona en Excel pero no funciona en Access. Parece que hay un problema al agregar tablas de consulta. No puedo ver por qué todavía. Me pregunto si una solución alternativa sería adecuada. Por ejemplo, ¿sería adecuado escribir los registros en una hoja de trabajo? – Fionnuala
FYI: He automatizado Excel Querytables de Access durante años sin problemas, aunque con datos de Access como origen. Sin embargo, no lo he probado en Office 2010. –
@Rachel ¿Tal vez podría publicar algún código de acceso que funcione? – Fionnuala