我只想创建访问的备份文件,因此前端的用户可以按下按钮并创建备份。
我正在尝试此代码,这使得数据库的副本,但也复制我的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提供的解决方案
我修改了以下代码
功能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
当我执行此操作时,会显示一个弹出窗口
如果我点击选项中的任何一个,代码就会出错。
Runtime error 3024
Copy object action was canceled
答案 0 :(得分: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
答案 1 :(得分:1)
默认情况下,Access不允许启用新创建的目标数据库,因此会出现错误。如果您创建目标并确保通过信任中心设置启用它,则可以解决此问题(但这也意味着您需要重新考虑如何通过添加日期和时间来重命名数据库)。