2016-10-28 61 views
1

我一直在研究如何自行執行將刪除當前數據庫文件的代碼。我遇到了一個代碼片段here,它完全適用於Excel,但這似乎並沒有很好地轉化爲Access。如何使用自己執行的代碼殺死CurrentDB

Sub KillMeExcel() 
With ThisWorkbook 
    .Saved = True 
    .ChangeFileAccess Mode:=xlReadOnly 
    Kill .FullName 
    .Close False 
End With 
End Sub 

似乎有不爲接入一個.ChangeFileAccess模式,所以我並不比進一步得到。

是否可以使用VBA代碼刪除當前數據庫?

+0

我一直在使用文件SystemObject,並嘗試過,但沒有運氣。這樣做的想法是我有用戶需要通過電子郵件發送整個訪問文件。我想確保一旦他們發送了電子郵件,他們不會意外繼續處理該數據庫文件。 – rohrl77

+0

有沒有辦法使用SaveAs方法將數據庫保存爲新名稱,然後刪除原始數據?我一直無法在Access中找到SaveAs命令。在Excel中,這很容易。 – rohrl77

+0

感謝您對此的意見! – rohrl77

回答

5

這是不可能的。你會得到一個權限被拒絕錯誤 - 有一個原因。

+0

這是最終答案嗎?哎喲。然後我需要找到解決方法。 – rohrl77

+0

是的,你唯一的選擇就是打開一個外部的實例/腳本,如André所示,做骯髒的工作。 – Gustav

+0

我得和你們兩個去。 – Fionnuala

6

我也會警惕通過郵件發送一個開放和正在運行的Access數據庫。

我的解決辦法是:

Launch an external vbs 
DoCmd.Quit 

,並在VBS:

  • 等待一個循環,直到.LDB/.laccdb文件消失(即DB是 關閉)
  • 發送電子郵件,其中附加分貝
  • 刪除DB
+0

我無權訪問DB將運行的環境。他們不在共享網絡上的事實是造成這種醜陋解決辦法的主要原因。 – rohrl77

+0

隨着@古斯塔夫,你同意這是不可能的,我會把這個答案作爲最終的答案。感謝所有這些! – rohrl77

+0

.vbs是一個簡單的文本文件,您可以通過Access VBA代碼實時創建。但這可能會更醜陋。 :) – Andre