Macro d'importation d'une table Access
Bonjour,
Novice en Macro Excel, j'essaie de faire une macro afin de récupérer une table Access depuis Excel.
Sachant que la macro devra aller chercher le nom du fichier Access, et le nom de la table, dans deux cellules préalablement renseignées dans le fichier Excel.
L'emplacement du fichier Access est connu et ne change pas. idem pour la position du fichier Excel qui porte la macro.
J'ai bien réussi, par enregistrement, à créer le code ci-dessous, mais je n'arrive pas à m'approprier le code enregistrer automatiquement, et à paramétrer la possibilité de choisir le fichier Access et de la table que je veux importer.
Dans l'exemple ci-dessous le nom de la table "TRAVAUX_DEC" et le nom du fichier "225-360-PG3.mdb" doivent pouvoir etre changer via les deux celulles rempli sous Excel.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ActiveWorkbook.Queries.Add Name:="TRAVAUX_DEC", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Access.Database(File.Contents(""C:\DATA\225-360-PG3.mdb""), [CreateNavigationProperties=true])," & Chr(13) & "" & Chr(10) & " _TRAVAUX_DEC = Source{[Schema="""",Item=""TRAVAUX_DEC""]}[Data]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " _TRAVAUX_DEC"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=TRAVAUX_DEC;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [TRAVAUX_DEC]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "TRAVAUX_DEC"
.Refresh BackgroundQuery:=False
End With |
Est-ce qu’il est possible de modifier ce code enregistré automatiquement, et je n'ai pas encore trouvé comment faire, ou est ce que je dois trouver une autre solution ?
Merci