exportar de excel a access (porrrrrsupuesto con VB)

31/05/2006 - 11:53 por xabi | Informe spam
Buenas!!!
Aqui sigo pegandome con el Visual.Lo que intento hacer aora es exportar
una tabla de Excel a Access.Anteriormente he comprobado que los campos estan
en el orden adecuado(menos una columna en la tabla access llamanada id para
identificar cada grupo nuevo que importo)
Es decir:
tabla access
id lote sublote denominacion
tabla excel
lote sublote denominacion

Lo que quiero aora es rellenar mi tabla de acces con los datos que el
usuario a matido en el EXCEL.He encontrado varias maneras pero no se si sera
cosa de la configuracion de la conexion pero no hace nada.La que mas me
atraia era la de INSERT INTO tabla access IN ruta SELECT * FROM Hoja1$
pero no he conseguido nada.Mi ruta la tengo en una variable que se llama
NombreArchivo.Trabajo con un projecto de access(*.adp).
Alguien sabe como hacer esto?
Mi conexio al EXCEL es esta:
With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source = " + NombreArchivo
.Properties("Extended Properties") = "Excel 8.0;HDR=Yes"
.Open
End With

lo hago al principio del projecto visual y no la vuelvo a cambiar...le falta
algo para poder hacer la exportacion?
muchisimas gracias como siempre!!!
:):)

Preguntas similare

Leer las respuestas

#6 xabi
01/06/2006 - 11:05 | Informe spam
Haaaaabeer!!
Nu sabia yo esto del transferSpreadSheet.Lo he hecho de la siguiente manera:

DoCmd.TransferSpreadsheet acImport, , "hdi_reducido", NombreArchivo, True

