Notifications
Clear all

Abrir Arquivo, Rodar Macro e Fechar.

6 Posts
3 Usuários
0 Reactions
1,112 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Prezados,

preciso de uma macro que faça os seguintes passos:

1º Abra o arquivo C:DocumentosCaixa.xlsm, todos os dias às 20h.
2º Rode a Macro1 (já presente no arquivo em questão)
3º Aguarde 30 segundos (sem fazer mais nada)
4º Feche e salve o Arquivo

É possível via VBA?

 
Postado : 17/12/2014 6:57 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

lostruler,

Bom Dia!

Para fazer isso você deve ter um outro arquivo com uma macro simples que abra o arquivo que tem a macro que você quer que seja executada automaticamente. Desse modo, crie um arquivo .xlsm com a seguinte linha de comando:

Workbooks.Open "C:DocumentosCaixa.xlsm"

No seu arquivo Caixa.xlsm, a macro que você quer que seja executada deve ser chamada automaticamente de dentro da procedure Private Sub Workbook_Open(). Por exemplo, se a sua macro se chamar teste, você teria algo como isso:

Private Sub Workbook_Open()
    Call teste()
End Sub

Finalmente, para salvar e fechar o arquivo, você deve incluir uma linha para fazer isso, tipo:

Private Sub Workbook_Open()
    Call teste()
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End Sub
 
Postado : 18/12/2014 6:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Wagner, obrigado pela ajuda.

Mas como faço para que a planilha aguarde 30segundos antes de fechar ?

 
Postado : 18/12/2014 7:11 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Experimente este comando:

Application.Wait "00:00:30"

Deve ficar assim:

Private Sub Workbook_Open()
    Call teste()
    Application.Wait "00:00:30"
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End Sub

Veja:

http://msdn.microsoft.com/en-us/library/office/ff822851(v=office.15).aspx
http://msdn.microsoft.com/en-us/library/office/aa213656(v=office.11).aspx

 
Postado : 18/12/2014 7:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Gtsalikis, valeu pela ajuda.

Mas tentei

Sub Macro1()

    Range("B4").Select
    Selection.Copy
    Range("B6").Select
    Selection.Insert Shift:=xlDown
    Range("B6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Private Sub Workbook_Open()
        Call Macro1
        Application.Wait "00:00:30"
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    End Sub

Mas a Macro não roda após abrir.

 
Postado : 18/12/2014 8:28 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Seguindo o exemplo da própria Microsoft, substitua isso:

Private Sub Workbook_Open()
        Call Macro1
        Application.Wait "00:00:30"
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    End Sub

Por Isso:

    Private Sub Workbook_Open()
            Call Macro1
            newHour = Hour(Now())
            newMinute = Minute(Now())
            newSecond = Second(Now()) + 30
            waitTime = TimeSerial(newHour, newMinute, newSecond)
            Application.Wait waitTime
            ActiveWorkbook.Save
            ActiveWorkbook.Close
    End Sub
 
Postado : 18/12/2014 9:49 am