locked
Ajuda com sintaxe: Macro pra abrir, executar macro de outra planilha e fechar

    Question

  •  

    E ae pessoal!

     

    Tenho um arquivo que precisa pegar dados de vários outros. Fiz uma macro para que esse arquivo abra todos os outros relatórios, copie o que precisa, e feche.

    Infelizmente o nome desses relatórios estão sempre mudando e tive que fazer uma aba só com os nome, por exemplo, c:\pasta\Relatorio01.xlsm e colei na aba A1

     

    Então, pra abrir eu fiz:

     

    ' Definindo o nome do File01
    Dim File01 As String
    File01 = Range("A1").Value

    ' Abrindo arquivo
        Workbooks.Open Filename:=File01

     

    Até aí tudo ótimo! Ele abriu o arquivo. Agora quero que rode a macro de atualizar do próprio relatório:

     

    ' Roda Macro p/ Atualizar diaria
        
          Application.Run _
            "c:\pasta\Relatorio01.xlsm!PegarDadosDiarios"     


    Isso funiona! Mas eu quero aquele valor referente ao "File01", que eu defini como sendo igual ao valor de A1. Entao faço:

     

          Application.Run _
            "File01!PegarDadosDiarios"

     

    Mas nao funcionou! Ele manda depurar.

    Outra coisa q não consigo é fechar o arquivo. Se "Workbooks.Open Filename:=File01", por que não posso usar "Workbooks.Close Filename:=File01" pra fechar?!

     

    Como eu uso o valor de File01 pra rodar a macro e pra fechar?

     

    Valeu

    Ivan


    Monday, May 09, 2011 7:30 PM

All replies

  • Consegui fechar!!!

     

    Separei o endereço do nome do arquivo em duas células e fiz:

     

    Dim Path01 As String
    Dim nome01 As String
    Dim File01 As String

    Path01 = Range("C6").Value
    nome01 = Range("D6").Value
    File01 = Path01 & "\" & nome01 & ".xlsm"

     

    Daí pra abrir:

        Workbooks.Open Filename:=File01

     

    Pra fechar:

        Windows(nome01 & ".xlsm").Activate
        ActiveWindow.Close

     

    Mas ainda não consigo fazer rodar a macro dentro do relatório:

          Application.Run _
            "nome01 & ".xlsm"&!PegarDadosDiarios"

     

    Ele ainda acusa erro de sintaxe =/

     

     

     

    Monday, May 09, 2011 7:52 PM
  • Olá,

    Dê uma olhada nesse artigo, é em inglês, mas bem fácil de entender: http://www.vbaexpress.com/kb/getarticle.php?kb_id=279

    O seu caso é o RunMacroWithNoArgs.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    Wednesday, June 01, 2011 5:24 PM
  • Se você quiser, pode adicionar uma macro que sempre executa ao seu menu de macros, sem precisar ter que abrir todas as vezes outra Pasta de Trabalho. Veja em: http://www.ambienteoffice.com.br/excel/disponibilizar_macros_favoritas_para_todas_as_pastas_de_trabalho/
    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    Wednesday, June 01, 2011 5:25 PM
  • Valeu, Benzadeus!!!!!!!! O Arquivo q puxei na página q vc mandou é perfeito pro que eu preciso!!!

     

    Só falta uma coisinha agora pra ficar perfeito..

     

    Ele está pegando o endereço na A1 e o nome do arquivo na A2 (por exemplo). Quero que ele, depois desse, faça o mesmo com o nome e o endereço da B1 e B2!

     

    Tenho vários arquivos que vão do A1 até T1. Não quero ter q repetir o código trocentas vezes e mudar a variável toda vez. Como faço pra programar um contador iterativo pra que essa macro que vc me ensinou funcione pra todas as linhas que eu escrever?  Valeu!

    Thursday, June 02, 2011 7:47 PM
  • Olá Ivan,

    Nao cheguei a ver os arquivos que vc postou  mas a para  repetir varias vezes a mesma rotina, use um For e valida se <>"" para parar a rotina.

     

    Sds...

    Joao Martos

    Friday, June 03, 2011 3:01 PM
  • Sub Iterar()
      
      Dim ws As Worksheet
      Dim r As Long, rLast As Long
        
      Set ws = ActiveSheet
      With ws
        'Lê última linha da coluna A
        rLast = .Cells.Rows.Count(r, "A")
        'Looping da linha 2 até a última
        For r = 2 To rLast
          'Aqui você coloca seu código
          .Cells(r, "A") = "aaa"
          .Cells(r, "B") = "bbb"
        Next r
      End With
    End Sub

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    Saturday, June 04, 2011 11:18 AM