我有一個項目,基本上目標是生成Excel(報告)開始點擊Access中的按鈕使用VBA。VBA - 從訪問生成Excel文件(QueryTable)
此報告的內容是存儲過程SQL Server數據庫的結果。
錯誤的行:
With MeuExcel.Worksheets(4)
.QueryTables.Add connection:=rs, Destination:=.Range("A2")
End With
我得到的是:
invalid procedure call or argument (erro '5')
完整的代碼(使用Remou用戶提示編輯):
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
奇怪的是,代碼在Excel中運行時工作,但在Access中不起作用
好吧,像你一樣,我現在的代碼可以在Excel中工作,但在Access中不起作用。添加查詢表似乎有問題。我看不出爲什麼。我想知道另一種解決方案是否適合?例如,簡單地將記錄寫入工作表是否合適? – Fionnuala 2012-01-04 13:08:41
僅供參考:儘管使用Access數據作爲源,但我幾年來都沒有問題地從Access中自動執行Excel Querytables。但是,我還沒有在Office 2010中試過它。 – 2012-01-04 16:52:47
@Rachel也許你可以發佈一些工作的Access代碼? – Fionnuala 2012-01-04 18:23:38