Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

Comando "SendKey" per intercettare finestre...

  1. #1
    fabios non è in linea Novello
    Ciao a tutti.
    Sono nuovo del forum e da un po' alle prese con VBA.
    Vorrei prendere confindenza con il comando "SendKey", in particolar mado intercettando finestre che possono apparire durante l'esecuzione di alcune routine, e al riguardo ho sviluppato questa piccola procedura:

    Sub w()
    ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & ActiveWorkbook.Name, FileFormat:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
    Application.SendKeys "{enter}"
    End Sub
    
    Sovrascrivendo il file, mi compare un messaggio di conferma o meno che io, tramite "SendKey", vorrei confermare ma Application.SendKeys "{enter}" non viene eseguita! Sapete dirmi dov'è l'errore? Grazie.
    (P.S: So che la finestra è disattivaibile col comando "Application.DisplayAlerts = False", ma lo scopo di questa discussione è capire come poter sfruttare al meglio il comando "SendKey")

  2. #2
    PaoloTalini non è in linea Scribacchino
    fabios:
    Solitamente non uso SendKey .
    Da quello che ho letto mi risulta che sia definita Istruzione
    il manuale di Excel2003 riporta:
    Istruzione SendKeys
    Invia alla finestra attiva una o più sequenze di tasti, come se queste fossero state immesse tramite tastiera.
    Sintassi
    SendKeys string[, wait]
    La sintassi dell'istruzione SendKeys è composta dai seguenti argomenti predefiniti:
    Parte Descrizione
    string Obbligatoria. Espressione stringa che specifica la sequenza di tasti da inviare.
    Wait Facoltativa. Valore Boolean che specifica la modalità d'attesa. Se il risultato è False (valore predefinito) il controllo verrà trasferito alla routine subito dopo aver inviato la sequenza di tasti. Se il risultato è True, le sequenze di tasti dovranno essere elaborate prima che il controllo venga restituito alla routine.
    Da quello che leggo SendKeys *metodo e/o istruzione funziona in
    maniera diversa secondo la versione di Excel.

    Prova modificando il tuo codice :
    Sub w()
        ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & ActiveWorkbook.Name, FileFormat:=xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
        SendKeys "{ENTER}"
    End Sub
    
    Puoi leggi :Istruzione SendKeys e Metodo SendKeys
    Se stai usando Excel 2007 allora potrai trovare utile leggere:SendKeys Method*[Excel 2007 Developer Reference]
    ℹ️ Leggi di più su PaoloTalini ...

  3. #3
    PCBase non è in linea Scolaretto
    Ciao

    Sempre per comandare la finestra Save As
    Utile per mostrare gli utilizzi del metodo Application.SendKeys

    Sub PcBase()
        'Application.ScreenUpdating = False
        
        'Questi i comandi da inserire prima di aprire la finestra save as
        Application.SendKeys ("{ENTER}")
        Application.SendKeys ("{TAB}")
        Application.SendKeys ("{ENTER}")
        
        'Elenco di numeri di identificazione per CommandBar
        'http://support.microsoft.com/kb/213552
        'Comando Finestra Save As
        Application.CommandBars.FindControl(ID:=748).Execute
    End Sub
    

  4. #4
    fabios non è in linea Novello
    mmm....vi ringrazio per il contributo ma ho provato con:

    SendKeys "{ENTER}"
    Application.SendKeys "{ENTER}"
    SendKeys ("{ENTER}")
    Application.SendKeys ("{ENTER}")

    ma niente, non vuole saperne di inviare il comando.... non capisco...

  5. #5
    ma-pa non è in linea Novello
    Quote Originariamente inviato da fabios Visualizza il messaggio
    mmm....vi ringrazio per il contributo ma ho provato con:

    SendKeys "{ENTER}"
    Application.SendKeys "{ENTER}"
    SendKeys ("{ENTER}")
    Application.SendKeys ("{ENTER}")

    ma niente, non vuole saperne di inviare il comando.... non capisco...
    Penso che il comando SendKeys ("{ENTER}") non venga eseguito perche' fino a che non viene chiusa la finestra popup del messaggio non viene restituito il controllo alla routine e quindi non puo' essere eseguito il comando SENDKEYS , spero che qualcuno mi contraddica perche' la funzionalità che stai provando mi sembra proprio utile.

    Un saluto Marco.
    ℹ️ Leggi di più su ma-pa ...

  6. #6
    PCBase non è in linea Scolaretto
    Ciao

    spero che qualcuno mi contraddica perche' la funzionalità che stai provando mi sembra proprio utile.
    Hai letto attentamente il mio post che descive una differente modalità ?

  7. #7
    fabios non è in linea Novello
    Grazi per essere interventuo PCBase.
    Ho provato la tua procedura e funziona, non capisco perchè ma funziona...
    Leggendo il tuo codice mi viene da interpretarlo così: VBA immagazzina i tre comandi SendKeys e poi li riversa alla finestra "Save as...". La cosa mi pare strana perchè, da quel che ho capito, "SendKeys" dovrebbe inviarli subito i comandi e non tenerli, come dire... in stanbay.
    Dando per buona la tua procedura ho provato a sostituire
    Application.CommandBars.FindControl(ID:=748).Execute
    
    con
    ActiveWorkbook.SaveAs Filename:="D:\Documenti\Cartel1.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
    
    (il file si chiama Cartel1.xls) ma non funziona...
    Cos'ha la tua riga di codice che quella mia non ha?

  8. #8
    PCBase non è in linea Scolaretto
    Ciao

    Questa tecnica l'ho notata in rete a partire da esempi simili.

    Si tratta di due metodi differenti, io chiamo il comando Save as tramite:
    Application.CommandBars.FindControl(ID:=748).Execute

    Vedi Link:Istruzione SendKeys e Metodo SendKeys

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Riconoscere utenti multipli con il comando Environ("USERNAME"
    Da paoloderigo nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 30-09-2020, 11:42
  2. Risposte: 4
    Ultimo Post: 01-05-2016, 13:10
  3. Intercettare click su "freccia" in un controllo casella combinata.
    Da gianduiotto nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 18-09-2013, 21:29
  4. Pulsante di comando "ripristina e compatta"
    Da pier42 nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 28-02-2011, 09:42
  5. [Win32] Gestione Finestre con "windows.h"
    Da Bemipefe nel forum C/C++
    Risposte: 38
    Ultimo Post: 26-05-2006, 11:10