Saltar al contenido

CUADRO DE DIALOGO, Como detectar que el botón cancelar fue pulsado?


Recommended Posts

publicado

Hello, My Friends:

I have a workbook with several sheets, some of which are going to be printed at once, eighther to a .pdf file or to a paper. Doing so, there are several dialogs that are shown, for example: 

Dialog PrinterSetup to choose the printer.
Dialog Save PDF file as, in the case of a .pdf, to choose where to save the document.
Dialog Confirm Save to confirm the operation, of course.
Dialog Adobe PDF that shows the addition of sheets to the final document.

I am not sure, but only the first one is really an Application.Dialogs, the others are not, at least they do not appear in the VBA list as one.

All of the dialogs have a "Cancel" button, to cancel the printing. My code can detect if the Dialog PrinterSetup Cancel button has been clicked, but that it is. I DO NOT KNOW HOW TO DETECT if SOME OF THE OTHER IS PUSHED. I need help to figure out this.

Thanks.


Here is my code:
 

HTML Code: 
Private Sub TODOSBtn_Click()

Dim resp As Integer
Dim ws As Worksheet

On Error GoTo 10

PrintBORRAR
PrintBORRAVALUES

resp = MsgBox("Desea imprimir todos los costos de producción? ", vbYesNo + vbExclamation, "ALERTA")

If resp = 7 Then
TODOSBtn.Value = False
Exit Sub
End If

Dim answ As Boolean

answ = Application.Dialogs(xlDialogPrinterSetup).Show

If answ = True Then

Sheets(Array("AJONJOLI LABRANZA COMPLETA", "ALGODON LABRANZA COMPLETA", "ARROZ INV. LLANOS OCCIDENTALES", _
"ARROZ VER. LLANOS CENTRALES", "CAÑA PLANTILLA MECANICA", "CAÑA PLANTILLA MANUAL", "CAÑA SOCA MECANICA", _
"CAÑA SOCA MANUAL", "CARAOTA LABRANZA COMPLETA OCC", "CARAOTA SIN LABRANZA CENTRORIEN", _
"CEBOLLA LLANOS CENTRA LABR COMP", "CEBOLLA ANDES LABR DE SANGRE", "FRIJOL SIN LABRANZA", _
"FRIJOL LABRANZA COMPLETA", "GIRASOL LABRANZA COMPLETA", "GIRASOL SIN LABRANZA", _
"LECHUGA ANDES LABR SANGR COMPLE", "MAIZ LABRANZA COMPLET OCCIDENTE", "MAIZ LABRANZA MINIMA LLANOS CEN", _
"MAIZ SIN LABRANZA LLANOS CENTRA", "NARANJA FUNDACION", "NARANJA MANTENIMIENTO 2", "NARANJA MANTENIMIENTO 3", _
"NARANJA MANTENIMIENTO > 3", "PAPA ANDES LABR DE SANGRE", "PAPA CENTRO OCC LABR COMPLETA", _
"PIMENTON ANDES LABR SANGR COMPL", "REMOLACH ANDES LABR SANG COMPLE", "REPOLLO ANDES LABR SANGR COMPL", _
"SORGO INV LABRANZA COMPLETA", "SORGO INV LABRANZA MINIMA", "SORGO INV SIN LABRANZA", _
"SORGO NORTE VERANO OCCIDENTE", "SOYA SIN LABRANZA", "TOMATE INDUSTRIAL LLANO CENTRAL", _
"TOMATE CONS DIREC LLANO CENTRAL", "TOMATE CONS DIREC ANDES LABR CO", "ZANAHO ANDES LABR SANGRE COMPLE")).PrintOut ' , , 1

Else
MsgBox "La impresión fue cancelada.", vbOKOnly + vbExclamation, "OPERACIÖN CANCELADA"
TODOSBtn.Value = False
Exit Sub
End If


Exit Sub

10:
MsgBox "Se ha presentado un problema con la impresión.", vbOKOnly + vbExclamation, "ALERTA"
TODOSBtn.Value = False
Exit Sub

End Sub
publicado

1) me parece inapropiado traducir un texto de español a ingles (y con imprecisiones) para postear en ingles en un foro en español (más aun cuando el código denota estar dirigido a una interfaz con el usuario en español)

2) hablando de imprimir en PDF, cómo sabes a que impresora (virtual) se dirige la salida ? (adobe es solo una de las opciones disponibles y no es la más utilizada)

3) si se cuenta con la versión completa (licencia pagada) de "x" aplicación para PDF's, se supone que en la instalación SI se registra el modelo de objetos para interacción con VBA

comentas (si hubiera) mas "detalles en el tintero" ?

saludos,

hector.

publicado

Buen día Sr. Hector: 

1. Tiene usted razón, el planteamiento en ingles fue desatinado, por decir lo menos. Un lamentable error haberlo copiarlo de otro foro en ingles al que acudí, no me percaté que este es en español. Ofrezco mi sincera disculpa.

2. Hablando de español, "más" es un adverbio de cantidad, "aun" lo es de tiempo, estos deben preceder a aquellos.

3. Lo del .PDF fue un ejemplo. Tal como lo establece el planteamiento original.

4. Cierto, no sé la impresora. Por eso uso "...PrinterSetUp", la seleccionará el usuario.

5. Afortunadamente, mis aplicaciones han sido legalmente adquiridas y licenciadas, pero no logro entender que tiene que ver eso con la precisa necesidad de detectar que un proceso fue "cancelado", en este caso, con el único fin de mostrar, en mi aplicación, un mensaje cuyo texto sea "El proceso de impresión fue cancelado". 

Gracias,

Nelson

Hace 12 horas, Héctor Miguel dijo:

1) me parece inapropiado traducir un texto de español a ingles (y con imprecisiones) para postear en ingles en un foro en español (más aun cuando el código denota estar dirigido a una interfaz con el usuario en español)

2) hablando de imprimir en PDF, cómo sabes a que impresora (virtual) se dirige la salida ? (adobe es solo una de las opciones disponibles y no es la más utilizada)

3) si se cuenta con la versión completa (licencia pagada) de "x" aplicación para PDF's, se supone que en la instalación SI se registra el modelo de objetos para interacción con VBA

comentas (si hubiera) mas "detalles en el tintero" ?

saludos,

hector.

 

publicado
Hace 2 horas, necalabria dijo:

mis aplicaciones han sido legalmente adquiridas y licenciadas, pero no logro entender que tiene que ver eso con la precisa necesidad de detectar que un proceso fue "cancelado", en este caso, con el único fin de mostrar, en mi aplicación, un mensaje cuyo texto sea "El proceso de impresión fue cancelado".

por "aplicación con licencia pagada" me refiero a la aplicación que el usuario elija para hacer una impresión a PDF's ya que (hasta donde se) cuando excel "cede" el control (ya sea al usuario o a otra aplicación) solo puede "mantener bajo control" a aplicaciones externas cuando estas ajenas son instanciadas por excel-vba (y con ciertas limitantes)

otro punto a considerar es a cuantas versiones de excel necesitas dar soporte ?

(quizá una alternativa pudiera ser no dar tantas libertades al usuario ?)

saludos,

hector.

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.