Sei sulla pagina 1di 2

Desde EXCEL importar UNA TABLA DE MS ACCESS y mostrar un formulario con los dato s importados.

Para ello suponemos que la base de datos y el libro Excel estn en el mismo direct orio y supongamos, adems, que la tabla contiene n registros de estudiantes cuyos atributos son: IDENTIFICACION APELLIDOS NOMBRES Examen I Examen II Examen I II Examen IV 123 GARCIA PEDRO 15 7 18 7 234 FERNANDEZ JUAN 7 3 16 14 345 GUTIERREZ MARIA 10 0 7 12 Coloque un botn en la hoja1 (Sheet1) de Excel donde acceda a la macro ImportoDB Nota: El rea donde se colocar la tabla deber estar limpia antes de acceder a los da tos Coloque en el mdulo 1 de Visual Basic el siguiente comando. Sub ImportoDB() ' ' ImportoDB Macro ' ' IMPORTAREMOS, DESDE ACCESS, UNA TABLA LLAMADA DesdeAccess. ' ubique este nombre en todo el comando y sustityalo por el nombre de su base de datos ' ' Dim MiDir As String ' MiDir = CurDir() & "\DesdeAcces" ' AL DIRECTORIO DONDE EST EL LIBRO EXCEL S E LE AGREGA EL NOMBRE DE LA TABLA A IMPORTAR ' ' SE BUSCA LA BASE DE DATOS EN EL MISMO DIRECTORIO DONDE EST EL LIBRO EXCEL ' If Hoja1.Cells(1, 1) <> "" Then MsgBox "El rea de datos est ocupada" & vbCrLf & _ "Limpie el rea A1:J46 e intente de nuevo" Exit Sub End If ' VERIFICAMOS QUE LA TABLA EST EN EL MISMO DIRECTORIO DEL LIBRO EXCEL ' en nuestro caso la tabla contiene 45 registros desde la fila 2 hast a la fila 45 ' ' ACCEDEMOS A LA TABLA With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _ "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;DAT A SOURCE=" & MiDir _ , _ "s.accdb;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database " _ , _ "Password="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0 ;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk " _ , _ "Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create Sy stem Database=False;Jet OLEDB:Encrypt Database=False;Jet OL" _ , _ "EDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replic a Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Comp" _ , "lex Data=False"), Destination:=Range("$A$1")).QueryTable .CommandType = xlCmdTable

.CommandText = Array("DesdeExcel") .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .SourceDataFile = _ MiDir & ".accdb" .ListObject.DisplayName = "Tabla_DesdeAccess.accdb" .Refresh BackgroundQuery:=False End With ActiveSheet.ShowDataForm ' este ltimo comando abre el formulario con todos lo s datos de la tabla a partir de la columna $A$1 ' Si la tabla tiene contrasea (password) debe colocarlo entre comillas (") do nde dice Password="""" ' ' End Sub

Potrebbero piacerti anche