Bonjour à tous
Cela fait quelques jours que je me retrouve avec une erreur Variable objet ou variable bloc With non définie (erreur 91) sur mon code...
Ce que je veux faire en VBA c'est : Executer l'ensemble de mes requetes et enregistrer automatiquement chaque résultat (chaque table) dans un fichier excel. Un fichier excel pour chaque table, qui prend automatiquement le nom de la table. (J'ai environ 100 tables)
La partie de lancement automatique des requêtes marche sans problèmes, j'obtiens mes résultats sous forme de table.
Par contre, c'est la partie exportation qui bloque...
Voilà mon code :
' fonction pour obtenir le chemin relatif de la base (Fonctionne sans pb)
Function GetCurDir(Optional NbSousRep As Single)
Dim str As String
Dim pos, i As Integer
If NbSousRep = 0 Then NbSousRep = 1
str = CurrentDb.Name()
For i = 1 To NbSousRep
pos = InStrRev(Left(str, Len(str) - 1), "\")
If pos = 0 Then Exit For
str = Mid(str, 1, pos)
Next i
GetCurDir = str
End Function
Public Sub RunMyQueries()
' Suppresion des messages d'avertissement
DoCmd.SetWarnings (False)
Dim dbs As Database
Dim qry As QueryDef
Dim tbl As TableDef
Dim strWorksheetPath As String
Set dbs = CurrentDb()
For Each qry In dbs.QueryDefs
If Left(qry.Name, 1) <> "~" Then
DoCmd.OpenQuery (qry.Name)
'If it is not an action query then you may want to close the query?
End If
Next qry
For Each tbl In dbs.TableDefs
strWorksheetPath = GetCurDir() & tbl.name & ".xls"
'Commande qui bloque :
DoCmd.OutputTo acOutputQuery, qry.Name, , strWorksheetPath, False
Next tbl
Set qry = Nothing
Set dbs = Nothing
Set tbl = Nothing
End Sub
J'ai bien évidemment les références :
Excel, DAO, Access, OLE automation, Scripting Runtime, Office Runtime, Visual Basic For Applications Extensibility, Visual Basic For applications, Microsoft JET and Replication Objects...
(Oui j'en ai pas mal, à force de travailler sur ma VBA, j'en ai ajouté sans les enlever... Est-ce que ça peut poser problème ?)
Tbl.name prend bien le nom des tables,
strWorksheetPath aussi, il est sous la forme : "C:\Docs\nomdematable.xls
J'avais essayé de faire non pas les tables mais les recordset et transferspreadsheet, mais ce fut un échec cuisant.
Je débute et je n'ai jamais fait de VBA !
Merci à tous,
J'espère que quelqu'un verra clair dans mon code
Partager