Necesito saber como poder importar un archivo de excel a una tabla en access usando visual basic.
1 Respuesta
Respuesta
1
1
Anónimo
Yo para trabajar con Excel lo que hago es crear una nueva instancia del Excel y abro los libros que deseo y obtengo los datos de las celdas. Esto parece muy técnico así que te lo explico con un pequeño proyecto que he creado: (En el proyecto utiliza Excel 97 y Access 97 y esta desarrolado en VB6) 1º Creamos una archivo de excel del que extraeremos los datos, en la que la primera columna de la primera hoja tiene los valores 1,2,3,4,... 16 y la segunda columna A, B, C, DE, ... P 2º Creamos un nuevo proyecto en VB6 y al proyecto le añadimos las referencias Microsoft DAO 3.51 Object Lybrary y Microsoft Excel 8.0 Object Library (si no te aparece busca el archivo excel8. Olb que es al que hay que hacer referencia) 3º Creamos un nuevo formulario con un command button al que nombramos cmbImportar 4º Este seria el código del formulario: Option explicit Private Sub cmdImportar_Click() Dim wrk As Workspace Dim db As Database Dim tb As TableDef Dim fd As Field Dim rc As Recordset Dim appEx As New Excel.Application Dim wb As Workbook Dim sh As Worksheet Dim Indice As Long 'Comprobamos si existe la base de datos y la eliminamos si existe If Dir(App.Path & "\" & "prueba.mdb") <> "" Then Kill (App.Path & "\" & "prueba.mdb") 'Creamos el espacio de trabajo y la base de datos Set wrk = DBEngine.CreateWorkspace("", "Admin", "", dbUseJet) Set db = wrk.CreateDatabase(App.Path & "\" & "prueba.mdb", dbLangGeneral) 'Creamos la tabla con sus campos Set tb = db.CreateTableDef("Excel") 'Creamos el primer campo y lo añadimos a la tabla Set fd = tb.CreateField("Numeros", dbLong) tb.Fields.Append fd 'Creamos el segundo campo y lo añadimos a la tabla Set fd = tb.CreateField("Letras", dbText, 50) tb.Fields.Append fd 'añadimos la tabla a la base de datos db.TableDefs.Append tb 'Abrimos el recordset Set rc = db.OpenRecordset("Excel") 'Abrimos el libro donde tenemos los datos appEx.Visible = False Set wb = appEx.Workbooks.Open(App.Path & "\" & "libro1.xls") Set sh = wb.Sheets(1) 'Ponemos un bucle para que recorra las celdas de la hoja For Indice = 1 To 16 rc.AddNew rc.Fields("Numeros").Value = sh.Cells(Indice, "A").FormulaR1C1 rc.Fields("Letras").Value = sh.Cells(Indice, "B").FormulaR1C1 'Asentamos el registro rc.Update Next Indice 'Cerramos todos los objetos que hemos utilizado Set sh = Nothing 'Cerramos el workbook, pero le ponemos como si ya estuviera guardado para que no te pregunte si desea guardarlo wb.Saved = True wb.Close Set wb = Nothing appEx.Quit Set appEx = Nothing Set fd = Nothing Set tb = Nothing db.Close wrk.Close Set db = Nothing Set wrk = Nothing MsgBox "Proceso terminado" End Sub Al pulsar el cmbImportar el código lo que hace es crear una nueva base de datos con la tabla excel en la que va agregando los registros del archivo que hemos creado antes.(El archivo de excel debe estar en el mismo directorio que el proyecto, la base de datos se crea en el mismo directorio) Si quieres que te mande este proyecto me pasas tu e-mail y te lo mando. Espero haberte orientado sobre el asunto. Si tienes alguna duda o pregunta no dudes en hacérmela llegar, estaré encantado en intentar ayudarte.