2016-02-29 38 views
0

我只是想創建備份訪問文件,因此來自前端的用戶可以按按鈕並創建備份。用於創建訪問備份的VBA代碼

我試着這個代碼,這使得數據庫的副本,但也複製我的VBA代碼。我只想複製表格。沒有形式,沒有報道。

是否可以從VBA壓縮它?

Function fMakeBackup() 

Dim Source As String 
Dim Target As String 
Dim retval As Integer 


Source = CurrentDb.Name 

Target = "C:\Users\Documents\FileName" 
Target = Target & Format(Date, "dd-mm") & " " 
Target = Target & Format(Time, "hh-mm") & ".accdb" 

' create the backup 
retval = 0 
Dim objFSO As Object 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
retval = objFSO.CopyFile(Source, Target, True) 
Set objFSO = Nothing 

End Function 

更新1 使用由@Sergey

給定溶液I修改後的代碼如下

功能fMakeBackup()

Dim Target As String 
Target = "C:\Users\adarsh.madrecha\Downloads\Delete " 
Target = Target & Format(Date, "dd-mm") & " " 
Target = Target & Format(Time, "hh-mm") & ".accdb" 

' create the Blank file for copying 
Access.DBEngine.CreateDatabase Target, DB_LANG_GENERAL 

Dim tdf As TableDef  
For Each tdf In CurrentDb.TableDefs 
    DoCmd.CopyObject Target, , acTable, tdf.Name 
Next 

End Function 

當我執行此,彈出是如圖所示

Access Security Box

如果我點擊任一選項,代碼會給出錯誤。

Runtime error 3024 
Copy object action was canceled 

回答

2

您可以將數據庫對象逐個複製到遠程數據庫。例如,對於表格,使用如下代碼:

DoCmd.CopyObject TargetFileName, "MyLocalTableName", acTable, "MyRemoteTableName" 

應該已經創建了目標文件。

對於應對所有本地表到遠程數據庫:

Dim tdf As TableDef 

For Each tdf In CurrentDb.TableDefs 
    DoCmd.CopyObject TargetFileName, tdf.Name, acTable, tdf.Name 
Next 
+0

謝謝,但是當我運行你的代碼,得到'運行時錯誤3024''無法找到文件。我的代碼還需要另外一行代碼嗎?我是VBA編程新手。 –

+1

正如我所說的「目標文件應該已經創建」,所以你需要先手動創建它,或者使用已經使用的過程從空模板複製 –

+0

我使用'Access.DBEngine.CreateDatabase Target,DB_LANG_GENERAL'創建了一個空白訪問數據庫文件但是仍然出現'運行時錯誤3024''複製對象操作被取消' –

1

默認情況下,訪問將不允許啓用您的新創建目標數據庫,因此,你所得到的錯誤。如果您創建目標並確保通過信任中心設置啓用了目標,則可以通過此問題(但這也意味着您需要重新考慮如何通過添加日期和時間來重命名數據庫)。