Notifications
Clear all

Código para responder caixa de diálogo aberta na macro

7 Posts
2 Usuários
0 Reactions
1,768 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal bom dia,

Estou com uma série de macros desenvolvidas que elas são interrompidas para que o usuário responda a caixa de diálogo, normalmente perguntando se quer salvar o arquivo que previamente foi aberto e alterado.

Existe uma maneira de responder com um "Não", ou "Sim", a caixa de diálogo, sem que macro seja interrompida?

Obrigado pela ajuda.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/11/2015 6:47 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal bom dia,

Estou com uma série de macros desenvolvidas que elas são interrompidas para que o usuário responda a caixa de diálogo, normalmente perguntando se quer salvar o arquivo que previamente foi aberto e alterado.

Existe uma maneira de responder com um "Não", ou "Sim", a caixa de diálogo, sem que macro seja interrompida?

Obrigado pela ajuda.

Tem como implementar, mas para isto coloque a rotina que está utilizando.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/11/2015 9:55 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá Mauro,

Primeiramente obrigado pela ajuda. Fiz uma macro simples só pra exemplificar a minha necessidade. Anexei as planilhas em questão, a que faz a busca e a própria base.

Perceba que fiz uma mudança na base e depois copiei para colar na planilha que faz a busca, porém ao fechar a base ele me questiona se eu desejo salvar, a resposta é NÃO.
Outra caixa de diálogo que abre é tem muita informação na área de transferencia, e pergunta se quero descartar ou não, a resposta também é NÃO, pois já colei para onde eu preciso.

Se puder me ajudar a responder essas duas caixas de dialogo com a macro sem ser interrompida, agradeço.

Abraço

Segue código do VBA da macro:

Sub buscar_base()
'
' buscar_base Macro
'

'
Workbooks.Open Filename:="C:UsersLeandroDesktopbase.xlsx"
Range("D1").Select
ActiveCell.FormulaR1C1 = "aaaaaa"
Cells.Select
Selection.Copy
Windows("buscar_base.xlsm").Activate
Cells.Select
ActiveSheet.Paste
Windows("base.xlsx").Activate
Range("K10").Select
ActiveWindow.Close
Range("B12").Select
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/11/2015 7:54 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Camargo, troque sua rotina pela a abaixo e faça os testes se é isto.

Sub CopiaColaBases()
    Dim wShBase As Worksheet, wShDestino As Worksheet
    Dim rgMyDados As Range
    
    'Abre o Arquivo base.xlsx
    Workbooks.Open Filename:="C:UsersLeandroDesktopbase.xlsx"
    
    'Defini o nome da aba a copiar
    Set wShBase = Worksheets("Plan1")
        'Insere o dado no range D1
        wShBase.Range("D1").FormulaR1C1 = "aaaaaa"
    
    'Defini o Range somente com as celulas preenchidas
    Set rgMyDados = wShBase.Range("A1:H" & Range("H" & Rows.Count).End(xlUp).Row)
        
        'Copia os dados sem precisar seleciona-los antes
        rgMyDados.Copy
    
    'Alterna para o arquivo buscar_base.xlsm
    Windows("buscar_base.xlsm").Activate
    
    'Defini o nome da aba a colar
    Set wShDestino = Worksheets("base_buscada")
    
        'Cola no Range A1
        wShDestino.Range("A1").PasteSpecial
        
        'Cancela o estado de copiar
        Application.CutCopyMode = False
    
    'Alterna para o arquivo base.xlsx
    Windows("base.xlsx").Activate
    
        'Seleciona o Range K10
        Range("K10").Select
    
        'Enibe (desabilita) qualquer janela de questionamento
        'Utilize com cuidado esta instrução
        Application.DisplayAlerts = False
    
        'o arquivo base.xlsx será fechado sem salvar e sem a cx referente
        'a área de transferencia
        ActiveWindow.Close
        
        Range("B12").Select

End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/11/2015 8:59 am
(@mprudencio)
Posts: 2749
Famed Member
 

Uma sugestão bem simples

antes de ActiveWindow.Close

coloque isso

activewindow.save

Assim vc vai salvar antes de fechar e pronto problema resolvido.

Não tera o problema de perguntar se o arquivo devera ser salvo, pois ele ja foi salvo antes.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 25/11/2015 3:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Uma sugestão bem simples
antes de ActiveWindow.Close
coloque isso

activewindow.save

Assim vc vai salvar antes de fechar e pronto problema resolvido.
Não tera o problema de perguntar se o arquivo devera ser salvo, pois ele ja foi salvo antes.

Marcelo, como o mesmo disse que a intensão é NÃO Salvar, optei pela instrução
Application.DisplayAlerts = False

assim enibimos qualquer mensagem, e aproveitei fiz uma limpeza na rotina que tinha muito select, que nos casos não são necessárias.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/11/2015 8:57 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado pela ajuda pessoal, assunto resolvido! Funcionou ambas as soluções!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 26/11/2015 9:51 pm