使用 VBA 代码从内部复制 Access 数据库

Posted

技术标签:

【中文标题】使用 VBA 代码从内部复制 Access 数据库【英文标题】:Copy Access Database using VBA code from within 【发布时间】:2016-08-25 13:19:49 【问题描述】:

有没有办法通过 VBA 代码从内部复制 Access 数据库? 我试过使用 fso.CopyFile 和 FileCopy 但由于文件已经打开,它们会导致权限错误。

【问题讨论】:

***.com/questions/39127550/… 谢谢,我使用了 shell32.dll 的库函数,它能够复制打开的文件。 【参考方案1】:

我发现您可以使用 shell32.dll 函数来复制打开的文件。我什至添加了进度条功能。这是代码

Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Public Const FO_COPY = &H2
Public Const FOF_SIMPLEPROGRESS = &H100

Public Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long
End Type

Public Sub VBCopyFile(ByRef strSource As String, ByRef strTarget As String)
     Dim op As SHFILEOPSTRUCT

     With op
       .wFunc = FO_COPY
       .pTo = strTarget
       .pFrom = strSource
       .fFlags = FOF_SIMPLEPROGRESS
    End With

    '~~> Perform operation
    SHFileOperation op
End Sub

我只需要使用适当的参数调用 VBCopyFile Sub 即可。

【讨论】:

以上是关于使用 VBA 代码从内部复制 Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

从一个 Access 数据库复制到另一个 (VBA)

VBA/SQL ACCESS:将查询结果复制到其他访问数据库中的表

MS Access VBA从Web浏览器控件的内容中获取数据

VBA中的Excel过滤和复制

从 Access VBA 发送 SQL 查询时停止运行

Access-vba复制数据错误