Comparar valor celda Excel con campo Access. |
Responder |
Autor | |
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Tema: Comparar valor celda Excel con campo Access. Enviado: 19/Septiembre/2019 a las 16:14 |
Buenas tardes.
De nuevo recurro a este foro para ver si alguien me puede echar una mano a resolver un problema que no soy capaz de saber porque ocurre. Tengo el siguiente código: -------------------------------------------------------------- Dim txtSelectedName As String Dim xlsApp As Object Dim xlsBook As Object Dim H As String Dim Cambio As Integer Dim Descritos As String Cambio = 0 Descritos = "" H = "TOMA DE DATOS" txtSelectedName = Me.Ruta Set xlsApp = CreateObject("Excel.Application") 'Crea una instancia de la aplicación Excel Set xlsBook = xlsApp.Workbooks.Open(txtSelectedName) If xlsBook.Worksheets(H).Range("J6:J6") = Null Or xlsBook.Worksheets(H).Range("J6:J6") = "" Then Me.Oferta_J6 = "---" ElseIf xlsBook.Worksheets(H).Range("J6:J6") <> Me.Oferta_J6 Then Me.Oferta_J6 = xlsBook.Worksheets(H).Range("J6:J6") Cambio = Cambio + 1 Descritos = Descritos & "Oferta" & vbCrLf End If If xlsBook.Worksheets(H).Range("M6:M6") = Null Or xlsBook.Worksheets(H).Range("M6:M6") = "" Then Me.Pedido_M6 = "---" ElseIf xlsBook.Worksheets(H).Range("M6:M6") <> Me.Pedido_M6 Then Me.Pedido_M6 = xlsBook.Worksheets(H).Range("M6:M6") Cambio = Cambio + 1 Descritos = Descritos & "Pedido" & vbCrLf End If xlsBook.Close 'Cierra el libro Set xlsBook = Nothing 'Destruye el objeto xlsApp.Quit 'Cierra la aplicación Set xlsApp = Nothing 'Destruye el objeto MsgBox "Se han modificado: " & Cambio & " Campos." & vbCrLf & Descritos, vbInformation, "Aviso" ------------------------------------------------------------------- Es algo tan simple como abrir una hoja Excel y comparar el valor de la celda J6 y M6 con los campos del formulario activo Oferta_J6 y Pedido_M6. Si las celdas están vacías asigna el valor "---" al campo y si las celdas tienen datos los compara con los campos y si son diferente inserta el valor de la celda en el campo. Al final me dice cuantos campos se han modificado (Cambio) y que campos se han modificado (Descritos). Bueno pues aquí viene el problema. SIEMPRE me dice que se han modificado los dos campos. Los valores de la celda Excel y el campo Access son los mismos, pero SIEMPRE me dice que se han modificado dos campos. El mismo proceso se hace con otros campos y otras celdas y funciona correctamente pero estos dos no. Y no me explico porqué. Alguien me puede dar una idea de porqué sucede esto? MUCHAS GRACIAS. |
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3857 |
Enviado: 19/Septiembre/2019 a las 19:53 |
Hombre, si lo que quiere es "Es algo tan simple como abrir una hoja Excel y comparar el valor de la celda J6 y M6 ..." Hay que cambiar If xlsBook.Worksheets(H).Range("J6:J6") = Null Or xlsBook.Worksheets(H).Range("J6:J6") = "" Then por If (xlsBook.Worksheets(H).Range("J6").value = "" AND xlsBook.Worksheets(H).Range("M6").value = "") then Luis
|
|
El Búho es un pajarraco
|
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 21/Septiembre/2019 a las 10:15 |
Luis: Gracias por la respuesta. El problema no está aquí If xlsBook.Worksheets(H).Range("J6:J6") = Null Or xlsBook.Worksheets(H).Range("J6:J6") = "" Then Me.Oferta_J6 = "---" .... End If Esta pare funciona correctamente con .Value y sin .Value El problema esta en: ElseIf xlsBook.Worksheets(H).Range("J6:J6") <> Me.Oferta_J6 Then Me.Oferta_J6 = xlsBook.Worksheets(H).Range("J6:J6") Compara los valores del la celda J6 con el campo Oferta_J6 y si son diferentes iguala los valores. Bueno pues, SIEMPRE son diferente. A pesar de, teóricamente, haber igualado los valores,cuando se vuelve a ejecutar el código, SIEMPRE, los valores la celda y del campo son diferentes. Siempre se ejecuta esta parte del bloque ElseIf. No sé si me he explicado bien. Gracias.
|
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 21/Septiembre/2019 a las 10:37 |
Vale. Creo haber descubierto porqué ocurre esto, solo con estas dos celdas. Resulta que las dos celdas de la hoja Excel tienen una condición de "validación". El valor introducido tiene que tener un número de caracteres igual a 10. Aunque los valores son los mismo en el Excel que en el campo de Access cuando le quito a la celda de Excel esa condición de validació, el programa funciona correctamente si le pongo la condición, no funciona. Elguien me puede decir como solventar este problema ya que la celda tinene que tener, obligatoriamente, esa condición para que nadie pueda introducir un valor no válido. Muchas gracias.
|
|
jilo
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador Unido: 19/Diciembre/2004 Localización: TAFALLA Estado: Sin conexión Puntos: 959 |
Enviado: 21/Septiembre/2019 a las 12:10 |
Intenta usando la propiedad Text del rango, osea xlsBook.Worksheets(H).Range("J6").Text <>
|
|
Espero te sirva !!!!!!
Iñaki |
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 21/Septiembre/2019 a las 13:09 |
Solucionado. Muchas gracias Jilo. Con el .Text si que funciona. Muchas gracias. Podemos cerrar el tema.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |