Introducir desde un campo texto el valor de variable

Hola primero agardacerte por la ayuda y preguntándote otra cosa espero y me puedas volver a ayudar, mira tengo esta función que lo que hace es hacer un export de Excel a Access y lo que quisiera es que en lugar de definir directamente en la función el Path donde se encuentra el archivo que lo obtuviera de un campo de texto en el formulario aquí te dejo la función. Gracias
Private Sub Comando6_Click()
Dim sTablaOrigen As String, sTablaDestino As String
Dim sConnect As String, sSQL As String
Dim cnnActiva As ADODB.Connection
Dim ruta As String
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\ghuerta\Polizas_comparar_2.mdb"
sTablaDestino = "[nueva5]" 'nombre de la nueva tabla
sTablaOrigen = "[test$]" 'hoja uno
' Importo la tabla a la base de datos «Activa»
sConnect = "'C:\ghuerta\test.xls' 'Excel 8.0;HDR=yes;'"
sSQL = "SELECT * INTO " & sTablaDestino & " FROM " & sTablaOrigen & " IN " & sConnect
cnnActiva.Execute sSQL
' Cierro la conexión
cnnActiva.Close
End Sub
1

1 Respuesta

165.900 pts. Más de 35 años en la informática y más de 20 trabajando...
Yo acostumbro a construir el path sobre una variable del proceso para asegurarme que lleva bien las barras inclinadas (\)
Por lo que comentas creo que podrías poner:
    dim auxPath as string
    auxPath = nombreFormulario.nombreCampoPath ' Recupera el Path del formulario
    if right$(auxPath,1)<>"\" then auxPath = auxPath & "\" ' Si no tiene "\" lo añadimos
Despues, dónde pongas...
    C:\ghuerta\test...
Tendras que poner...
    " & auxPath & "\test...
Resumiendo, en lugar de la línea (copiada de tu código)
    sConnect = "'C:\ghuerta\test.xls' 'Excel 8.0;HDR=yes;'"
Tendrías que poner
    sConnect = "'" & auxPath & "\test.xls' 'Excel 8.0;HDR=yes;'"
Por cierto, ¿no le falta nada a esa línea? Me da la impresión que puede faltar alguna coma o punto y coma.
Ya he hecho los cambios pero al tratar de ejecutar me dice que se requiere un objeto, ¿así lo deje no se si falta algo? El error me marca al definir el auxPath = Formulario2. Ruta
Private Sub Comando6_Click()
Dim sTablaOrigen As String, sTablaDestino As String
Dim sConnect As String, sSQL As String
Dim cnnActiva As ADODB.Connection
Dim auxPath As String
 
auxPath = Formulario2.ruta  ' Recupera el Path del formulario
 
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\ghuerta\Polizas_comparar_2.mdb"
sTablaDestino = "[otra5]" 'nombre de la nueva tabla2
sTablaOrigen = "[test$]" 'hoja uno
' Importo la tabla a la base de datos «Activa»
  sConnect = "'" & auxPath & "\test.xls' 'Excel 8.0;HDR=yes;'"
sSQL = "SELECT * INTO " & sTablaDestino & " FROM " & sTablaOrigen & " IN " & sConnect
cnnActiva.Execute sSQL
' Cierro la conexión
cnnActiva.Close
End Sub
O el objeto del formulario no se llama 'ruta' (el nombre del objeto), o bien el formulario tiene otro nombre, o bien el formulario no está abierto cuando ejecutas el código.
Prueba a poner delante de esa instrucción estas otras:
msgbox "Nombre del formulario: " & formulario2.name
msgbox "Nombre del objeto: " & formulario2.ruta.name
Seguramente te de error en una de esas líneas y nos indicará cual de los dos está mal.
Bueno el error anterior ya quedo solucionado ahora al ejecutar me marca
Error de sintaxis en la calusula FROM y el error lo marca aquí : cnnActiva.Execute sSQL
Pero si comento la parte nueva y lo dejo funcionando introduciendo el path directamente si que funciona :s
Private Sub Comando2_Click()
Dim sTablaOrigen As String, sTablaDestino As String
Dim sConnect As String, sSQL As String
Dim cnnActiva As ADODB.Connection
Dim auxPath As String
auxPath = Form_Formulario3.ruta  ' Recupera el Path del formulario
 If Right$(auxPath, 1) <> "\" Then auxPath = auxPath & "\" ' Si no tiene "\" lo añadimos
Set cnnActiva = New ADODB.Connection
cnnActiva.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\ghuerta\Polizas_comparar_2.mdb"
sTablaDestino = "[otra5]" 'nombre de la nueva tabla2
sTablaOrigen = "[test$]" 'hoja uno
sConnect = "'" & auxPath & " 'Excel 8.0;HDR=yes;'"
sSQL = "SELECT * INTO " & sTablaDestino & " FROM " & sTablaOrigen & " IN " & sConnect
cnnActiva.Execute sSQL
cnnActiva.Close
End Sub
La instrucción...
sConnect = "'" & auxPath & " 'Excel 8.0;HDR=yes;'"
... antes tenía el nombre del fichero excel (text.xls)
Lo que no sé es si permite importar una tabla de excel de esa forma (nunca lo he hecho).
Mira a ver si poniendo el nombre te funciona
Muchas gracias al final pude hacerlo pero tuve que cambiar el modo de hacer el export de excel a access. Y era más fácil aquí te lo dejo por si algún día lo llegas a ocupar Saludos
Dim filename As String
path = Form_Formulario4.via
 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, "Temporal", path, True

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas