2012-03-26 229 views
0

從VBA調用CopyFileW,如下所示,使用不存在的目標文件夾給出由CopyFileW返回的值0,但GetLastError也返回0,表示操作成功。如何從失敗的CopyW操作中獲取錯誤代碼?CopyFileW返回0,但GetLastError也返回0

Dim Ret As Long 

sFrom = "\\?\UNC" & Mid(sFrom, 2) 
Ret = CopyFileW(StrPtr(sFrom), StrPtr(sTo), False) 

If Ret = 0 Then 
     Call LogErrorFilFol(GetFileFromPath(sFrom), GetFolderFromPath(sFrom), _ 
     "WCopyFile error - " & ErrorMsg(GetLastError), FileID) 
End If 
+0

CopyFile返回後必須立即調用GetLastError。你不僅可以調用其他函數,VB運行時也可能調用其他函數作爲互操作層的一部分。 – 2012-03-26 01:27:08

回答

0

不要致電GetLastError從VBA,請使用Err.LastDllError