Página 1 de 1

Erro 1004 - Sheet Bloqueada

Enviado: 11 Abr 2017 às 12:57
por erickhenrique
Senhores,

Minhas Sheets e WorkBook são protegidos por senha, com acesso simultâneo compartilhado.
Em determinada parte do código, desejo desativar alguns objetos IMAGE, caso o auto filtro esteja sendo aplicado à planilha...
Quando a Sheet encontra-se desbloqueada, o código não apresenta erro. Como posso resolver isso visto que não posso desbloquear a Sheet pois teria que remover o acesso simultâneo para os demais utilizadores?

Segue o código:

Dim rng As Range
Set rng = ActiveSheet.AutoFilter.Range

If rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 1 = 50 Then
ActiveSheet.Shapes.Range(Array("Image1", "Image2", "Image3")).Select
With Selection
.Enabled = True
End With
Else
ActiveSheet.Shapes.Range(Array("Image1", "Image2", "Image3")).Select
With Selection
.Enabled = False
End With
End If

Re: Erro 1004 - Sheet Bloqueada

Enviado: 11 Abr 2017 às 13:34
por osvaldomp
Experimente após inserir a linha em vermelho abaixo.
...
Set rng = ActiveSheet.AutoFilter.Range
ActiveSheet.Protect "SuaSenha", UserInterfaceOnly:=True
If rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 1 = 50 Then
...

Re: Erro 1004 - Sheet Bloqueada

Enviado: 11 Abr 2017 às 15:21
por erickhenrique
Prezado Osvaldo,

Obrigado pela atenção.
Implementei sua sugestão e funcionou enquanto a SHEET e o WorkBook estão bloqueados. Todavia, quando eu COMPARTILHO A PASTA DE TRABALHO, ao executar o código, apresenta Erro em tempo de execução 1004: ERRO DE DEFINIÇÃO DE APLICATIVO OU DE DEFINIÇÃO DE OBJETO.

Segue o código:

Private Sub Worksheet_Calculate()
Dim rng As Range

Set rng = ActiveSheet.AutoFilter.Range

ActiveSheet.Protect "sgqcalibracao", UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True, AllowUsingPivotTables:=True

If rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 1 = 50 Then

If Shapes.Range("Image1").Visible = False Then
ActiveSheet.Shapes.Range(Array("Image1", "Image2", "Image3")).Visible = True
End If

ElseIf Shapes.Range("Image1").Visible = True Then

ActiveSheet.Shapes.Range(Array("Image1", "Image2", "Image3")).Visible = False

End If
End Sub

Re: Erro 1004 - Sheet Bloqueada

Enviado: 11 Abr 2017 às 15:37
por osvaldomp
Olá, Henrique.

A mensagem de erro é acompanhada pelo botão "Depurar"? Se sim, ao clicar nele, qual a linha do código que fica destacada em amarelo?

Erro 1004 - Sheet Bloqueada

Enviado: 11 Abr 2017 às 16:02
por erickhenrique
Olá Osvaldo,

Não!
Botão DEPURAR e CONTINUAR estão desativados. Isso é bom ou ruim? :shock:

Re: Erro 1004 - Sheet Bloqueada

Enviado: 11 Abr 2017 às 17:07
por osvaldomp
Talvez estejam desativados em decorrência do compartilhamento do arquivo.

Vi que você acrescentou alguns parâmetros ao comando que eu sugeri. Experimente remover os parâmetros do comando e marque aqueles parâmetros na Caixa de Diálogo que é exibida ao proteger a planilha.

Re: Erro 1004 - Sheet Bloqueada

Enviado: 12 Abr 2017 às 11:08
por erickhenrique
Prezado Osvaldo, bom dia

Foi necessário incluir os parâmetro de AUTO FILTRO e CENÁRIOS para que estas funções permaneçam disponíveis ao usuário, MESMO DEIXANDO HABITADO NO MOMENTO DE BLOQUEAR A SHEET. Isso se fez necessário pois a linha de código que você sugeriu desabilitou o Auto Filtro...

Ao remover estes parâmetros, eu não consigo aplicar o Auto Filtro na Sheet.

Sim, o fato de o botão DEPURAR ficar desabilitado é que a planilha está compartilhada.

Está travando na linha ActiveSheet.Protect "sgqcalibracao", UserInterfaceOnly:=True, descobri fazendo o que segue:

