2014-02-28 34 views
1

我有一個外部提供給我的數據庫。不幸的是,他們錯誤地做了一堆字段備忘錄文本,而不是簡短的文本(我需要做JOINs的字段),似乎無意糾正他們的錯誤(畢竟這是英國政府的數據庫)。通過批處理文件(或類似文件)在Access上運行VBA

我寫了一些VBA將許多備註字段轉換爲短文本。

我會一直收到此數據庫的新版本,所以我無法將轉換腳本存儲在數據庫中。

爲了節省一點時間,有沒有辦法在數據庫上使用類似.bat文件的方式運行這個vba腳本?

我知道,比如,我可以通過使用.BAT開放接入2013:

"C:\Program Files\Microsoft Office\Office15\MSACCESS.EXE" "C:\myfilepath\myfile.mdb" 

但我找不到是否VBA編寫的腳本可以通過隨後的.bat上運行很多信息打開的數據庫(特別是如果腳本尚未寫入數據庫)。

+1

您可能會考慮編寫一個外部VB.NET應用程序,該應用程序使用Access作爲ODBC數據源並進行必要的更改。這涉及在接收新版本的數據庫後立即運行可執行文件。 – infiniteRefactor

+0

不幸的是,我們沒有視覺工作室。 –

+1

@MattHall @utkuerd提出的解決方案是最好的方法(我認爲)...爲了獲得Visual Studio,有一個免費版本可用。另一種選擇(儘管我沒有嘗試過)是使用Python(免費提供),並使用[Python for Windows extensions](http://sourceforge.net/projects/pywin32/);我發現一個例子[這裏](http://win32com.goermezer.de/content/view/226/2/)關於如何在Python腳本中使用DAO(我假設你可以做的不僅僅是一個簡單的'select' ) – Barranka

回答

3

您可以將所有自定義腳本存放在您創建的另一個Access文件中。每當你從哪裏可以將這些表格鏈接到你的'腳本數據庫'並在那裏運行你的代碼時,你就會得到一個新的數據庫。你甚至可能不需要鏈接。您可能只需要到新數據庫的文件路徑。

是的,VB.NET是一個很好的解決方案,但您已經在VBA中編寫代碼,您可以將其保留在VBA中。訪問通常不關心它是否作用於其自己的文件或其他文件中的表/數據。

你可以在另一個訪問文件的句柄這樣

Dim db As DAO.Database 
Dim wksp As DAO.Workspace 
Set wksp = CreateWorkspace("AccessWorkspace", "admin", "", dbUseJet) 
Set db = wksp.OpenDatabase("your file path") 

現在你可以使用db變量,就像你有圓頂像Set db = CurrentDb。更改表DEFS,執行查詢,等等

所有你需要做的就是在一個文本框和一個文件選擇器功能的「腳本數據庫」儀表盤的形式。然後點擊一個按鈕,使用文本框中的文件路徑獲取其他數據庫的句柄。執行你已經寫好的代碼。