Exportar datos de una tabla de access a excel mediante una macro VBA
A tod@s,
Hoy presento una situación que no he podido resolver y espero con su ayuda poder solucionarlo, el problema es el siguiente, tengo que pasar cada mes datos que están en una base de datos que se cambia cada 24 horas, es decir en un mes se generan 30 tablas en formato .mdb lo que hago es importarlas manualmente despues juntarlas en un solo archivo para generar algunos graficos de comportamiento, lo cual es muy tardado, eh intentado lo siguiente:
Tengo una macro que me lista la ruta y nombre de estos archivos en la hoja1.
Despues grabé la siguiente macro para exportar de archivo .mdb a excel:
Sub openaccess()
'
' openaccess Macro
'
'
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=\\B0565S02\Groupfiles\Common\Formacion&Acabado\AF\TFX\hi" _
, _
"storial\History20190131.mdb;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path=""""" _
, _
";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Je" _
, _
"t OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt D" _
, _
"atabase=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Je" _
, _
"t OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypas" _
, "s ChoiceField Validation=False"), Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdTable
.CommandText = Array("TestResults")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = _
"\\B0565S02\Groupfiles\Common\Formacion&Acabado\AF\TFX\historial\History20190131.mdb"
.ListObject.DisplayName = "Table_History20190131"
.Refresh BackgroundQuery:=False
End With
End Sub
Despues esa macro la etido con agregando el siguiente código:
Sub openaccess()
'
' openaccess Macro
'
rutaO=WorkSheets("Sheet1").Range("A1").Value
ActiveWorkbook. Worksheets. Add
Y sustituyo las direcciónes con la variable rutaO, para despues hacer un loop que vaya recorriendo todas las celdas y haga el mismo proceso hasta que haya una celda sin datos y obviamente tambien cambiaria el .ListObject.DisplayName = por una variable
Pero al hacer esto, me manda una serie de mensajes para obtener los datos.