O comando:
CommandBars.FindControl(Id:=2071).accDoDefaultAction 'Compactar/Reparar o próprio DB
só funcionará se
Application.CommandBars("Menu Bar").Enabled = True 'Mostrar barra de menu
Constatando:
O comando em VB para Compactar/Reparar o próprio DB, não funcionará se sua barra de menus estiver desativada, pois o Id:=2071 vai buscar nos menus o comando Compactar/Reparar, logo a ID 2071 no Access2003 é Compactar/Reparar.
OBSERVAÇÃO:
Ao fazer isso e mesmo assim continuar aparecendo:
Mensagem: "Você não pode compactar o banco de dados aberto enquanto estiver executando uma macro ou código do Visual Basic."
Faça assim:
Coloque o comando para compactar/reparar e mostrar barra de menus em:
Private Sub Form_Close()
Application.CommandBars("Menu Bar").Enabled = True 'Mostra menus
CommandBars.FindControl(Id:=2071).accDoDefaultAction 'Compacta/Repara
Application.CommandBars("Menu Bar").Enabled = False 'Esconde menus
End Sub
Não se esqueça: habilite "Caixa de controle" e "Botão fechar", em Formato de propriedade do Form que chamará o código, para SIM...
Coloque uma informação para o usuário fechar o Form, tipo: "Feche para terminar", e então o código VB será executado sem nenhuma interferência de "macro interna" do Access2003 e o seu DB será compactado/reparado e a mensagem não mais aparecerá.
Luz e Paz
Paulo César
CommandBars.FindControl(Id:=2071).accDoDefaultAction 'Compactar/Reparar o próprio DB
só funcionará se
Application.CommandBars("Menu Bar").Enabled = True 'Mostrar barra de menu
Constatando:
O comando em VB para Compactar/Reparar o próprio DB, não funcionará se sua barra de menus estiver desativada, pois o Id:=2071 vai buscar nos menus o comando Compactar/Reparar, logo a ID 2071 no Access2003 é Compactar/Reparar.
OBSERVAÇÃO:
Ao fazer isso e mesmo assim continuar aparecendo:
Mensagem: "Você não pode compactar o banco de dados aberto enquanto estiver executando uma macro ou código do Visual Basic."
Faça assim:
Coloque o comando para compactar/reparar e mostrar barra de menus em:
Private Sub Form_Close()
Application.CommandBars("Menu Bar").Enabled = True 'Mostra menus
CommandBars.FindControl(Id:=2071).accDoDefaultAction 'Compacta/Repara
Application.CommandBars("Menu Bar").Enabled = False 'Esconde menus
End Sub
Não se esqueça: habilite "Caixa de controle" e "Botão fechar", em Formato de propriedade do Form que chamará o código, para SIM...
Coloque uma informação para o usuário fechar o Form, tipo: "Feche para terminar", e então o código VB será executado sem nenhuma interferência de "macro interna" do Access2003 e o seu DB será compactado/reparado e a mensagem não mais aparecerá.
Luz e Paz
Paulo César
Última edição por infosoft em 1/10/2012, 23:24, editado 1 vez(es)