VBA de excel Automáticamente, seleccione Sí cuando se le pida durante la combinación de correspondencia

Me gustaría que el sistema sea lo más automatizado para mis usuarios como sea posible. Ahora, tengo el código que se ejecuta cuando el usuario hace clic en un botón. El código toma de datos con la intención de aplicar a un documento de word a través de la combinación de correspondencia.

Todo funciona correctamente excepto que hay siempre un mensaje que aparece diciendo

La apertura de este documento se ejecute el siguiente comando SQL:

Select * FROM ‘ETIQUETAS$’

Los datos de su base de datos se coloca en el documento. ¿Quieres
continuar?

Tengo que mantener esto tan simple como sea posible sin correr el riesgo de que los usuarios seleccionar «No» porque está confundida. ¿Cómo puede VBA automáticamente continuar y aceptar la colocación de los datos, ya que se podría haber seleccionado «Yes»?

He intentado simplemente utiliza el siguiente código para bloquear las alertas con la esperanza de que tendría el valor predeterminado «Sí» y proceder, pero no funcionó.

Application.DisplayAlerts = False

Esto es lo que he

Sub RunMailMerge()

    Application.ScreenUpdating = False

    Dim wdOutputName, wdInputName As String
    wdOutputName = ThisWorkbook.Path & "\nametags - " _
        & Format(Date, "d mmm yyyy")
    wdInputName = ThisWorkbook.Path & "\nametags.docx"

    ' open the mail merge layout file
    Dim wdDoc As Object
    Set wdDoc = GetObject(wdInputName, "Word.document")
    wdDoc.Application.Visible = True

    With wdDoc.MailMerge
         .MainDocumentType = wdFormLetters
         .Destination = wdSendToNewDocument
         .SuppressBlankLines = True
         .Execute Pause:=False
    End With

    'Application.ScreenUpdating = True

    'show and save output file
    wdDoc.Application.Visible = True
    wdDoc.Application.ActiveDocument.SaveAs wdOutputName

    ' cleanup
    wdDoc.Close SaveChanges:=False
    'activedoc.Close
    Set wdDoc = Nothing

End Sub
  • ¿usted también hacer la Aplicación.ScreenUpdating = False ?/
  • A veces, el mensaje de alerta se abre detrás de el abra excel libro y tengo que manualmente minimizar el libro para seleccionar «Sí». Esta realidad no funciona mientras está atrapado en el medio de la ejecución de espera para que me seleccione el cuadro de mensaje de la opción, así que tengo que Alt+D para minimizar el todo, a CONTINUACIÓN, seleccione excel y haga clic en el cuadro de mensaje. Como se puede imaginar, esto no es muy práctico. Gracias por la ayuda.
  • ScreenUpdating = False, no funcionó. El código se ejecuta bien, no empujar a través del cuadro de mensaje como el que se necesita.
  • Trató de establecer DisplayAlerts en la Palabra, no sólo de Excel?
  • Williams – Dónde, y cómo, debería de implementar esto en el código? He modificado el post Original para mostrar el código que estoy utilizando actualmente.
  • Si todo lo demás falla, lanzar una MsgBox justo antes, diciendo: «Estimado usuario, por favor haga clic en ACEPTAR ahora y en el siguiente mensaje, saludos, Ashton.»

2 Kommentare

  1. 2

    Pruebe a establecer la propiedad DisplayAlerts en Word (si la alerta viene):

    Dim tmp as Long
    
    tmp = wdDoc.Application.DisplayAlerts 
    
    wdDoc.Application.DisplayAlerts = wdAlertsNone
    'do the action which causes the prompt
    wdDoc.Application.DisplayAlerts = tmp
    • +1 si esto va a funcionar con una ligera modificación. wdAlertsNone es una palabra constante. Cambiar a 0 o declarar esta en la parte superior Const wdAlertsNone = 0 También no necesitamos la Application después de wdDoc como ya es una aplicación para wdDoc.DisplayAlerts = 0 sería suficiente.
    • Sí es un valor Booleano, pero también tiene un número Entero equivalente a 0,-1,-2, dependiendo de lo que está establecido actualmente. (wdAlertsAll -1 , wdAlertsMessageBox -2 , wdAlertsNone 0 )
    • Supuse de Ashton uso de otra Palabra constantes que se había establecido una referencia a la biblioteca de Palabra. Que puede haber sido un error de mi parte, pero en ese caso vale la pena señalar que el uso de los sin definir de ellos podría dar lugar a problemas.
    • Estoy teniendo un problema con la colocación. Cuando he wdDoc.DisplayAlerts = 0 set ANTES de wdDoc = GetObject(wdInputName, «Palabra.el documento») que, obviamente, no funciona porque wdDoc no está configurado. Pero si lo pongo inmediatamente después de la línea es demasiado tarde porque la palabra es sólo DESPUÉS de la apertura y que es exactamente cuando aparece el mensaje de modo de que sea demasiado tarde.
    • Usted debe crear una instancia de la palabra.aplicación en primer lugar, a continuación, utilizarlo para abrir el documento.
    • Él es mediante el Enlace Dim wdDoc As Object
    • Me hizo ver que, pero también el uso de constantes de Word sin tener definido (a menos que sean definidas como variables globales/constantes), así que basado en el código solo hay ninguna interpretación definitiva. Nota no hay nada que deje de tener tanto una referencia a la Palabra y el uso de un enlazada de objetos…

  2. 2

    http://support.microsoft.com/kb/825765

    Word 2013

    HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Opciones de

    «SQLSecurityCheck»=dword:00000000

    Start Registry Editor.
    Locate and then click the following registry key:
    
    HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\Options
    On the Edit menu, point to New, and then click DWORD Value.
    Under Name, type:
    
    SQLSecurityCheck
    Double-click SQLSecurityCheck.
    In the Value data box, type:
    
    00000000
    Click OK.

    Word 2010

    HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Opciones de

    «SQLSecurityCheck»=dword:00000000

    Start Registry Editor.
    Locate and then click the following registry key:
    HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options
    On the Edit menu, point to New, and then click DWORD Value.
    Under Name, type:
    SQLSecurityCheck
    Double-click SQLSecurityCheck.
    In the Value data box, type:
    00000000
    Click OK.

    Word 2007

    HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Word\Opciones de

    «SQLSecurityCheck»=dword:00000000

    Start Registry Editor.
    Locate and then click the following registry key:
    HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Word\Options
    On the Edit menu, point to New, and then click DWORD Value.
    Under Name, type:
    SQLSecurityCheck
    Double-click SQLSecurityCheck.
    In the Value data box, type:
    00000000
    Click OK.

    Word 2003

    HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Word\Opciones de

    «SQLSecurityCheck»=dword:00000000

    Start Registry Editor.
    Locate and then click the following registry key:
    HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Word\Options
    Click Edit, point to New, and then click DWORD Value.
    Under Name, type:
    SQLSecurityCheck
    Double-click SQLSecurityCheck.
    In the Value data box, type:
    00000000
    Click OK.

    Word 2002 Service Pack 3

    HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Opciones de

    «SQLSecurityCheck»=dword:00000000

    Para ello, siga estos pasos:

    Start Registry Editor.
    Locate and then click the following registry key:
    HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Options
    Click Edit, point to New, and then click DWORD Value.
    Under Name, type:
    SQLSecurityCheck
    Double-click SQLSecurityCheck.
    In the Value data box, type:
    00000000
    Click OK.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea