Ett delikat problem har dykt upp. Vore bra om du postade lite kod. Har du kollat att det är just vid anropet till SHFileOperation som du får felet, coh inte någonstans i koden runt omkring? I så fall, hur har du deklarerat funktionen? Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Okej, efter att ha läst om frågan såg ja att Err.LastDllError = 6. Det betyder inte Overflow, utan "The handle is invalid". Nu vet ja inte hur mycket man kan lita på just det, men det skulle kanske kunna bero på att du inte satt SHFileOp.hwnd Några fråger:SHFileOperation
Jag använder SHFileOperation för att kopiera filer.
Rutinen som sådan funkar. I utvecklingsmiljön fungerar allt
perfekt men i kompilerat utförande får jag Err.LastDllError = 6
Overflow. Felet uppstår enbart när jag skall kopiera en specifik fil,
med andra filer fungerar det.
Mitt redan något grånande hår blir gradvis gråare om ingen lösning
dyker upp.Sv: SHFileOperation
MSSv: SHFileOperation kod
Public Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Public Function ShellCopy(FileSource As String, FileDestination As String) As Long
Dim sFileNames As Variant
Dim Dick As String
Dim SHFileOp As SHFILEOPSTRUCT
Dim lngReturn As Long
sFileNames = FileSource & vbNullChar
sFileNames = sFileNames & vbNullChar
Dick = FileDestination
With SHFileOp
.wFunc = &H1
.pFrom = sFileNames
.fFlags = &H100 '&H4
.pTo = Dick
End With
ShellCopy = SHFileOperation(SHFileOp)
End FunctionSv: SHFileOperation kod
MSSv: SHFileOperation
* Är inte wFunc = &H1 funktionen för att flyta filer?
* Är det bara när du försöker flytta en specifik fil problemet uppstår? Eller gäller det alla filer när koden är kompilerad?
* Vad har FileSource för värde? ("c:\Fil.nåt" eller "c:\Mapp\*.*")
* Vad har FileDestination för värde?
* Används filen eller är den öppen i en annan applikation?
Snyggat till din kod lite. Du kan ju testa den:
<code>
Option Explicit
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Const FO_MOVE = &H1
Private Const FOF_SILENT = &H4
Private Const FOF_SIMPLEPROGRESS = &H100
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Function ShellCopy(FileSource As String, FileDestination As String, Optional Title As String, Optional hwnd As Long) As Long
Dim SHFileOp As SHFILEOPSTRUCT
With SHFileOp
.hwnd hwnd
.wFunc = FO_MOVE
.pFrom = FileSource & vbNullChar
.pTo = FileDestination & vbNullChar
.fFlags = FOF_SIMPLEPROGRESS 'FOF_SILENT
.sProgress = Title
End With
ShellCopy = SHFileOperation(SHFileOp)
End Function
</code>