Evitar importar datos ACCESS a EXCEL sin datos

Me gustaría saber que código debo incorporar a la macro que tengo que importa una tabla a excel, el caso sería evitar que algunos campos del formulario están vacíos, si no están vacíos ejecutar la importación.

Adjunto macro (no es una macro incrustada).

Sub Macro1()
If IsNull(Form_Reclamaciones!Cuadro_combinado43) And IsNull(Form_Reclamaciones!Cuadro_combinado64) Then
MsgBox ("No se puede realizar exportación porque los campos obligatorios están vacíos")
Exit Sub
Else
DoCmd.RunCommand acCmdRefresh
DoCmd.RunSavedImportExport "Exportacion: Reclamacionesok1"
End If
End Sub

1 Respuesta

Respuesta
3

El código que escribes ya lleva incorporado lo que estás solicitando, por lo que no hay que añadir nada.

El mensaje de que no se puede realizar la importación te sale siempre y cuando los dos combos estén vacíos A LA VEZ.

Si lo que quieres es que no se realice la importación si hay uno sólo vacío o ambos a la vez cambia tu
AND

Por un

OR

Y listos.

Hola, el caso es que cuando ejecuto esta macro no me funciona, no sé si por temas de sintaxis o porque no establezco criterios correctos.

¿Tienes habilitada la ejecución de código? Si no está habilitada no te funcionará ningún código. Echa un vistazo a este artículo: http://bit.ly/1fvFMEB 

Sí, tengo habilitado la ejecución de código, no funciona la condición que he puesto. La intención era que si el último registro del formulario le faltasen una serie de campos no se hiciese la exportación y mostrase el mensaje de advertencia.

Por lo que veo no estás asignando el código a ningún evento. Si no hay evento, no hay ejecución del código.

Prueba lo siguiente:

En el formulario Form_Reclamaciones inserta un botón de comando. Saca sus propiedades -> Pestaña eventos -> Al hacer click, y ahí le escribes tu código.

Es decir, te debería quedar una cosa así:

...

Private Sub...

If IsNull(Form_Reclamaciones!Cuadro_combinado43) And IsNull(Form_Reclamaciones!Cuadro_combinado64) Then
MsgBox ("No se puede realizar exportación porque los campos obligatorios están vacíos")
Exit Sub
Else
DoCmd.RunCommand acCmdRefresh
DoCmd.RunSavedImportExport "Exportacion: Reclamacionesok1"
End If
End Sub

...

A ver si así te funciona.

¡Gracias! 

Me funciona, lo único que pasa es que yo lo que quiero evitar es que el último registro esté generado y falten valores. Me explico, yo realizó la exportación de la tabla entera y en el formulario tengo un campo autonúmerico que se genera automáticamente cuando se introduce un valor en cualquier campo.

¿Cómo aplicaría un código similar para evitar que se realizase la exportación si el en último registro, y solo en el último registro, faltase algún campo concreto?

Voy a hacer dos suposiciones:

UNA

Si tus cuadros combinados 43 y 64 son combos independientes la respuesta a tu consulta es que lo que pides es imposible. Sólo lo podrías hacer con la sistemática que te he explicado si, manualmente en el formulario, te vas al último registro y ejecutas el código desde el botón.

DOS

Si tus cuadros combinados 43 y 64 no son independientes, sino que almacenan el valor en campos de la tabla, llamémosles Campo43 y Campo64, el código que tendrías que aplicar al botón sería:

...

Private Sub...
    Dim elId as long
    Dim elV43 as Variant, elV64 as variant
    elId=dmax("CampoId","NombreTabla")
    elV43=dlookup("Campo43", "NombreTabla", "CampoId=" & elId)
    elV64=dlookup("Campo64", "NombreTabla", "CampoId=" & elId)
    If IsNull(elV43) And IsNull(elV64) Then
        MsgBox "No se puede realizar exportación porque los campos obligatorios están vacíos"
        Exit Sub
    Else
        DoCmd.RunSavedImportExport "Exportacion: Reclamacionesok1"
    End If
End Sub

...

Lógicamente tendrás que adaptar los nombres que yo te he puesto a los que tú tengas en tu BD.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas