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 todosFor 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 todosDim 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 todosDim 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 todosDim 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.