Como se descompila e recompila uma aplicação de banco de dados?
6 answers
A resposta Aceite é óptima, mas é um pouco impraticável criar um atalho para cada banco de dados.
Pode gravar isto como um módulo powershell.
#for use with MSAccess 2010
Function Decompile-AccessDB{
param ([string]$dbFileName)
[string]$argument = '"' + $dbFileName + '"' + "/Decompile"
Start-Process -FilePath 'C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE' -ArgumentList $argument
}
Então chama-lhe assim:
Decompile-AccessDB -Path "C:\Path\to\some.accdb"
Isto permite-lhe descompilar rápida e facilmente qualquer db da linha de comando power shell.
Lembre-se que ainda precisa de manter a tecla Shift carregada quando executar isto para contornar o arranque da aplicação.
Para descompilar uma base de dados de acesso terá de criar um atalho com os seguintes elementos:
- localização do executável MS Access (MSACESS.exe)
- localização da base de dados que gostaria de descompilar
- a bandeira /descompilar
Todos juntos, então, o atalho seria parecido com o seguinte:
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "C:\users\tim\documents\Mydatabase.mdb" /decompile
Obviamente, os caminhos serão diferentes no teu sistema.
Eu recomendaria fazer uma cópia de segurança da sua base de dados antes de executar comando.
Se tiver algum código de arranque na sua base de Dados, deverá manter carregada a chave shift para contornar a execução do código de arranque.
Assim que a base de dados Abrir, você pode compactar e reparar a base de dados para garantir o melhor desempenho.
Após o compacto e a reparação, poderá recompilar o código VBA abrindo qualquer módulo e usando o comando Debug Compile [DatabaseName]
.
Se isto é algo que você quer fazer frequentemente, você pode criar um atalho "Access Descompile" no seu SendTo Menu. Logo que tenha este atalho no Menu SendTo, poderá carregar com o botão direito em qualquer base de dados de acesso e seleccionar "enviar para --> Access Descompile", o que é muito mais fácil do que ter de criar um atalho para a base de dados específica.
Siga estes passos para personalizar o menu Enviar para com um atalho de descompilação de acesso
- crie um atalho para o executável de acesso.
-
Adicione a bandeira / descompile no alvo para o atalho. O atalho ficará assim.:
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" /decompile
-
Abra o Windows Explorer e cole o seguinte na barra de endereços:
%APPDATA%\Microsoft\Windows\SendTo
Copia o atalho que criou para a pasta SendTo.
O atalho Access Descompile estará agora disponível para uso.
Para invocar o atalho de descompilação do acesso, carregue com o botão direito numa base de dados de acesso no Windows Explorer e seleccione "Enviar para --> aceder Descompile". Certifique-se de manter a tecla shift carregada para ignorar qualquer arranque código na base de dados.
Faz uma cópia da tua base de dados.
Compacta a tua base de dados.
Usando o atalho criado com as instruções do Tim, abra a sua base de dados.
Fecha essa instância de acesso.
Abra uma nova instância de acesso e abra a base de dados que acabou de descompilar, mas certifique - se que contorna todo o arranque Código (i.e., mantenha a tecla shift carregada). Se você não fizer isso, então você pode muito bem voltar para o Passo 3 e tentar novamente, uma vez que se o código de inicialização correr, o seu código irá recompilar antes que você esteja pronto para fazê-lo.
Compactar a base de dados descompilada (e certifique-se que mantém a tecla shift carregada de modo a que ela contorne o código de arranque; veja o #5).
Abra o VBE e no menu Depurar, escolha COMPILE [nome do projecto].
No menu ficheiro, grava a projecto.
Compacto outra vez.
Porque você não quer apenas descompilar o VBA, você quer ter certeza de que todas as páginas de dados onde o código p compilado foi armazenado são completamente descartadas antes de você recompilar.
Também recomendo:
Nas opções VBE, desligue o COMPILE ON DEMAND
No VBE, adicione o botão compilar à sua barra de ferramentas.
Compilar frequentemente com esse botão na barra de ferramentas, depois de cada duas ou três linhas de código.
Eu escrevi um script VBS para automatizar o processo de descompilação. É bobagem que a Microsoft não integrou isso no Access, considerando que é uma necessidade ao desenvolver aplicações VBA-heavy.
O script localiza o MSACCESS.exe e executa o acesso com a bandeira de descompile em um banco de dados localizado no diretório pai do script, cujo nome é dado no código.
Option Explicit
Dim MSAccPath
Dim RegKey
Dim WSHShell
Dim currentDirectory
' Get MSACCESS.exe directory
RegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\" _
& "CurrentVersion\App Paths\MSACCESS.EXE\Path"
Set WSHShell = WScript.CreateObject("WScript.Shell")
' Get parent directory
MSAccPath = WSHShell.RegRead(RegKey)
currentDirectory = WSHShell.CurrentDirectory
' Decompile
WSHShell.Run Chr(34) & MSAccPath & "MSACCESS.EXE" & Chr(34) & " " & Chr(34) & currentDirectory & "\..\testdb.accdb" & Chr(34) & " /decompile"
' Clear shell var
Set WSHShell = Nothing
Basta colar este texto num documento com uma extensão .vbs
e fazer duplo-click para o executar. Acesso irá lançar, descompilar o código p compilado ("packed" code), e recompilar automaticamente a fonte VBA de volta para o código P.
Para descompilar uma base de dados de acesso:
Abra a janela corra do menu inicial, ou carregue em ganhe + R
Digite em: MSACCESS.EXE /decompile
(uma instalação adequada deve abrir a aplicação de Acesso, Você também pode fornecer o caminho completo para MSACCESS.EXE), and press OK.