MsgBox "1"
Dim rng As Range
MsgBox "2"
Set rng = ActiveSheet.AutoFilter.Range
MsgBox "3"
ActiveSheet.Protect "sgqcalibracao", UserInterfaceOnly:=True
MsgBox "4"
If rng.Columns(2).SpecialCells(xlCellTypeVisible).Count - 1 = 50 Then
MsgBox "5"
If Shapes.Range("Image1").Visible = False Then
MsgBox "6"
ActiveSheet.Shapes.Range(Array("Image1", "Image2", "Image3")).Visible = True
MsgBox "7"
End If
MsgBox "8"
ElseIf Shapes.Range("Image1").Visible = True Then
MsgBox "9"
ActiveSheet.Shapes.Range(Array("Image1", "Image2", "Image3")).Visible = False
MsgBox "10"
End If
MsgBox "11"

Exibiu o MSGBOX "3" e APRESENTOU ERRO!

Re: Erro 1004 - Sheet Bloqueada

Enviado: 12 Abr 2017 às 18:32
por osvaldomp
Olá, Henrique.
Não sei se você já tentou este arranjo: colocar os comandos Unprotect e Protect, este com os parâmetros. Algo assim:

Dim rng As Range
ActiveSheet.Unprotect "sgqcalibracao"
Set rng = ActiveSheet.AutoFilter.Range
...
...
End If
ActiveSheet.Protect "sgqcalibracao", UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True, AllowUsingPivotTables:=True

End Sub

Re: Erro 1004 - Sheet Bloqueada

Enviado: 13 Abr 2017 às 18:50
por erickhenrique
Osvaldo, boa noite

Continua apresentando erro 1004 "Em tempo de execução",

Pelo que estou percebendo, o comando UnProtect não pode ser executado quando a pasta de trabalho está compartilhada.

Estou anexando o arquivo Excel para testes. A sheet e a pasta estão protegidas e a senha é "" (em braco, vazio).
Após aplicar o Filtro, clicar no "Botão 1".

Obrigado pela atenção.

Re: Erro 1004 - Sheet Bloqueada

Enviado: 16 Abr 2017 às 19:31
por alexandrevba
Boa noite!!

Qual versão do office você está usando?

Independente da versão, leia o artigo abaixo:
https://support.office.com/en-us/articl ... P010342985
Write, record, change, view, or assign macros

You can run existing macros that don't access unavailable features. You can also record shared workbook operations into a macro stored in another nonshared workbook.
Você não vai conseguir acessar alguns recursos.

Att

Erro 1004 - Sheet Bloqueada

Enviado: 17 Abr 2017 às 07:39
por erickhenrique
Caro Alexandre, bom dia

Obrigado pelo esclarecimento. Conteúdo com explicações rápidas e diretas!

Eu estou me utilizando do código abaixo para identificar se todos os meus registros (10 registros neste caso) estão sendo exibidos. Caso sim, o AUTO FILTRO não está aplicado. Caso não, o AUTO FILTO foi aplicado.

If rng.Columns(4).SpecialCells(xlCellTypeVisible).Count - 1 = 10 Then

Conhece alguma outra forma de se certificar sobre a aplicação do AUTO FILTRO numa sheet, que possa ser executada numa Pasta Compartilhada? :roll:

Obrigado pela atenção!

Re: Erro 1004 - Sheet Bloqueada

Enviado: 17 Abr 2017 às 07:47
por erickhenrique
Ah, respondendo a pergunta: Esta Pasta de Trabalho vai rodar em Excell 2007 e versões superiores.

Re: Erro 1004 - Sheet Bloqueada

Enviado: 17 Abr 2017 às 08:22
por alexandrevba
Bom dia!!

Conforme o artigo da própria microsoft e segundo alguns especialistas da ferramenta, o ideal seria ou abandonar o recurso de compartilhamento para casos com macros ou importar e exportar essas informações para outro arquivo.
Tempo atrás eu presei fazer algo assim:
Para evitar uma gama de problemas e visto que a versão que eu usava no trabalho é a standard (não vem com access ou muito mais).

Eu tive que criar varias guias onde as mesma transferiam para um único arquivo os dados.
Talvez nem tudo precise ficar no arquivo compartilhado.

Att

Re: Erro 1004 - Sheet Bloqueada

Enviado: 18 Abr 2017 às 10:11
por erickhenrique
Pessoal, bom dia

Como a quantidade de registros por Sheet é fixa, resolvi o problema utilizando a função SUBTOTAL(3;intervalo de células). Caso o SUBTOTAL for diferente da quantidade de registros, o AUTO FILTRO foi aplicado. 8-)

Obrigado pela atenção