【发布时间】:2016-08-25 13:19:49
【问题描述】:
有没有办法通过 VBA 代码从内部复制 Access 数据库? 我试过使用 fso.CopyFile 和 FileCopy 但由于文件已经打开,它们会导致权限错误。
【问题讨论】:
-
谢谢,我使用了 shell32.dll 的库函数,它能够复制打开的文件。
有没有办法通过 VBA 代码从内部复制 Access 数据库? 我试过使用 fso.CopyFile 和 FileCopy 但由于文件已经打开,它们会导致权限错误。
【问题讨论】:
我发现您可以使用 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 即可。
【讨论】: