Excel - Recuperare la lettera assegnata alla chiave USB - VBA

Riepilogo
Livello tecnico: Conoscenza di base di Visual Basic for Applications Si applica a: Excel (2003/2007/2010/2013)
Dettagli

NOTA. Gli esempi ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per un loro uso scorretto. Utilizzate gli esempi forniti o file di prova per i vostri test. La correzione delle eccezioni (errori) e il controllo del tipo di dati inserito è solo parziale. I file vogliono essere un semplice esempio che illustra come sia possibile automatizzare Excel e sono forniti solo a scopo dimostrativo.

 

 

Situazione.

A volte ci troviamo nella condizione di dover lavorare un file che si trova in una chiave USB. Questo può accadere anche *in trasferta*, quindi non sappiamo quale lettera verrà assegnata alla chiave USB.

 

Come fare.  

Ecco una funzione che ci consente di recuperare la lettera assegnata alla chiave USB. La funzione va copia/incollata in un modulo standard:

 

Public Function f() As String

 

   Dim objFSO As Object
   Dim colDrives As Object
   Dim objDrive As Object
  
   f = "Nessun drive mobile"
  
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set colDrives = objFSO.Drives
  
   For Each objDrive In colDrives
       If objDrive.IsReady = True Then
           If objDrive.DriveType = 1 Then
               f = objDrive.DriveLetter
           End If
       End If
   Next
  
   Set objDrive = Nothing
   Set objFSO = Nothing
   Set colDrives = Nothing
  
End Function

 

Da richiamare, ad esempio così:


Public Sub m()
    MsgBox f
End Sub

 

E questo il risultato:

 


 

Figura 1: Lanciando la macro m() compare questa MsgBox con la lettera assegnata alla chiave USB.

 

Un esempio pratico.

Dobbiamo aprire il file Dati.xlsx che si trova nella chiave USB dal codice di un file situato sulla macchina nella quale abbiamo inserito la chiave. Vogliamo poi recuperare il valore che si trova nel Foglio1, cella A5. Questo il codice (ferma restando la presenza in un modulo standard della funzione f()):

 

Public Sub m()

    Dim wk As Workbook
    Dim sh As Worksheet
   
On Error GoTo RigaErrore
   
    Set wk = Workbooks.Open(f & ":\Dati.xlsx")
    Set sh = wk.Worksheets("Foglio1")
    MsgBox sh.Range("A5").Value
   
RigaChiusura:
    Set sh = Nothing
    Set wk = Nothing
    Exit Sub
   
RigaErrore:
    MsgBox Err.Number & vbNewLine & Err.Description
    Resume RigaChiusura
   
End Sub

 

E questo il risultato, conforme a quanto si trova nella cella A5, Foglio1, file Dati.xlsx nella chiave USB:

 

 

 

 

Figura 2: Lanciando la macro m() compare questa MsgBox con il valore che si trova nella cella A5, Foglio1, file Dati.xlsx nella chiave USB.

 

Avendo gestito l'eventuale errore, se il file non viene trovato avrei questa MsgBox(vedere nei riferimenti il link agli articoli Wiki sulla gestione degli errori e delle MsgBox):

 

 

 

Figura 3: L'avviso di file non trovato.

 

Riferimenti.

 

 

Commenti.

Sono graditi i tuoi commenti a questo articolo Wiki e, se lo ritieni interessante, per favore spunta la voce : E' stato utile all'inizio della pagina.

Grazie.

 

NOTA. Excel non dispone nativamente di procedure assolutamente sicure per impedire la visualizzazione e la modifica del codice vb e/o per la protezione dei fogli. E’ una cosa da tenere sempre presente quando si distribuiscono file con contenuti ritenuti delicati. Ricordate anche che è possibile lanciare il file di Excel senza che vengano eseguite le macro.


Risorse.

 


 Avvio Pulito di Windows
(courtesy of Microsoft MVP Franco Leuzzi)


Computer infettato da malware (courtesy of Microsoft MVP Vincenzo Di Russo)




Questo articolo è stato utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questo articolo?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questo articolo?

Grazie per il tuo feedback.

 

Informazioni articolo del forum


Ultimo aggiornamento 6 ottobre 2021 Visualizzazioni 888 Si applica a: