Hola, una cosa que debes tener presente y que no estoy seguro de si has hecho es que para hacer posible operar con ficheros de Excel con la interface que proporciona Visual Basic tienes que habilitar esa opción dentro de Visual Basic, para ello hay que ir al menú Proyecto -- > Agregar referencia -- > Elegir la ficha COM (componente) -- > Seleccionar Microsoft Excel 12.0 Object Library (o un nombre similar) y pulsar aceptar.
He puesto algunos mensajes de aviso en el programa
Imports System.Data.OleDb
Public Class Form1
Private Sub CapturarFormato28BToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CapturarFormato28BToolStripMenuItem.Click
Dim stRuta As String = ""
Dim openFD As New OpenFileDialog()
With openFD
.Title = "Seleccionar archivos"
.Filter = "Archivos Excel(*.xls;*.xlsx)|*.xls;*xlsx|Todos los archivos(*.*)|*.*"
.Multiselect = False
.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
If .ShowDialog = Windows.Forms.DialogResult.OK Then
stRuta = .FileName
End If
End With
MsgBox("Aqui llega 1")
Try
MsgBox("Aqui llega 2")
Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;" & ("Data Source=" & (stRuta & ";Extended Properties=""Excel 12.0;Xml;HDR=YES;IMEX=2"";"")))
MsgBox("Aqui llega 3")
Dim cnConex As New OleDbConnection(stConexion)
MsgBox("Aqui llega 4")
Dim Cmd As New OleDbCommand("Select * From [Hoja1$]")
Dim Ds As New DataSet
Dim Da As New OleDbDataAdapter
Dim Dt As New DataTable
cnConex.Open()
Cmd.Connection = cnConex
Da.SelectCommand = Cmd
Da.Fill(Ds)
Dt = Ds.Tables(0)
Me.DataGridView1.Columns.Clear()
Me.DataGridView1.DataSource = Dt
Catch ex As Exception
MsgBox("Se ha producido un error" & ex.Message)
End Try
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
End Sub
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
End Sub
Private Function ex() As Object
' Throw New NotImplementedException
MsgBox("No need to implement this for our exercise")
End
End Function
End Class
Se está obteniendo nada más ejecutar el programa:
Excepción del tipo 'System.ArgumentException' en System.Data.dll
Excepción del tipo 'System.NotImplementedException' en WindowsApplication1.exe
Esto parece indicar que no están bien implementadas la recuperación de excepciones.
Si ejecuto este código de prueba obtengo lo siguiente:
- Se muestra hasta Aqui llega 3 pero no Aqui llega 4, el error parece estar en esta línea: Dim cnConex As New OleDbConnection(stConexion)
- Mensaje por pantalla "Se ha producido un error. El formato de la cadena de inicialización no se ajusta a la especificación que comienza en el índice 186"
La línea del error nos remite a su vez a la línea Dim stConexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;" & ("Data Source=" & (stRuta & ";Extended Properties=""Excel 12.0;Xml;HDR=YES;IMEX=2"";"")))
Todavía no veo solución, habría que seguir investigando...
Saludos