Página 1 de 1

MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROTINA

Enviado: 02 Set 2019 às 09:38
por rit
Bom dia,

Como faço para identificar o nome de uma planilha e executar a rotina em toda planilha que tiver esse nome? E se no caso a planilha tiver o nome de numero, eu precisar que ela faça uma sequencia exata..

Exemplo: planilha de 1 a 15 executar rotina X.. Planilha 17 a 25 executar rotina Y... não nessa ordem mas a ideia é essa.. selecionar as planilhas com os nomes de 1 a 15 ou 17 a 25 e fazer a rotina.

Re: MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROT

Enviado: 02 Set 2019 às 10:43
por Jimmy
Olá rit,

Em linhas gerais, você usa rotina abaixo para percorrer as planilhas e obter seus nomes. Depois, usa instruções VB pra ver se naquela planilha o procedimento será ou não executado, e abre a pasta de trabalho, executa, salva e fecha, se for o caso.

Se mandar a pasta de trabalho, o procedimento e o critério de seleção das planilhas, posso desenvolver um pouco mais.
Código: Selecionar todos
For Each plan In ThisWorkbook.Sheets
    MsgBox plan.Name
Next
Jimmy San Juan

Re: MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROT

Enviado: 02 Set 2019 às 11:00
por rit
Preciso que ele faça a rotina na aba 1,2,3,4 menos na original, se fosse para fazer em todas seria mais facil mas fizeram a planilha dessa forma.. então preciso que seja executada apenas nas abas que tem numeração.

Re: MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROT

Enviado: 02 Set 2019 às 11:11
por babdallas
Veja se ajuda
Código: Selecionar todos
Dim vrtPlanGrupo1 as Variant, vrtPlanGrupo2 as Variant
Dim bytNumPlan  as Byte
Dim wshPlan as Worksheet

vrtPlanGrupo1 = Array(1,5,7,8)
vrtPlanGrupo2 = Array(2,3,4,6)

for each wshPlan in ThisWorkBook.Worksheets
      for bytNumPLan = 0 to ubound(vrtPlanGrupo1)
            if wshPlan.Name = vrtPlanGrupo1(bytNumPLan) then RotinaX
       next bytNumPlan

      for bytNumPLan = 0 to ubound(vrtPlanGrupo2)
            if wshPlan.Name = vrtPlanGrupo2(bytNumPLan) then RotinaY
       next bytNumPlan
next wshPlan

MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROTINA

Enviado: 02 Set 2019 às 11:25
por rit
Funcionou obrigado! tipo quando é uma quantidade alta de palnilhas, sabe como eu faço pra ficar mais rapido?
demora em torno de 10 minutos para rodar em todas as planilhas.

Eu havia feito para selecionar todas as abas e fazer a rotina mas dessa forma não tinha funcionado... ali no array tem como eu selecionar varias de uma vez como se eu tivesse apertado o ctrl ? e assim fazer a rotina em uma planilha e o excel entender que estou fazendo em todas as outras?

Re: MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROT

Enviado: 02 Set 2019 às 11:46
por babdallas
Veja se melhora um pouco.
Código: Selecionar todos
Dim vrtPlanGrupo1 As Variant, vrtPlanGrupo2 As Variant
Dim bytNumPlan  As Byte, bytCon1 As Byte, bytCont2 As Byte
Dim wshPlan As Worksheet

vrtPlanGrupo1 = Array(1, 5, 7, 8)
vrtPlanGrupo2 = Array(2, 3, 4, 6)

For Each wshPlan In ThisWorkbook.Worksheets
    For bytNumPlan = 0 To UBound(vrtPlanGrupo1)
        If wshPlan.Name = vrtPlanGrupo1(bytNumPlan) And bytCont1 < (UBound(vrtPlanGrupo1)+1) Then
            RotinaX
            bytCont1 = bytCont1 + 1
        End If
    Next bytNumPlan

    For bytNumPlan = 0 To UBound(vrtPlanGrupo2)
        If wshPlan.Name = vrtPlanGrupo2(bytNumPlan) And bytCont2 < (UBound(vrtPlanGrupo2)+1) Then
            RotinaY
            bytCont2 = bytCont2 + 1
        End If
    Next bytNumPlan
Next wshPlan

Re: MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROT

Enviado: 02 Set 2019 às 11:49
por babdallas
Corrigindo
Código: Selecionar todos
Dim vrtPlanGrupo1 As Variant, vrtPlanGrupo2 As Variant
Dim bytNumPlan  As Byte, bytCon1 As Byte, bytCont2 As Byte
Dim wshPlan As Worksheet

vrtPlanGrupo1 = Array(1, 5, 7, 8)
vrtPlanGrupo2 = Array(2, 3, 4, 6)

For Each wshPlan In ThisWorkbook.Worksheets
    If bytCont1 < (UBound(vrtPlanGrupo1) + 1) Then
        For bytNumPlan = 0 To UBound(vrtPlanGrupo1)
            If wshPlan.Name = vrtPlanGrupo1(bytNumPlan) Then
                RotinaX
                bytCont1 = bytCont1 + 1
            End If
        Next bytNumPlan
    End If
    If bytCont2 < (UBound(vrtPlanGrupo2) + 1) Then
        For bytNumPlan = 0 To UBound(vrtPlanGrupo2)
            If wshPlan.Name = vrtPlanGrupo2(bytNumPlan) Then
                RotinaY
                bytCont2 = bytCont2 + 1
            End If
        Next bytNumPlan
    End If
Next wshPlan

MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROTINA

Enviado: 02 Set 2019 às 12:07
por rit
8 minutos... acho que não da pra melhorar, mas ficou bom obrigado!

Re: MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROT

Enviado: 02 Set 2019 às 12:15
por babdallas
O que as rotinas X e Y fazem? Qto tempo demora uma execução delas? Será que não daria para otimizá-las?

MACRO PARA IDENTIFICAR NOME DA PLANILHA E EXECUTAR A ROTINA

Enviado: 02 Set 2019 às 13:07
por rit
Boa ideia!

Deu certo, melhorei a rotina, ela apaga os dados e reaplica as formulas.