Sommario:
Video: Excel VBA - Double Click 2025
Se la tua procedura VBA deve richiedere all'utente un nome file, potrebbe utilizzare la funzione InputBox e consentire all'utente di digitare un po '. In genere, una casella di input non è lo strumento migliore per questo lavoro, perché la maggior parte degli utenti trova difficile ricordare percorsi, backslash, nomi di file ed estensioni di file. In altre parole, è troppo facile rovinarsi quando si digita un nome di file.
Per una soluzione migliore a questo problema, utilizzare il metodo GetOpenFilename dell'oggetto Application, che garantisce che il codice trovi le sue mani su un nome file valido, incluso il percorso completo. Il metodo GetOpenFilename visualizza la familiare finestra di dialogo Apri (una suoneria morta per la finestra di dialogo visualizzata in Excel quando si seleziona File → Apri → Sfoglia).
Il metodo GetOpenFilename in realtà non apre il file specificato. Questo metodo restituisce semplicemente il nome file selezionato dall'utente come una stringa. Quindi puoi scrivere il codice per fare quello che vuoi con il nome del file.
La sintassi per il metodo GetOpenFilename
La sintassi ufficiale del metodo GetOpenFilename è la seguente:
oggetto. GetOpenFilename ([fileFilter], [filterIndex], [title], [buttonText], [multiSelect])
Il metodo GetOpenFilename accetta gli argomenti facoltativi di seguito.
Argomento | Cosa fa |
---|---|
FileFilter | Determina i tipi di file visualizzati nella finestra di dialogo
(ad esempio, *. TXT). È possibile specificare diversi filtri per l'utente tra cui scegliere. |
FilterIndex | Determina quale del file filtra la finestra di dialogo per impostazione predefinita
. |
Titolo | Specifica la didascalia per la barra del titolo
della finestra di dialogo. |
ButtonText | Ignorato (utilizzato solo per la versione Macintosh di Excel). |
MultiSelect | Se True, l'utente può selezionare più file. |
Un esempio di GetOpenFilename
L'argomento fileFilter determina cosa viene visualizzato nell'elenco a discesa Tipo file della finestra di dialogo. Questo argomento consiste in coppie di stringhe di filtro file seguite dalla specifica del filtro file jolly, con virgole che separano ogni parte e coppia. Se omesso, questo argomento si imposta come segue:
Tutti i file (*. *), *. *
Si noti che questa stringa consiste di due parti, separate da una virgola:
Tutti i file (*. *)
e
*. *
La prima parte di questa stringa è il testo visualizzato nell'elenco a discesa Tipo file. La seconda parte determina i file visualizzati nella finestra di dialogo. Per esempio, *. * significa tutti i file.
Il codice nell'esempio seguente apre una finestra di dialogo che richiede all'utente un nome file.La procedura definisce cinque filtri di file. Si noti che la sequenza di continuazione della linea VBA viene utilizzata per impostare la variabile Filter; fare ciò aiuta a semplificare questo argomento piuttosto complicato.
Sub GetImportFileName () Dim Finfo As String Dim FilterIndex As Long Dim Titolo As String Dim FileName As Variant 'Imposta l'elenco dei filtri di file FInfo = "File di testo (*. Txt), *. txt, "& _" Lotus Files (*. prn), *. prn, "& _" File separati da virgola (*. csv), *. csv, "& _" File ASCII (*. asc), *. asc, "& _" Tutti i file (*. *), *. *" ' Display *. * per impostazione predefinita FilterIndex = 5 'Imposta la didascalia della finestra di dialogo Titolo = "Seleziona un file da importare" "Ottieni il nomefile FileName = Applicazione. GetOpenFilename (FInfo, _ FilterIndex, Title) "Gestisci le informazioni di restituzione dalla finestra di dialogo If FileName = False Then MsgBox" Nessun file è stato selezionato. "Else MsgBox" Hai selezionato "& FileName End If End Sub
Questa è la finestra di dialogo Excel visualizzata quando si esegue questa procedura. L'aspetto può variare a seconda della versione di Windows utilizzata e delle opzioni di visualizzazione impostate.
In un'applicazione reale, si farebbe qualcosa di più significativo con il nome del file. Ad esempio, potresti voler aprirlo usando una dichiarazione come questa:
Cartelle di lavoro. Apri FileName
Si noti che la variabile FileName è dichiarata come tipo di dati Variant. Se l'utente fa clic su Annulla, quella variabile contiene un valore booleano (False). Altrimenti, FileName è una stringa. Pertanto, l'utilizzo di un tipo di dati Variant gestisce entrambe le possibilità.
