我在另一个问题中得到了我需要的答案:
为什么我不能使用 VBscript 在 DAO.DBEngine.36 中使用“CompactDatabase”?
用户“HansUp”给了我以下代码:
Dim objFSO
Dim objEngine
Dim strLckFile
Dim strSrcName
Dim strDstName
Dim strPassword
strLckFile = "C:\Access\webforums\foo.laccdb"
strSrcName = "C:\Access\webforums\foo.accdb"
strDstName = "C:\Access\webforums\compacted.accdb"
strBackup = "C:\Access\webforums\foobackup.accdb"
strPassword = "foo"
Set objEngine = CreateObject("DAO.DBEngine.120")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not (objFSO.FileExists(strLckFile)) Then
If (objFSO.FileExists(strBackup)) Then
objFSO.DeleteFile strBackup
End If
If (objFSO.FileExists(strDstName)) Then
objFSO.DeleteFile strDstName
End If
objFSO.CopyFile strSrcName, strBackup
''dbVersion120 = 128
objEngine.CompactDatabase strSrcName, strDstName, , 128, ";pwd=" & strPassword
objFSO.DeleteFile strSrcName
objFSO.MoveFile strDstName, strSrcName
End If 'LckFile
(当我出于某种原因复制代码时,代码有一些额外的换行符,如果您愿意,请点击本文开头的链接以获得更简洁的代码版本。)
它将 Access 2007 数据库压缩为 Access 2007 数据库(无格式更改),它还修复了数据库中的任何损坏(不一致的状态)!正是我想要的。=)