He dejado el ultimo argumento en blanco poruqe me dice(ayuda de VB) que si
lo relleno como que va a ir mal,enfin que lo he escrito TAL Y COMO esta(AS
IF...que parece esta de moda la expresion...jeje) PEEERO...no me va,pasa una
cosa rara...se queda pensando algo...y me va a la seccion tablas de
access...pero no realiza cambio alguno :(

saludos desde euskadiiiiiiiiii!!
muchas graciasssss!!!

"Eva" escribió en el mensaje
news:
A ver, mi chico, que ya voy entendiendo algo

Me pai que tú has oído campanas, vaya usté a saber dónde, sobre vincular


una
hoja Excel a Access y trabajar sobre ella como si fuera una tabla. Y eso


va
a ser cierto y muy cómodo, pero imposible con un ADP

Tu solución es importar primero la hoja a una tabla, y después trabajar


con
ella. ¿Cómo? Te copio un trocito de ayuda del método TransferSpreadSheet

Método TransferSpreadsheet


El método TransferSpreadsheet lleva a cabo la acción TransferirHojaCálculo
en Visual Basic. Para obtener más información acerca de cómo funcionan la
acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.TransferSpreadsheet [tipotransferencia][, tipohojacálculo],
nombretabla, nombrearchivo[, contienenombresdecampos][, intervalo]

Suerte!


"xabi" escribió en el mensaje
news:
> lo que descubre uno cada dia...esto es por mandarme un proyecto sobre
> cosas
> que desconozco...
> como siempre mil gracias...voy a intentar esto y os cuento.
> Eva...no entiendes nada?Yo tampoco,que locuraes broma...gracias por
> leerme,haber si lo soluciono.
>
> "SoftJaén" escribió en el mensaje
> news:
>> "xabi" escribió:
>>
>> > Lo que quiero aora es rellenar mi tabla de acces con los datos
>> > que el usuario a matido en el EXCEL.
>> > Trabajo con un projecto de access(*.adp).
>>
>> Xabi, si trabajas con un proyecto de Access, tu tabla NO ES de Access:


es
> de
>> una base de datos de SQL Server, y por tanto, la sintaxis SQL que
>> intentas
>> ejecutar, no sirve para insertar los datos en dicha tabla. Para una


base
>> *.mdb, funciona estupendamente, siempre y cuando encierres el nombre de
>> la
>> hoja de cálculo entre corchetes ( ... FROM [Hoja1$]), pero para


importar
> los
>> datos a una base de datos de SQL Server, necesitarás utilizar el


lenguaje
>> T-SQL propio de Microsoft SQL Server.
>>
>> En el siguiente enlace encontrarás la manera de llevar a cabo la
> importación
>> de datos.
>>
>> Cómo importar datos a SQL Server desde distintos orígenes de datos
>> http://mvp-access.com/softjaen/base...ado017.htm
>>
>> 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
#7 Eva
01/06/2006 - 13:01 | Informe spam
¿Alumno de Eskola? maremia

A ver, yo acabo de hacer lo siguiente:

DoCmd.TransferSpreadsheet acImport, 0, "mitabla", "c:\artiequi.xls",
True

Y me ha creado una tabla "mitabla", donde ha importado el contenido de mi
hoja de cálculo. Lo he probado en .MDB y en .ADP

Agur

"xabi" escribió en el mensaje
news:
Haaaaabeer!!
Nu sabia yo esto del transferSpreadSheet.Lo he hecho de la siguiente
manera:

DoCmd.TransferSpreadsheet acImport, , "hdi_reducido", NombreArchivo, True

He dejado el ultimo argumento en blanco poruqe me dice(ayuda de VB) que si
lo relleno como que va a ir mal,enfin que lo he escrito TAL Y COMO esta(AS
IF...que parece esta de moda la expresion...jeje) PEEERO...no me va,pasa
una
cosa rara...se queda pensando algo...y me va a la seccion tablas de
access...pero no realiza cambio alguno :(

saludos desde euskadiiiiiiiiii!!
muchas graciasssss!!!

"Eva" escribió en el mensaje
news:
A ver, mi chico, que ya voy entendiendo algo

Me pai que tú has oído campanas, vaya usté a saber dónde, sobre vincular


una
hoja Excel a Access y trabajar sobre ella como si fuera una tabla. Y eso


va
a ser cierto y muy cómodo, pero imposible con un ADP

Tu solución es importar primero la hoja a una tabla, y después trabajar


con
ella. ¿Cómo? Te copio un trocito de ayuda del método TransferSpreadSheet

Método TransferSpreadsheet


El método TransferSpreadsheet lleva a cabo la acción
TransferirHojaCálculo
en Visual Basic. Para obtener más información acerca de cómo funcionan la
acción y sus argumentos, consulte el tema de la acción.

Sintaxis

DoCmd.TransferSpreadsheet [tipotransferencia][, tipohojacálculo],
nombretabla, nombrearchivo[, contienenombresdecampos][, intervalo]

Suerte!


"xabi" escribió en el mensaje
news:
> lo que descubre uno cada dia...esto es por mandarme un proyecto sobre
> cosas
> que desconozco...
> como siempre mil gracias...voy a intentar esto y os cuento.
> Eva...no entiendes nada?Yo tampoco,que locuraes broma...gracias por
> leerme,haber si lo soluciono.
>
> "SoftJaén" escribió en el mensaje
> news:
>> "xabi" escribió:
>>
>> > Lo que quiero aora es rellenar mi tabla de acces con los datos
>> > que el usuario a matido en el EXCEL.
>> > Trabajo con un projecto de access(*.adp).
>>
>> Xabi, si trabajas con un proyecto de Access, tu tabla NO ES de Access:


es
> de
>> una base de datos de SQL Server, y por tanto, la sintaxis SQL que
>> intentas
>> ejecutar, no sirve para insertar los datos en dicha tabla. Para una


base
>> *.mdb, funciona estupendamente, siempre y cuando encierres el nombre
>> de
>> la
>> hoja de cálculo entre corchetes ( ... FROM [Hoja1$]), pero para


importar
> los
>> datos a una base de datos de SQL Server, necesitarás utilizar el


lenguaje
>> T-SQL propio de Microsoft SQL Server.
>>
>> En el siguiente enlace encontrarás la manera de llevar a cabo la
> importación
>> de datos.
>>
>> Cómo importar datos a SQL Server desde distintos orígenes de datos
>> http://mvp-access.com/softjaen/base...ado017.htm
>>
>> 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
#8 SoftJaén
01/06/2006 - 16:07 | Informe spam
"xabi" escribió:

la conxion a la base de datos de access la hacia asi(y me quedaba tan
pantxo):

Set cnn_ac = CurrentProject.Connection
(ni siquiera hago un open)



Para ejecutar la sintaxis T-SQL, deberás de abrir una conexión con la base
de datos de SQL Server. El lenguaje SQL de Microsoft Jet, no entiende la
instrucción OPENROWSET.

Si no deseas abrir la conexión con la base de datos de SQL Server, otra
opción que tienes para crear la tabla en dicha base con los datos de Excel,
es que exportes los mismos utilizando el ISAM de Excel y el driver ODBC de
SQL Server.

Dim cnn As ADODB.Connection
Dim sql As String

' Abrimos una conexión con el libro de trabajo
Set cnn = New ADODB.Connection
With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\Mis documentos\Libro1.xls"
.Properties("Extended Properties").Value = "Excel 8.0;"
.Open
End With

' Exportamos la hoja completa de Excel utilizando una cadena ODBC
sql = "SELECT * INTO hdi_reducido " & _
"IN ''[ODBC;Driver{SQL Server};" & _
"Server=Nombre_Instancia_SQL_Server;" & _
"Database=Nombre_Base_Datos_SQL_Server;" & _
"UID=Cuenta_Usuario;" & _
"PWD=Contraseña_Usuario] " & _
"FROM [Hoja1$]"

' Ejecutamos la consulta
cnn.Execute sql, , adCmdText + adExecuteNoRecords

' Cerramos la conexión
cnn.Close
Set cnn = Nothing


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
#9 xabi
01/06/2006 - 16:09 | Informe spam
De eskola sijajaja...que pequeño es el mundo e?
Lo de la tablaLo que quiero no es que me cree una...sino que sume la
importacion a una tabla ya existente...imaginate que tienes una tabla
"PERSONAS",quiero que cada vez que importo de el EXCEL me sume lo que lea a
esa tabla...

:):)

