Я нашел, что вы можете использовать функцию 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 с соответствующими параметрами, и это сработало.
http://stackoverflow.com/questions/39127550/copyfile-of-current-project-that-works-in-shared-mode-gives-permission-denied – Andre
Спасибо, я использую библиотечную функцию из shell32.dll и он смог скопировать открытый файл. –