... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Erro em tempo de execução 91

Usuário Madson:

Avelino,

quando tento utilizar o objRibbon.Invalidate para revalidar a ribbon, depois de carregada, recebo a seguinte mensagem:

Erro em tempo de execução "91";
A variável do objeto ou a variável do bloco "With" não definida
.

Sendo que a variável objRibbon é definida: Public objRibbon As IRibbonUI e depois setada pela rotina fncRibbon(ribbon As IRibbonUI).

Poderia me dar uma luz, de como resolver isso ou me dizer onde estou errando para que eu possa corrigir?

Suporte:

Madson,

esse erro já aconteceu na primeira tentativa de rodar o aplicativo com a ribbon ou aconteceu depois de alguma alteração específica no projeto? Você especificou o nome da ribbon em Opções > Banco de Dados Atual> Nome da faixa de Opções ?

- Abra o seu projeto no Modo Design.

- Abra o VBA e no menu DEPURAR clique em COMPILAR. Se encontrar algum erro, corrija. Repita o COMPILAR até que não encontre mais erro.

Usuário Madson:

O erro ocorre depois que a ribbon foi carregada, quando tento fazer uma alteração.  Exemplo: trocar de usuário ou fazer uma mudança no Xml da ribbon com o usuário logado.

A ribbon está setada em Opções>Bando de dados atual>Nome na faixa de opções.

PS.: o nome da tabela, onde estão gravadas as ribbons, não é a padrão do Microsoft Access (USysRibbons).  Coloquei um nome próprio: pds_ribbon.

Estou te enviando um arquivo exemplo.

Suporte:

Madson,

o erro 91 acontece quando não é possível ter acesso a ribbon carregada na memória.

Segue o seu arquivo exemplo adaptado para o teste.

- abra o aplicativo - uma tela de login será aberta, com a ribbon desabilitada;
- clique no botão logar e sua ribbon será carregada normalmente;
- clique no botão agendar da ribbon;
- um formulário será aberto;
- clique no botão do formulário e observe a Guia Configurações da ribbon sendo visualizada ou não.

Vamos testar agora uma simulação do erro 91:

- abra o código do botão do formulário de login e altere a posição da linha em vermelho para a última posição.

Private Sub Comando0_Click()
objRibbon.Invalidate
DoCmd.Close acDefault
DoCmd.ShowToolbar "ribbon", acToolbarYes 'posicione esta linha aqui no final
End Sub

- salve e feche o aplicativo;
- reabra o aplicativo;
- clique no botão Logar e veja o erro acontecendo.  O motivo é que a ribbon não está disponível (está oculta) no momento da chamada do Invalidate.

Vamos a outra simulação do erro 91:

- retorne com a posição da linha que alteramos para a parte superior do código.
- vá em Arquivo > Opções > Banco de Dados Atual e apague o campo Nome da Faixa de Opções;
- feche o aplicativo;
- retorne a abrir o aplicativo. A ribbon não estará disponível, apesar de ser carregada pela função da    macro AutoExec;
- abra o formulário frmTeste. Clique no botão Seta Guia Configurações e veja o erro 91 ocorrido pelo fato da ribbon não estar disponível naquele momento.

Usuário Madson:

Obrigado Avelino, percebi que a referência à ribbon havia sido perdida, achei que fosse necessário revalidar a carga do objeto: Set objRibbon = ribbon

Bem, coloquei o código DoCmd.ShowToolbar "ribbon",acToolbarYes na frente do objRibbon.Invalidate e a atualização passou.

Estava ocorrendo esse problema também, quando havia a troca do usuário na tela de login.  Como fiz a mesma alteração no código, o erro não está mais acontecendo.

Mais uma vez obrigado.

Download

 


 

 


Não há comentário

Envie seu comentário: