Notifications
Clear all

Selecionar abas a partir do conteúdo das células.

3 Posts
1 Usuários
0 Reactions
2,390 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia pessoal!

Bom venho eu, mais uma vez pedir ajuda com a macro do Excel!

Desta vez estou criando onde ela seleciona algumas abas da planilha e as imprime em PDF, bom imprimir é bem simples o problema é o processo.

Tenho uma planilha e nela contem umas 30 abas com o nome das regiões do país que seriam as filiais da empresa. E preciso separa-las para imprimir e enviar aos gerentes, cada gerente seria responsável por uma ou mais regiões.
Problema a empresa esta passando por um momento de transição e a responsabilidades dos gerentes muda quase todo o mês, ou seja, cada hora um gerente cuida de uma filial diferente, e complica criar uma macro com nomes fixos.

Nesse caso eu pensei em criar uma formula onde eu posso simplesmente alterar o nome dos gerentes para buscar automaticamente a filial que ele é responsável no momento, e com isso a macro iria buscar o nome da aba dentro de uma célula do excel e selecionar estas abas e imprimi-las em pdf. Até ai, boa parte é bem simples, gostaria de saber apenas se alguém conhece algum código onde a macro selecione uma aba do excel, apartir do valor de uma célula, eu tentei algo assim:

Sub Teste()
Teste Macro

Set plan = Workbooks("Pasta2.xlsm").Worksheets("Plan1"). _
Range("B2")

Windows("Controle de Margem.xlsx").Activate
Sheets(plan).Select

End Sub

E para mais de uma aba:

Sub Teste2()
Teste2 Macro

Set plan = Workbooks("Pasta2.xlsm").Worksheets("Plan1"). _
Range("B2")
Set plan2 = Workbooks("Pasta2.xlsm").Worksheets("Plan1"). _
Range("B3")

Windows("Controle de Margem.xlsx").Activate
Sheets(Array(plan, plan2)).Select

End Sub

E como devem imaginar, não deu certo rs.
Alguém saberia me ajudar?
Muito obrigado!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/08/2012 8:21 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Experimente assim (obs. Na definição de nomes para variaveis, evite nomes que possam se confundir com objetos do sistema (tipo plan2):
Uma Planilha:

Sub XTeste()
pln = Workbooks("Pasta2.xlsm").Worksheets("Plan1").Range("B2")
Windows("Controle de Margem.xlsx").Activate
Sheets(pln).Select
End Sub

Mais de uma planilha:

Sub XTeste2()
pln = Workbooks("Pasta2.xlsm").Worksheets("Plan1").Range("B2")
Pln2 = Workbooks("Pasta2.xlsm").Worksheets("Plan1").Range("B3")
Windows("Controle de Margem.xlsx").Activate
Sheets(Array(pln, Pln2)).Select
End Sub

Em adicional, se tiver varias planilhas pode ser algo assim:

Sub selecionarplanval()
Dim LRow As Long, NbPlan As Long
Dim MyArray() As Variant
LRow = Sheets("Plan1").Cells(Cells.Rows.Count, "A").End(xlUp).Row

NbPlan = 0
For i = 4 To LRow

If Sheets("plan4").Range("a" & i).Value <> "" Then
ReDim Preserve MyArray(NbPlan)
np = Sheets("plan4").Range("a" & i).Value
MyArray(NbPlan) = np
NbPlan = NbPlan + 1
End If
Next
Sheets(MyArray).Select
Sheets(MyArray).Copy

End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/08/2012 12:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Puxa alguns detalhes que invalidaram a macro, mas valeu mesmo Reinaldo me ajudou e muito!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/08/2012 1:05 pm