Rileva Usb

di il
7 risposte

Rileva Usb

Buonasera,
con il seguente codice riesco a rilevare la presenza dell'unità USB esterna.
Per anni con le penDrive ha sempre funzionato, ho notato solo ora che collegando un HD esterno di 250 gb non lo rileva.

Dim FSO As FileSystemObject
Dim drv As Drive
Dim sPath As String
Dim sUnit As String

Screen.MousePointer = vbHourglass

Set FSO = New FileSystemObject
For Each drv In FSO.Drives
     If drv.DriveType = 1 And drv.IsReady Then
         sPath = drv.DriveLetter & ":\"
         Exit For
      End If
Next

If Len(sPath) = 0 Then
          MsgBox "Drive non trovato!", vbExclamation, "Inserisci la pendrive."
              Set FSO = Nothing
                  Screen.MousePointer = vbDefault
                     Exit Sub
Else
           sUnit = sPath
               txtUnita.Text = sUnit
End If
Screen.MousePointer = vbDefault
Set FSO = Nothing
E' un problema legato alla quantità di gigabyte ?

7 Risposte

  • Re: Rileva Usb

    Fai l'elenco senza indicare il DriveType... magari è un tipo sconosciuto... elencati tutti e renditi conto come viene elencato
  • Re: Rileva Usb

    Ho provato inserendo in un combobox
    
    For Each drv In FSO.Drives
           Combo1.AddItem drv.DriveType & Space(2) & drv.DriveLetter
    Next
    
    rileva :
    il disco fisso 2 C
    la partizione 2 D
    HD Esterno 2 E

    Quindi presumo che lo vede come disco fisso.
    quindi in questa parte di codice dovrei modificare inserendo 2 al posto di 1
    
    If drv.DriveType = 1 And drv.IsReady Then
             sPath = drv.DriveLetter & ":\"
             Exit For
          End If
    
    ma se poi c'è una pendrive rileverà solo il disco fisso.
    Come uscirne ?
  • Re: Rileva Usb

    Cerca 1 o 2, non ti pare?
  • Re: Rileva Usb

    Si, posso risolvere come da te suggerito oppure elencando in una listbox tutti i drive
    e lasciando all'utente la selezione del drive desiderato.
    In pratica il tutto serve per effettuare un backup su HD esterno.
    
    List1.AddItem drv.DriveLetter & ":\" & Space(2) & drv.VolumeName
    
    Grazie.
  • Re: Rileva Usb

    Perché non metti i due spazi tra virgolette invece di usare la Space?

    ":\ "
  • Re: Rileva Usb

    Hai ragione. Ho fatto in fretta. In effetti metto un solo spazio così con uno Split inserisco nelle relative text la lettera e il nome.
  • Re: Rileva Usb

    Ho trovato una soluzione. Dove usano il programma oltre al backup giornaliero su server effettuano un backup settimanale, il venerdì alla chiusura del laboratorio, e quindi hanno una pendrive o un HD esterno sul quale copiare, dentro una cartella creata e nominata con la data del giorno, il database di un gestionale .
    In pratica una volta rilevato il supporto esterno e verificato il nome possono effettuare il backup.
    Ho rinominato tutti i supporti esterni dedicati "BACKUPLCSE" e quindi con la seguente routine sia che hanno inserito una pendrive o un HD esterno funziona.
    
    For Each drv In FSO.Drives
               If drv.VolumeName = "BACKUPLCSE" Then
                     txtUnita.Text = drv.DriveLetter & ":\"
                          txtName.Text = drv.VolumeName
                               Exit For
                                   Set FSO = Nothing
       End If
    Next
    
Devi accedere o registrarti per scrivere nel forum
7 risposte