Obtener los nombres de las hojas en un libro EXCEL

27/01/2007 - 16:22 por Daniel G. Samborski | Informe spam
Hola...De nuevo...

Tengo otra duda, la he buscado pero no logro encontrar la respuesta.

Cuando me conecto a una hoja de EXCEL le tengo que pasar el nombre de la
hoja que deseo leer, pero...Como obtengo los nombres de las hojas por
codigo.
Lo que deseo es, que me devuelva el nombre de todas las hojas que tenga un
libro excel y asi poder utilizar esa info para pasar a la cadena de
conexion.

Lo mismo para una BD en ACCESS, como obtengo cuales tablas estan en ellas...


Trabajo en vb.net 2003


Daniel.

Preguntas similare

Leer las respuestas

#1 SoftJaén
28/01/2007 - 09:46 | Informe spam
"Daniel G. Samborski" escribió:

Lo que deseo es, que me devuelva el nombre de todas las
hojas que tenga un libro excel y asi poder utilizar esa info
para pasar a la cadena de conexion.




Hola, Daniel:

Si utilizaras Visual Basic 2005, podías obtener el nombre de las tablas de
la base de datos (o de las hojas de un libro de Excel), mediante una llamada
a la función «GetSchema» de un objeto OleDbConnection previamente abierto.
Pero como continúas trabajando con Visual Basic 2003, no te va a quedar más
remedio que utilizar la propia biblioteca de Excel, o bien, utilizar la
biblioteca de ADO clásica, mediante la interoperabilidad COM que nos
dispensa el marco de trabajo de .net. Te dejo un ejemplo para ésta última
biblioteca.

Una vez que haya referenciado en tu proyecto la biblioteca de ADO clásica,
ejecutarás algo parecido a lo siguiente:

Dim cnn As New ADODB.Connection

Try
With cnn
.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Carpeta\Libro1.xls;" & _
"Extended Properties='Excel 8.0'"

.Open()
End With

Dim rst As ADODB.Recordset

rst = cnn.OpenSchema(ADODB.SchemaEnum.adSchemaTables)

While Not rst.EOF
MessageBox.Show(rst.Fields("TABLE_NAME").Value.ToString)
rst.MoveNext()
End While

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

Lo mismo para una BD en ACCESS, como obtengo cuales tablas estan en
ellas...



Pues lo mismo, pero en la cadena de conexión no deberás de especificar el
parámetro «Extended Properties».

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 Daniel G. Samborski
28/01/2007 - 14:19 | Informe spam
Muchas gracias, me ha funcionado muy bien.


Daniel.



-==
http://apuntes-daniel.blogspot.com
http://myrecetario.blogspot.com
http://alejandriavirtual.blogspot.com
http://alejandriavirtual-biografias.blogspot.com
-==


"SoftJaén" escribió en el mensaje
news:O$
"Daniel G. Samborski" escribió:

Lo que deseo es, que me devuelva el nombre de todas las
hojas que tenga un libro excel y asi poder utilizar esa info
para pasar a la cadena de conexion.




Hola, Daniel:

Si utilizaras Visual Basic 2005, podías obtener el nombre de las tablas
de
la base de datos (o de las hojas de un libro de Excel), mediante una
llamada
a la función «GetSchema» de un objeto OleDbConnection previamente
abierto.
Pero como continúas trabajando con Visual Basic 2003, no te va a quedar
más
remedio que utilizar la propia biblioteca de Excel, o bien, utilizar la
biblioteca de ADO clásica, mediante la interoperabilidad COM que nos
dispensa el marco de trabajo de .net. Te dejo un ejemplo para ésta
última
biblioteca.

Una vez que haya referenciado en tu proyecto la biblioteca de ADO
clásica,
ejecutarás algo parecido a lo siguiente:

Dim cnn As New ADODB.Connection

Try
With cnn
.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Carpeta\Libro1.xls;" & _
"Extended Properties='Excel 8.0'"

.Open()
End With

Dim rst As ADODB.Recordset

rst = cnn.OpenSchema(ADODB.SchemaEnum.adSchemaTables)

While Not rst.EOF
MessageBox.Show(rst.Fields("TABLE_NAME").Value.ToString)
rst.MoveNext()
End While

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

Lo mismo para una BD en ACCESS, como obtengo cuales tablas estan en
ellas...



Pues lo mismo, pero en la cadena de conexión no deberás de especificar
el parámetro «Extended Properties».

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo
recomendado o
sugerido en el presente mensaje.






I'm protected by SpamBrave
http://www.spambrave.com/
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida