RE:Importar de Excel a Acces mediante Visual.net
Un pequenho ejemplo......
Espero te ayude, fujnciona con sql server pero modificarlo a access no es complicado.
referencia Microsoft.Excel
Imports System.Data.SqlClient
Imports Microsoft.Office.Interop
'Excel
Dim App As Excel.Application
Dim Book As Excel.Workbook
Dim Hoja As Excel.Worksheet
'SQL
Dim Reader As SqlClient.SqlDataReader
Dim Cn As New SqlConnection("Database=midatabase;Data Source=localhost;User Id=sa;Password=")
Dim cmd As New SqlCommand("Select * from tblPersonal", Cn)
'tblPersonal
Dim MyID As integer
Dim codempleado As String
Dim codempresa As String
'Informacion incorporacion
Dim FechaIncorp As DateTime
Dim Info As Boolean
Dim Import As Boolean = False
Private Sub cmdImportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdImportar.Click
App = New Excel.Application
Book = App.Workbooks.Open("c: ulibro.xls")
Try
Hoja = App.Worksheets("Personal")
Catch ex As Exception
MessageBox.Show("En este archivo no existe la ficha (Personal)", "Importar desde Excel", MessageBoxButtons.OK, MessageBoxIcon.Information)
ex.Data.Clear()
CloseExcelApp()
Exit Sub
End Try
'Aqui importamos
ExcelImport()
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Import = True Then
Cn.Close()
CloseExcelApp()
End If
End Sub
Sub UpdateInformacionIncorporacion(ByVal valInfo As Boolean, ByVal valFechaInc As DateTime)
'Informacion Incorporacion
If (valInfo <> False) And (valFechaInc <> Nothing) Then
Dim cmdUpdateInfoinc As New SqlCommand("Update tblInformacionIncorporacion set Info=@Info,Fecha=@FechaInc where Id=" & MyID , Cn)
cmdUpdateInfoinc.Parameters.Add("@Info", SqlDbType.Bit).Value = valInfo
cmdUpdateInfoinc.Parameters.Add("@FechaInc", SqlDbType.DateTime, 10).Value = valFechaInc
cmdUpdateInfoinc.ExecuteNonQuery()
cmdUpdateInfoinc.Parameters.Clear()
End If
End Sub
Sub CloseExcelApp()
Book.Close(Excel.XlSaveAction.xlSaveChanges = Excel.XlSaveAction.xlDoNotSaveChanges)
App.Quit()
For Each xl As System.Diagnostics.Process In System.Diagnostics.Process.GetProcessesByName("Excel")
xl.Kill()
Next
App = Nothing
End Sub
Sub ExcelImport()
Import = True
Cn.Open()
Try
With Hoja 'Worksheet Personal
For x As Int32 = 3 To Registros
Application.DoEvents()
lblRegistros.Text = x.ToString & " / " & Registros
If .Range("A" & x).Value <> Nothing And .Range("D" & x).Value <> Nothing Then
codempresa = .Range("A" & x).Value
codempleado = .Range("D" & x).Value
Reader = cmd.ExecuteReader()
While Reader.Read
If codempresa = Reader.Item("codigoEmpresa").ToString And codempleado = Reader.Item("CodigoEmpleado").ToString Then
MyID = cint(eader.Item("Id"))
Exit While
End If
End While
Reader.Close()
'Informacion incorporacion'''''''''''''''''''''''''''''
If .Range("K" & x).Value = "SÍ" Then
Info = 1
Else
Info = 0
End If
FechaIncorp = .Range("L" & x).Value
UpdateInformacionIncorporacion(Info, FechaIncorp)
Application.DoEvents()
Next
End With
Import = False
MessageBox.Show("LOS DATOS SE IMPORTARON CORRECTAMENTE........", "Importación desde Excel", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
Cn.Close()
CloseExcelApp()
End Try
End Sub