OVH Cloud OVH Cloud

Excel - VBA - QueryTable error 1004 (suite)

1 réponse
Avatar
Vuillermet Jacques
Maintenant je souhaite appeler ce code à partir de VBA sous Access, mais un
message d'erreur apparait :

"Erreur d'exécution '5':
Argument ou appel de procédure incorrect"

MDAC et Excel déclarés dans les références.

Sub testExcel()

Dim objConnexion As New ADODB.Connection
Dim objRst As New ADODB.Recordset
Dim strSQL As String

Dim objApplicationExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
Dim objWorkSheet As Excel.Worksheet
Dim Qt As Excel.QueryTable

objConnexion.Open "Provider=sqloledb;" & _
"Data Source=xxx.xxx.xxx.xxx;" & _
"Initial Catalog=xxx;" & _
"User Id=xxx;" & _
"Password=xxx"

strSQL = "SELECT Id, Libelle FROM Profil"
objRst.Open strSQL, objConnexion, adOpenStatic, adLockOptimistic
'Fonctionne

Set objApplicationExcel = CreateObject("Excel.Application")
objApplicationExcel.Visible = True
Set objWorkbook = objApplicationExcel.Workbooks.Add()
Set objWorkSheet = objWorkbook.Worksheets(1)

With objWorkSheet
.Cells(1, 1).Value = "azerty" 'Fonctionne
MsgBox .Range("A1").Value 'Fonctionne
Set Qt = .QueryTables.Add(objRst, .Range("A1")) ' <---- E R R E U R
End With
[...]
End Sub

Une idée ?

Jacques.

1 réponse

Avatar
MichDenis
Bonjour Jacques,

Tu as un problème avec ta connexion et ton recordset. Tu les crées dans Acces et tu veux ensuite que l'application Excel
prenne la mais où access était rendu ! Mais Excel, lui est perdu parce qu'il ne connaît pas l'existence de ce qui
précède !!!!!!


Pourquoi ne pas faire simple :

Tu crées ta macro dans excel qui crée ton QueryTable.

Et dans Access, tu crées une instance d'excel, tu ouvres le fichier et tu exécutes la macro.

Tu pourrais avoir quelque chose comme qui ressemblerait à ceci

'-----------------------
Dim Xl as object
Dim Wk as workbook

Set Xl = createobject("Excel.Application")
Xl.Visible = True ' ou False
Set Wk = xl.Workbooks("C:MonFichier.xls")

xl.run "NomDeLaMacro" ' Créant le querytable

Wk.close True 'ferme le classeur avec sauvegarde
xl.Quit ' ferme l'instance d'excel
Set Wk = Nothing : Set xl = Nothing
'-----------------------


Salutations!



"Vuillermet Jacques" a écrit dans le message de news: %23gs%23Fq$

Maintenant je souhaite appeler ce code à partir de VBA sous Access, mais un
message d'erreur apparait :

"Erreur d'exécution '5':
Argument ou appel de procédure incorrect"

MDAC et Excel déclarés dans les références.

Sub testExcel()

Dim objConnexion As New ADODB.Connection
Dim objRst As New ADODB.Recordset
Dim strSQL As String

Dim objApplicationExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
Dim objWorkSheet As Excel.Worksheet
Dim Qt As Excel.QueryTable

objConnexion.Open "Provider=sqloledb;" & _
"Data Source=xxx.xxx.xxx.xxx;" & _
"Initial Catalog=xxx;" & _
"User Id=xxx;" & _
"Password=xxx"

strSQL = "SELECT Id, Libelle FROM Profil"
objRst.Open strSQL, objConnexion, adOpenStatic, adLockOptimistic
'Fonctionne

Set objApplicationExcel = CreateObject("Excel.Application")
objApplicationExcel.Visible = True
Set objWorkbook = objApplicationExcel.Workbooks.Add()
Set objWorkSheet = objWorkbook.Worksheets(1)

With objWorkSheet
.Cells(1, 1).Value = "azerty" 'Fonctionne
MsgBox .Range("A1").Value 'Fonctionne
Set Qt = .QueryTables.Add(objRst, .Range("A1")) ' <---- E R R E U R
End With
[...]
End Sub

Une idée ?

Jacques.