Notifications
Clear all

Abrir outra planilha com VBA

5 Posts
3 Usuários
0 Reactions
1,281 Visualizações
(@jokerpot)
Posts: 132
Estimable Member
Topic starter
 

Pessoal podem me dar uma ajuda?

Fiz uma macro que esta funcionando perfeitamente em uma planilha (com 3 ABAS - PROCESSOS TRABALHISTAS, BASE TRABA ATUAL e BASE TRABA ANTERIOR) que busca e compara informações de 2 ABAS distintas, sendo BASE TRABA ATUAL e BASE TRABA ANTERIOR.

Estou criando mais 2 planilhas do mesmo estilo, mudando apenas as informações que serão comparadas, ou seja, serão mais 2 PLANILHAS com 3 ABAS cada.

Ao final, essas 3 PLANILHAS se transformarão em apenas 1, ou seja será apenas 1 PLANILHA COM NO MINIMO 9 ABAS.

Estive pensando e para que nao seja uma planilha com muitas ABAS eu gostaria de saber se é possivel alterar o codigo para que ele ABRA em um local x da rede essas ABAS (planilhas) a partir de um endereço de uma celula e faça todo o trabalho que preciso????

Abaixo segue parte do codigo.

Sub FORMATAR()

TEMPO_INI = Time
x_ABA = "PROCESSOS TRABALHISTAS"

ULTIMA_LINHA_GERAL = Sheets("BASE TRABA ATUAL").Range("B1048576").End(xlUp).Row

Sheets("PROCESSOS TRABALHISTAS").Select
ULTIMA_LINHA_CONT = Sheets("PROCESSOS TRABALHISTAS").Range("A1048576").End(xlUp).Row

If ULTIMA_LINHA_CONT = 5 Then
   ULTIMA_LINHA_CONT = 6
End If

x_ROWS = "6:" & ULTIMA_LINHA_CONT
Rows(x_ROWS).Select
Rows(x_ROWS).ClearContents
'Selection.Delete Shift:=xlUp

ULTIMA_LINHA_CONT = Sheets("PROCESSOS TRABALHISTAS").Range("A1048576").End(xlUp).Row
    
If ULTIMA_LINHA_CONT = 5 Then
   ULTIMA_LINHA_CONT = 6
End If

Sheets("BASE TRABA ATUAL").Select

Status = False
n_IMP = 4
NUMERADOR = 1
POSSIVEL = Sheets("PROCESSOS TRABALHISTAS").Cells(2, 7).Value
PROVAVEL = Sheets("PROCESSOS TRABALHISTAS").Cells(3, 7).Value


For n_IMP = 8 To ULTIMA_LINHA_GERAL
    
    DETALHE = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 3).Value
    
    If DETALHE = "ATIVO" Then
       Status = True
    End If
    
    If DETALHE = "ENCERRADO" Then
       Status = False
    End If
    
    Sheets("PROCESSOS TRABALHISTAS").Select
    
    If Status = True Then
    
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 1).Value = DETALHE
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 2).Value = NUMERADOR
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 3).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 19).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 4).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 8).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 5).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 13).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 6).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 14).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 7).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 5).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 9).Value = Round(Sheets("BASE TRABA ATUAL").Cells(n_IMP, 26).Value, 2)
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 13).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 36).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 14).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 30).Value
    
    PREVISAO = Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 7).Value
    VALOR = Round(Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 9).Value, 2)
    
    If PREVISAO = "POSSÍVEL" Then
    VALOR = VALOR * POSSIVEL
    End If
    
    If PREVISAO = "PROVÁVEL" Then
    VALOR = VALOR * PROVAVEL
    End If
    
    If PREVISAO = "REMOTA" Then
    VALOR = VALOR * 0
    End If
    
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 10).Value = Round(VALOR, 2)
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 11).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 27).Value
    
' If n_IMP = 976 Then
' n_STOP = 1
' End If
  
    ULTIMA_LINHA_CONT = ULTIMA_LINHA_CONT + 1
    NUMERADOR = NUMERADOR + 1
    
    End If
                
Next

Call ORDENAR
Call COMPARAR2
Call BRANCO
Call PORCENTAGEM

Call MONTA_GRADES(x_ABA)
Call MONTA_GRADES_2(x_ABA)

TEMPO_FIM = Time
Total = TEMPO_FIM - TEMPO_INI

MsgBox "ROTINA FINALIZADA EM:    " & Format(Total, "hh:mm:ss"), vbInformation, "CONTABILIDADE CORPORATIVA"


End Sub
 
Postado : 18/02/2016 11:48 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

JokerPot,

Boa tarde!

Sim, é possível!

Basta colocar o caminho completo onde está o arquivo a ser aberto, juntamente com o nome do arquivo, no comando Open. Mais ou menos assim:

    Workbooks.Open ("Z:D001POP03DiversosControle FinanceiroOutrosTeste.xlsx")

Se preferir colocar o nome do caminho da rede e o nome do arquivo em uma célula, por exemplo A1, você pode fazer assim:

    Workbooks.Open (ActiveWorkbook.Sheets("Plan1").Range("A1").Value)

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 18/02/2016 1:58 pm
(@jokerpot)
Posts: 132
Estimable Member
Topic starter
 

Wagner Bom Dia!

Obrigado pela ajuda.

Tenho uma duvida.

Como faço para referenciar a planilha aberta neste parte do cogido com 2 planilhas distintas???

 If Status = True Then
    
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 1).Value = DETALHE
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 2).Value = NUMERADOR
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 3).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 19).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 4).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 8).Value
    Sheets("PROCESSOS TRABALHISTAS").Cells(ULTIMA_LINHA_CONT, 5).Value = Sheets("BASE TRABA ATUAL").Cells(n_IMP, 13).Value
 
Postado : 19/02/2016 7:29 am
(@mprudencio)
Posts: 2749
Famed Member
 

Eu costumo declarar uma variavel

Dim W as worksheet

'Insira essa linha logo apos a abertura do arquivo

Set W = activeworkbook

assism vc pode selecionar planilha pela variavel

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 19/02/2016 7:53 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Não sei se entendi corretamente mas... para referenciar arquivos diferentes ou planilhas (abas) diferentes, você deve sempre utilizar o nome completo do arquivo.

Exemplo:

Workbooks("Controle Financeiro.xlsm").Sheets ("Plan1").Range ("A1").Value

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 19/02/2016 11:18 am