iT邦幫忙

0

請問如何用EXCEL VBA 壓縮及修護 .accdb

這是我找到的方法,但是需安裝 ACCESS 2007
請教各位大大是否有其他方式?(不需安裝 ACCESS 2007)
謝謝

'設定引用項目 Microsoft Access X.X Object Library
Dim objAcc As New Access.Application
Call objAcc.CompactRepair("D:\原資料庫.accdb, "D:\TEMP.LTC", False)
Kill "D:\原資料庫.accdb" '刪除舊資料庫
Name "D:\TEMP.LTC" As "D:\原資料庫.accdb" '變更資料庫名稱及位置

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
smartleos
iT邦新手 3 級 ‧ 2012-11-02 15:52:51
最佳解答

可以透過 Microsoft Jet Replication Objects (JRO) 的 JetEngine.CompactDatabase 方法。

請記得備份原始的 Accdb 檔案。

<pre class="c" name="code">
Public Sub CompactAndEncrypt()
   Dim je As New JRO.JetEngine

   ' Make sure that a file doesn't exist with the name of
   ' the compacted database.
   If Dir("C:\Program Files\Microsoft Office\" & _
      "Office\Samples\Northwind2.mdb") <> "" Then Kill _
      "C:\Program Files\Microsoft Office\Office\Samples\Northwind2.mdb"

   ' Compacts and encrypts version Northwind database.
   je.CompactDatabase _
   "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=C:\Program Files\Microsoft Office\" & _
      "Office\Samples\Northwind.mdb", _
   "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=C:\Program Files\Microsoft Office\" & _
      "Office\Samples\Northwind2.mdb;" & _
   "Jet OLEDB:Encrypt Database=True"

End Sub

參考:
http://msdn.microsoft.com/en-us/library/office/bb213241(v=office.12).aspx
http://msdn.microsoft.com/en-us/library/office/bb237197(v=office.12).aspx

看更多先前的回應...收起先前的回應...
ltc09 iT邦研究生 5 級 ‧ 2012-11-02 22:52:48 檢舉

您好
範例中好像只支援.mdb
沒有支援.accdb
謝謝

外獅佬 iT邦大師 1 級 ‧ 2012-11-03 02:51:36 檢舉

把provider改掉應該就可以了
accdb connection Sring

ltc09 iT邦研究生 5 級 ‧ 2012-11-03 08:26:59 檢舉

wiselou大大您好
連結好像有問題
麻煩您檢查一下
謝謝

ted99tw iT邦高手 1 級 ‧ 2012-11-03 08:30:31 檢舉

ltc09提到:
連結好像有問題

白帖連結好像有問題,不用改了沒關係...毆飛

ltc09 iT邦研究生 5 級 ‧ 2012-11-04 18:37:37 檢舉

http://msdn.microsoft.com/en-us/library/office/bb237197(v=office.12).aspx

節錄網頁最後一段話
Compacting Access 2007 DataBase file format. (.accdb)
I think this does not work for Access 2007, since in the example, the database file extension is "mdb". For compacting Access 2007 database file format, you should use the "CompactDatabase" method of the "Microsoft.Office.Interop.Access.Dao.DBEngine" object.

GOOGLE 翻譯
壓縮Access 2007數據庫文件格式。 (ACCDB)
我認為這並不適用於Access 2007中,因為在這個例子中,數據庫文件的擴展名是“MDB”。壓縮Access 2007數據庫文件格式,你應該使用“CompactDatabase”的方法,“Microsoft.Office.Interop.Access.Dao.DBEngine”對象。

我要發表回答

立即登入回答