Hej, Funkar perfekt hos mig... Jag är administratör (XP) så jag borde ju ha rättigheter. Hittade ingen lösning på detta, så jag använde mig av FileSystemObject istället.Problem med SHFileOperation
Har suttit hela dagen med att försöka få igång detta, men det vill sig inte.
Jag får felmeddelandet:
<info>
Fel vid kopiering av fil/mapp
Det går inte att kopiera fil. Det går inte att läsa från källfilen eller källdisken.
</info>
Här är koden jag använder:
<code>
Private Declare Function SHFileOperation Lib "shell32" Alias "SHFileOperationA" (lpFileOp As Any) As Long
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Const FO_MOVE As Long = &H1
Private Const FO_COPY As Long = &H2
Private Const FO_DELETE As Long = &H3
Private Const FO_RENAME As Long = &H4
Private Const FOF_MULTIDESTFILES As Long = &H1
Private Const FOF_SILENT As Long = &H4
Private Const FOF_NOERRORUI = &H400
Private Const FOF_RENAMEONCOLLISION As Long = &H8
Private Const FOF_NOCONFIRMATION As Long = &H10
Private Const FOF_SIMPLEPROGRESS As Long = &H100
Private Const FOF_ALLOWUNDO As Long = &H40
Private Const FOF_FILESONLY As Long = &H80
Private Const FOF_NOCONFIRMMKDIR As Long = &H200
Public Function Copy(strSource As String, strFolder As String, Optional bolSilent As Boolean = False, Optional bolConfirm As Boolean = True, Optional bolRenameOnCollision As Boolean) As Boolean
On Error Resume Next
Dim fileOperation As SHFILEOPSTRUCT
With fileOperation
.hwnd = 0&
.wFunc = FO_COPY
.pFrom = strSource & VBA.vbNullChar & VBA.vbNullChar
.pTo = FixPath(strFolder) & VBA.vbNullChar & VBA.vbNullChar
End With
fileOperation.fFlags = FOF_ALLOWUNDO
If CBool(bolSilent) Then fileOperation.fFlags = fileOperation.fFlags Or FOF_SILENT
If Not CBool(bolConfirm) Then fileOperation.fFlags = fileOperation.fFlags Or FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR
If CBool(bolRenameOnCollision) = True Then fileOperation.fFlags = fileOperation.fFlags Or FOF_RENAMEONCOLLISION
Copy = (SHFileOperation(fileOperation) = 0)
End Function
Private Function FixPath(strPath As String) As String
On Error Resume Next
If VBA.Right$(strPath, 1) <> "\" Then
FixPath = strPath & "\"
Else
FixPath = strPath
End If
End Function
</code>
Varför får jag det felmeddelandet? Det kommer på alla filer, som varken är öppnade eller används av något annat program.
/MickeSv: Problem med SHFileOperation
Liten tanke har du rättigheter att öppna/skriva till disken ?
Känner du till FileCopy kommandot ?
FileCopy Source, DestinationSv: Problem med SHFileOperation
Och ja, jag känner till FileCopy, men jag vill gärna ha lite mer kontroll på vad som ska hända osv...
/MickeSv: Problem med SHFileOperation
/Micke