Notifications
Clear all

Abrir Outras Worksheet em Nova Instancia com Userform Aberto

5 Posts
2 Usuários
0 Reactions
1,451 Visualizações
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Pessoal, Tudo blz?

Como vocês tratam o seguinte problema no projeto de vocês:

    * Fiz um formulário para que os usuários fizessem solicitações de descontos, esse formulário possui varias travas e varias otimizações no processo para a CIA.

    * O problema é que esta todo mundo me reclamando que não consegue abrir outro Excel enquanto estão com meu formulário ativo na tela, e eles precisam abrir outro Excel ao mesmo tempo para executar outras atividades em paralelo. Como eu faço para que meu projeto seja sempre aberto em uma nova instancia exclusiva para meu projeto?[/list:u:ys1m02hu]

    :o

    Pensei em algo assim, sempre que o Workbook for desativado, significa que o usuario pode estar tentando abrir uma nova pasta de trabalho, então executar a macro:

    Private Sub Workbook_Deactivate()
    
         If UserForm1.Visible = True Then
    
              Dim xlApp As New Application
              Dim wbPath As String
              Dim wbName As String
              Dim wbPathName
    
              Set xlApp = New Excel.Application
     
              wbPath = ActiveWorkbook.Path
              wbName = ActiveWorkbook.Name
              wbPathName = wbPath & "" & wbName
    
              ActiveWorkbook.Close
    
              xlApp.Workbooks.Open wbPathName
    
              xlApp.ActiveWorkbook.Windows(1).Visible = True
              xlApp.Windows(1).Caption = wbName
              xlApp.Visible = True
              ThisWorkbook.Activate
    
         End If
    
    End Sub
    

    Não gostei disso! Funciona, mas não gostei. Me pareceu uma gambiarra monstruosa.

    Fui Util? Click na "Mãozinha" ali do lado >>>> e agradeça.

     
Postado : 25/04/2018 8:15 am
(@klarc28)
Posts: 971
Prominent Member
 

Altere a propriedade ShowModal do formulário para False.

 
Postado : 25/04/2018 8:26 am
(@necron)
Posts: 117
Estimable Member
Topic starter
 

klarc28

Ahhh não sabia que essa propriedade era pra isso! Funciona!

Mas ai quando eu abro outro Excel, ele abre também a Workbook que eu queria esconder (Estava Visible.false), o ThisWorkbook. Tem como eu deixar o ThisWorkbook invisível e exibir somente a Worbook que o usuário abriu??

Fui Util? Click na "Mãozinha" ali do lado >>>> e agradeça.

 
Postado : 25/04/2018 8:35 am
(@klarc28)
Posts: 971
Prominent Member
 

Você pode deixar ocultas as planilhas que você não quer o usuário veja.

ou

Private Sub Worksheet_Activate()
'Se alguém ativar esta planilha, a pasta fica oculta
ActiveWindow.Visible = False
End Sub

ou

Private Sub Worksheet_Activate()
'Se alguém ativar esta planilha, a pasta fica oculta
Application.Windows("PastadeTrabalho").Visible = False
End Sub

Se não der certo, procure algum evento (do formulário, da planilha ou da pasta de trabalho) que se encaixe melhor à sua necessidade.

 
Postado : 25/04/2018 8:44 am
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Perfeito! A solução ficou show de bola! Dessa forma ficou mais "Profissional".

Abraços.

Fui Util? Click na "Mãozinha" ali do lado >>>> e agradeça.

 
Postado : 25/04/2018 10:22 am