none
Rodar Macro Apenas na Pasta RRS feed

  • Pergunta

  • Olá,

    Como faço para rodar uma macro somente em uma pasta de trabalho, sem que essa macro não interfira em outras pasta que esteja aberta?

    Aceito qualquer sugestão.

    Obrigado.

    sexta-feira, 14 de novembro de 2014 15:20

Respostas

  • Miguelinho....

    Se você estiver falando de um código não correr o risco de ser executado em uma outra planilha, evite definir os objetos apenas com na última camada... por exemplo:

    range("A1").value = 1


    sempre determine onde está esse range:

    workbook("Nome da Planilha").Sheets("Nome da Guia").range("A1").value = 1


    Sei que assim fica grande demais, mas você pode criar os objetos separadamente

    Dim wbk as workbook
    
    Dim wks as worksheet
    
    Set wkb = Workbooks("Nome da Planilha")
    
    set wks = wkb.sheets("Nome da Guia")
    
    wks.range("A1").value

    Mas,

    se você estiver falando de quando executar uma macro, essa macro não impossibilitar de outras planilhas serem acessadas, a única forma que eu conheço é abrir a planilha que contém VBA sempre em instâncias separadas do excel.

    Exemplo:



    Natan

    • Marcado como Resposta miguelinho70 sexta-feira, 14 de novembro de 2014 20:25
    sexta-feira, 14 de novembro de 2014 16:31

Todas as Respostas

  • Miguelinho....

    Se você estiver falando de um código não correr o risco de ser executado em uma outra planilha, evite definir os objetos apenas com na última camada... por exemplo:

    range("A1").value = 1


    sempre determine onde está esse range:

    workbook("Nome da Planilha").Sheets("Nome da Guia").range("A1").value = 1


    Sei que assim fica grande demais, mas você pode criar os objetos separadamente

    Dim wbk as workbook
    
    Dim wks as worksheet
    
    Set wkb = Workbooks("Nome da Planilha")
    
    set wks = wkb.sheets("Nome da Guia")
    
    wks.range("A1").value

    Mas,

    se você estiver falando de quando executar uma macro, essa macro não impossibilitar de outras planilhas serem acessadas, a única forma que eu conheço é abrir a planilha que contém VBA sempre em instâncias separadas do excel.

    Exemplo:



    Natan

    • Marcado como Resposta miguelinho70 sexta-feira, 14 de novembro de 2014 20:25
    sexta-feira, 14 de novembro de 2014 16:31
  • Obrigado 'Natan Silva tua resposta me ajudou a compreender o que procurava. Assim com outros tópico solucionado a minha duvida.

    Obrigado.

    sexta-feira, 14 de novembro de 2014 20:25
  • Natan,

    Caso eu tenha que usar mais de uma Sheet dentro de uma pasta de trabalho, como ficaria o código de programação?

    terça-feira, 24 de dezembro de 2019 14:06
  • Olá James,

    não sei se entendi sua dúvida, acredito que esteja se referindo em utilizar o mesmo comando em sheets diferentes?

    Se for, você deve criar o método solicitando o parâmetro com o nome da sheet onde esse deverá ser executado.

    Private Sub PreencherCelula(nomeDaSheet as string)
    
        ThisWorkbook.Sheets(nomeDaSheet).range("A1").Value = "Hello Wordl"
    
    End Sub
    


    Aí pra chamar, dependendo de oquê e como esteja fazendo, poderia ser assim:

    PreencherCelula "Plan1"

    'ou

    PreencherCelula activesheet.Name

    Feliz Natal!


    Natan


    • Editado 'Natan Silva quarta-feira, 25 de dezembro de 2019 16:06
    quarta-feira, 25 de dezembro de 2019 16:06