Notifications
Clear all

Erro ao acessar uma planilha oculta com uma macro?

11 Posts
3 Usuários
0 Reactions
2,570 Visualizações
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Galera,

Estou tentando acessar uma outra planilha com o nome JANEIRO-2016 onde a aba chamada DESENV está oculta e protegida. Ao clicar no botão na planilha com o nome FEVEREIRO-2016 da um erro ao tentar selecionar a aba da planilha JANEIRO-2016.

Sub teste()
'
Dim xl As New Excel.Application
Dim xlw As Excel.Workbook
'
' SELECIONA A ABA DESENV DA PLANILHA FEVEREIRO-2016 TORNA ELA VISÍVEL E DESPROTEGE
Sheets("Desenv").Visible = True
Sheets("Desenv").Select
Call Desproteger
'
Range("H3:M6000").Select
Selection.ClearContents
Range("H2").Select
'
' ABRE A PLANILHA JANEIRO-2016 QUE NESTE MOMENTO ESTA COM A ABA DESENV OCULTA E PROTEGIDA
Set xlw = xl.Workbooks.Open(ThisWorkbook.Path & "JANEIRO-2016.xlsm")
' *** COMO A ABA DESENV ESTÁ OCULTA E PROTEGIDA O COMANDO ABAIXO DA ERRO "método select da classe worksheet falhou"
xlw.Sheets("Desenv").Select

Existe uma forma de reexibir e desproteger a aba da planilha JANEIRO-2016???

 
Postado : 31/01/2016 8:49 am
(@mprudencio)
Posts: 2749
Famed Member
 

Melhor disponibilizar a planilha com o codigo completo.

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 : 31/01/2016 9:04 am
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Fiz novos teste, e o problema está na aba que fica oculta. Então, preciso saber como reexibir a aba enquanto a MACRO roda e ocultar ela novamente no fim da execução da MACRO.

 
Postado : 31/01/2016 10:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Kaleo

Essa parte do código que faz reexibir a planilha " Desenv", basta aplicar um código igual, trocando o nome da planilha, sendo que o Caal executa a macro que desprotege a planilha.

Sheets("Desenv").Visible = True
Sheets("Desenv").Select
Call Desproteger

[]s

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

 
Postado : 31/01/2016 12:34 pm
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Patropi!

Infelizmente não funciona, como estou a planilha FEVEREIRO aberta estes comandos atuam sobre ela e não na planilha que quero abrir que é a JANEIRO.

 
Postado : 31/01/2016 5:28 pm
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Segue em anexo as planilhas...

O arquivo JANEIRO esta com a planilha DESENVE oculta. Abram o arquivo FEVEREIRO e na planilha FLUXO na célula A1 criei o botão que executa a MACRO.

Quando a planilha DESENV no arquivo JANEIRO não está oculta a MACRO funciona perfeitamente, mas quando ela está oculta da o erro.

 
Postado : 31/01/2016 5:50 pm
(@mprudencio)
Posts: 2749
Famed Member
 

O erro esta nesta linha qdo vc carrega a variavel xlw nesta linha

Set xlw = xl.Workbooks.Open(ThisWorkbook.Path & "2016 - JANEIRO.xlsm")

sua referencia é a planilha janeiro, e assim ela causa o erro qdo vc tenta selecionar a planilha ela causa erro.

Sendo assim troque a linha acima por esta

Set xlw = xl.Workbooks.Open(ThisWorkbook.Path & "2016 - FEVEREIRO.xlsm")

Seu codigo completo fica assim

Sub teste()
'
    Dim xl  As New Excel.Application
    Dim xlw As Excel.Workbook
'
    Sheets("Desenv").Visible = True
    Sheets("Desenv").Select
    Call Desproteger
'
    Range("H3:M6000").Select
    Selection.ClearContents
    Range("H2").Select
'
    xLin_aux = 2
'
    xLin = 2
    xCol = 1
'
    Data_Ini = Sheets("Balanço").Cells(3, 1).Value
'
    Set xlw = xl.Workbooks.Open(ThisWorkbook.Path & "2016 - FEVEREIRO.xlsm")
'    ThisWorkbook.Sheets("Desenv").Unprotect "v"
'    ThisWorkbook.Sheets("Desenv").Visible = xlSheetVisible
'
   
    xlw.Sheets("Desenv").Select
'
    Do While xLin < 6001
        
        xLin = xLin + 1
        Data_Cel = xlw.Application.Cells(xLin, xCol).Value
        xTipo_Operacao = xlw.Application.Cells(xLin, xCol + 1).Value
        xValor = xlw.Application.Cells(xLin, xCol + 2).Value
        xBandeira = xlw.Application.Cells(xLin, xCol + 3).Value
        xParcela = xlw.Application.Cells(xLin, xCol + 4).Value
'
        Cells(xLin_aux, 1).Select
'
        If xTipo_Operacao <> Empty Then
           If Data_Cel >= Data_Ini Then
               xLin_aux = xLin_aux + 1
               Cells(xLin_aux, xCol + 7).Value = Data_Cel
               Cells(xLin_aux, xCol + 8).Value = xTipo_Operacao
               Cells(xLin_aux, xCol + 9).Value = xValor
               Cells(xLin_aux, xCol + 10).Value = xBandeira
               Cells(xLin_aux, xCol + 11).Value = xParcela
            End If
        Else
            xLin = 6001
        End If
    Loop
'
    xlw.Close False
    Set xlw = Nothing
    Set xl = Nothing
'
    Call Proteger
    Sheets("FLUXO").Select
    Range("B1").Select
    Range("A2").Select
    Sheets("Desenv").Visible = False
'
End Sub

.....

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 : 31/01/2016 6:02 pm
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Marcelo Prudencio...

O arquivo FEVEREIRO na planilha DESENV a partir das células H tem que ser alimentado através do arquivo JANEIRO também da planilha DESENVE mas a partir da célula A.

Se eu trocar por FEVEREIRO a MACRO vai ler o próprio arquivo e não o arquivo JANEIRO.

 
Postado : 31/01/2016 6:21 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Neste caso a planilha desenv de janeiro deve ser exibida novamente

Pode fazer Assim

xlw.Sheets("Desenv").visible = true
    xlw.Sheets("Desenv").Select


E depois que terminar a leitura ( nao analisei isso no codigo)

Coloca essa instrução

xlw.Sheets("Desenv").visible = False

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 : 31/01/2016 7:03 pm
Kaleo_rs
(@kaleo_rs)
Posts: 0
Trusted Member
Topic starter
 

Marcelo Prudencio.

Muito obrigado funcionou.

 
Postado : 01/02/2016 6:17 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

kaleo

Você ja postou várias dúvidas e nunca agradeceu ninguém clicando na mãozinha e não clicou no V (vezinho verde) da resposta que atendeu, para marcar o tópico como resolvido.

Favor clicar no link abaixo pra tomar conhecimento.

viewtopic.php?f=7&t=16757

[]s

Patropi - Moderador

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

 
Postado : 01/02/2016 10:48 am