Página 1 de 1

Após executar todos Shell, voltar para o Formulario

Enviado: 20 Out 2016 às 10:28
por badchico
Bom dia caros!

Existem algum comando que após executar todos os processos da chamada Shell, ele volte para o Excel, pois as janelas ficam todas sobrepostas.

Seria a ideia de ALT + TAB (ir para o Excel)

Obrigado;

Re: Após executar todos Shell, voltar para o Formulario

Enviado: 20 Out 2016 às 10:41
por alexandrevba
Bom dia!!

Eu não sei se entendi, mas eu creio que você terá que usar uma API.
Mas já tentou ativar o arquivo com Activate etc?
Código: Selecionar todos
ThisWorkbook.Activate
ActiveWindow.WindowState = xlMaximized
Att

Após executar todos Shell, voltar para o Formulario

Enviado: 20 Out 2016 às 10:50
por badchico
Opa Alexandre, blz?

Então, eu criei um form dentro do excel, para abrir todas a minha aplicações aqui no trabalho e fazer o login, porem vai abrindo todas elas e logando, e o excel ficando pra trás, gostaria que no final do processo, voltasse para o excel e exibia a mensagem finalizado, a mensagem já coloquei, mais tenho que ir la no excel para ser exibida.

o comando que vc passou não deu certo, ainda continua sobrepondo meu Form

Re: Após executar todos Shell, voltar para o Formulario

Enviado: 20 Out 2016 às 12:13
por alexandrevba
Boa tarde!!

Eu não como está as rotinas e as propriedades dos objetos...em seu projeto.
http://www.jkp-ads.com/Articles/apideclarations.asp
Código: Selecionar todos
'Use esse código dentro de um módulo
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1

Public Const HWND_TOP = 0
Public Const HWND_BOTTOM = 1
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2

Public Declare Function SetWindowPos Lib "user32" _
    (ByVal hWnd As Long, _
    ByVal hWndInsertAfter As Long, _
    ByVal X As Long, _
    ByVal Y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal uFlags As Long) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Código: Selecionar todos
Private Sub UserForm_Initialize()
'Use esse código dentro do Userform
    Const C_VBA6_USERFORM_CLASSNAME = "ThunderDFrame"
    
    Dim ret As Long
    Dim formHWnd As Long
    
    
    formHWnd = FindWindow(C_VBA6_USERFORM_CLASSNAME, Me.Caption)
    If formHWnd = 0 Then
        Debug.Print Err.LastDllError
    End If
    
    ret = SetWindowPos(formHWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
    If ret = 0 Then
        Debug.Print Err.LastDllError
    End If
    
End Sub
Faça os testes em uma cópida do arquivo e projeto original, faça as referências necessárias, talvez isso te ajude em algo.

Att