"Eva" escribió en el mensaje
news:
¿Alumno de Eskola? maremia

A ver, yo acabo de hacer lo siguiente:

DoCmd.TransferSpreadsheet acImport, 0, "mitabla", "c:\artiequi.xls",
True

Y me ha creado una tabla "mitabla", donde ha importado el contenido de mi
hoja de cálculo. Lo he probado en .MDB y en .ADP

Agur

"xabi" escribió en el mensaje
news:
> Haaaaabeer!!
> Nu sabia yo esto del transferSpreadSheet.Lo he hecho de la siguiente
> manera:
>
> DoCmd.TransferSpreadsheet acImport, , "hdi_reducido", NombreArchivo,


True
>
> He dejado el ultimo argumento en blanco poruqe me dice(ayuda de VB) que


si
> lo relleno como que va a ir mal,enfin que lo he escrito TAL Y COMO


esta(AS
> IF...que parece esta de moda la expresion...jeje) PEEERO...no me va,pasa
> una
> cosa rara...se queda pensando algo...y me va a la seccion tablas de
> access...pero no realiza cambio alguno :(
>
> saludos desde euskadiiiiiiiiii!!
> muchas graciasssss!!!
>
> "Eva" escribió en el mensaje
> news:
>> A ver, mi chico, que ya voy entendiendo algo
>>
>> Me pai que tú has oído campanas, vaya usté a saber dónde, sobre


vincular
> una
>> hoja Excel a Access y trabajar sobre ella como si fuera una tabla. Y


eso
> va
>> a ser cierto y muy cómodo, pero imposible con un ADP
>>
>> Tu solución es importar primero la hoja a una tabla, y después trabajar
> con
>> ella. ¿Cómo? Te copio un trocito de ayuda del método


TransferSpreadSheet
>>
>> Método TransferSpreadsheet
>>
>>
>> El método TransferSpreadsheet lleva a cabo la acción
>> TransferirHojaCálculo
>> en Visual Basic. Para obtener más información acerca de cómo funcionan


la
>> acción y sus argumentos, consulte el tema de la acción.
>>
>> Sintaxis
>>
>> DoCmd.TransferSpreadsheet [tipotransferencia][, tipohojacálculo],
>> nombretabla, nombrearchivo[, contienenombresdecampos][, intervalo]
>>
>> Suerte!
>>
>>
>> "xabi" escribió en el mensaje
>> news:
>> > lo que descubre uno cada dia...esto es por mandarme un proyecto sobre
>> > cosas
>> > que desconozco...
>> > como siempre mil gracias...voy a intentar esto y os cuento.
>> > Eva...no entiendes nada?Yo tampoco,que locuraes broma...gracias


por
>> > leerme,haber si lo soluciono.
>> >
>> > "SoftJaén" escribió en el mensaje
>> > news:
>> >> "xabi" escribió:
>> >>
>> >> > Lo que quiero aora es rellenar mi tabla de acces con los datos
>> >> > que el usuario a matido en el EXCEL.
>> >> > Trabajo con un projecto de access(*.adp).
>> >>
>> >> Xabi, si trabajas con un proyecto de Access, tu tabla NO ES de


Access:
> es
>> > de
>> >> una base de datos de SQL Server, y por tanto, la sintaxis SQL que
>> >> intentas
>> >> ejecutar, no sirve para insertar los datos en dicha tabla. Para una
> base
>> >> *.mdb, funciona estupendamente, siempre y cuando encierres el nombre
>> >> de
>> >> la
>> >> hoja de cálculo entre corchetes ( ... FROM [Hoja1$]), pero para
> importar
>> > los
>> >> datos a una base de datos de SQL Server, necesitarás utilizar el
> lenguaje
>> >> T-SQL propio de Microsoft SQL Server.
>> >>
>> >> En el siguiente enlace encontrarás la manera de llevar a cabo la
>> > importación
>> >> de datos.
>> >>
>> >> Cómo importar datos a SQL Server desde distintos orígenes de datos
>> >> http://mvp-access.com/softjaen/base...ado017.htm
>> >>
>> >> 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
#10 xabi
01/06/2006 - 19:22 | Informe spam
lo que no comprendo es porque lee bien de la base de datos y me realiza
consultas pero cuando intento hacer la importacion desde excel no me deja.

"SoftJaén" escribió en el mensaje
news:%
"xabi" escribió:

> la conxion a la base de datos de access la hacia asi(y me quedaba tan
> pantxo):
>
> Set cnn_ac = CurrentProject.Connection
> (ni siquiera hago un open)

Para ejecutar la sintaxis T-SQL, deberás de abrir una conexión con la base
de datos de SQL Server. El lenguaje SQL de Microsoft Jet, no entiende la
instrucción OPENROWSET.

Si no deseas abrir la conexión con la base de datos de SQL Server, otra
opción que tienes para crear la tabla en dicha base con los datos de


Excel,
es que exportes los mismos utilizando el ISAM de Excel y el driver ODBC de
SQL Server.

Dim cnn As ADODB.Connection
Dim sql As String

' Abrimos una conexión con el libro de trabajo
Set cnn = New ADODB.Connection
With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\Mis documentos\Libro1.xls"
.Properties("Extended Properties").Value = "Excel 8.0;"
.Open
End With

' Exportamos la hoja completa de Excel utilizando una cadena ODBC
sql = "SELECT * INTO hdi_reducido " & _
"IN ''[ODBC;Driver{SQL Server};" & _
"Server=Nombre_Instancia_SQL_Server;" & _
"Database=Nombre_Base_Datos_SQL_Server;" & _
"UID=Cuenta_Usuario;" & _
"PWD=Contraseña_Usuario] " & _
"FROM [Hoja1$]"

' Ejecutamos la consulta
cnn.Execute sql, , adCmdText + adExecuteNoRecords

' Cerramos la conexión
cnn.Close
Set cnn = Nothing


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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida