Autorizzazione negata su spostamento di file

Anonimo
2016-08-17T08:03:40+00:00

Ciao a tutti, vorrei spostare un file da una cartella ad un'altra.

L'errore che ritorna è autorizzazione negata.

Per chiarezza posto il codice:

Private Sub cmdAssocia_Click()

    Dim fso As Object

    Dim SourceFile As String

    Dim TargetFile As String

    Dim Answer

    If Nz(ElencoAppuntamenti.Value, "") = "" Then

        MsgBox "Nessuna scheda selezionata!", vbCritical

        Exit Sub

    Else

        If MsgBox("Associo il file " & COmbo.Value & " con la scheda N° " & ElencoAppuntamenti.Value & "?", vbYesNo) = vbYes Then

            CurrentDb.Execute ("Update tblAppuntamenti Set FileSchedaLavoro='" & COmbo & "' Where ID =" & ElencoAppuntamenti.Value)

            Set fso = CreateObject("Scripting.FileSystemObject")

            SourceFile = COmbo.Value

            TargetFile = PercorsoAssegnati & "\Tec_" & TechCurrent & "" & Replace(COmbo, PercorsoInattesa & "", "")

            If fso.FileExists(TargetFile) Then

              Answer = MsgBox("File esistente. Procedo? Se confermi il file di destinazione verrà aeliminato!", vbInformation + vbYesNo)

                If Answer = vbNo Then

                    Exit Sub

                End If

                Kill TargetFile

            End If

            fso.MoveFile SourceFile, TargetFile

            Set fso = Nothing

            ElencoAppuntamenti.Requery

        End If

    End If

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

2 risposte

Ordina per: Più utili
  1. Anonimo
    2016-08-17T09:48:25+00:00

    Ciao, grazie, il problema è che essendo il file visualizzato in un web browser non riesce ad essere spostato.

    La cosa strana è che al primo tentativo mi da errore, se invece aspetto qualche secondo l'istruzione viene eseguita senza problemi.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-08-17T09:41:01+00:00

    ciao iff,

    controlla le autorizzazione delle cartella di destino, credo che tu non hai la facoltà di scrivere all'interno di essa.

    per il taglia incolla del file, prova, se vuoi, questa soluzione senza l'uso di FSO, personalizzando i percorsi di origine/destino.

    Ho tralasciato l'action query del tuo codice.

    Private Sub cmdMove_Click()

    On Error GoTo errHandler

    If Len(Me.cboClienti & vbNullString) = 0 Then

        VBA.MsgBox "non hai selezionato nulla", vbInformation

        Exit Sub

    End If

    Dim strPath       As String

    Dim strSourceFile As String

    Dim strDestPath   As String

    strPath = CurrentProject.Path

    strSourceFile = Me.cboClienti

    strDestPath = strPath & "\nuovaCartella"

    If Not FileExists(strPath & "" & strSourceFile) Then

        VBA.MsgBox "il file non esiste", vbCritical, "Attenzione"

        Exit Sub

    End If

    If FileExists(strDestPath & strSourceFile) Then

        If VBA.MsgBox("Il file :" & vbNewLine & _

                  strDestPath & strSourceFile & " è già esistente, confermi la sovrascrittura?", vbInformation + vbOKCancel) = vbCancel Then

                  VBA.MsgBox "Nessuna sovrascrittura effettuata!", vbInformation, "Avviso"

                  Exit Sub

        End If

    End If

    Shell "cmd /c move " & strPath & "" & strSourceFile & Chr(32) & strDestPath, vbHide

    VBA.MsgBox "file sovrascritto o copiato", vbInformation, "Avviso"

    exitHandler:

          Exit Sub

    errHandler:

           With Err

              MsgBox "ERR#" & .Number _

                   & vbNewLine & .Description _

                   , vbOKOnly Or vbCritical

            End With

           Resume exitHandler

    End Sub

    funzione da copiare in un modulo pubblico :

    Public Function FileExists(strPathFile As String) As Boolean

          On Error Resume Next

          FileExists = ((GetAttr(strPathFile) And vbDirectory) = 0)

    End Function

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento