2012-03-26 22 views
0

CopyFileWをVBAから呼び出すと、コピー先のフォルダが存在しないため、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

GetLastErrorは、CopyFileが返された直後に呼び出す必要があります。それらの間に他の関数を呼び出すだけでなく、VBランタイムは他の関数をinteropレイヤの一部として呼び出すこともあります。 –

答えて

0

Err.LastDllErrorを使用し、VBAからGetLastErrorを呼び出さないでください。

関連する問題