Si el procediment de VBA ha de demanar a l'usuari un nom d'arxiu, es podria utilitzar la funció InputBox i deixar que l'usuari d'Excel fer alguna cosa de tecleig. Un quadre d'entrada normalment no és la millor eina per a aquesta feina, però, perquè la majoria dels usuaris tenen dificultats per recordar camins, barres invertides, noms de fitxer i extensions de fitxer. Dit d'una altra manera, és massa fàcil fer malbé quan s'escriu un nom de fitxer.
Per a una millor solució a aquest problema, utilitzeu el mètode GetOpenFilename de l'objecte Aplicació, que garanteix que el vostre codi tingui un nom de fitxer vàlid, inclòs el seu camí complet. El mètode GetOpenFilename mostra el familiar quadre de diàleg Obre (un timbre mort per al quadre de diàleg que Excel mostra quan trieu Fitxer → Obre → Navega).
El mètode GetOpenFilename en realitat no obre el fitxer especificat. Aquest mètode simplement retorna el nom del fitxer seleccionat per l'usuari com a cadena. A continuació, podeu escriure codi per fer el que vulgueu amb el nom del fitxer.
La sintaxi del mètode GetOpenFilename
La sintaxi oficial del mètode GetOpenFilename és la següent:
object.GetOpenFilename ([fileFilter], [filterIndex],
[títol],[buttonText], [multiSelect])
El mètode GetOpenFilename pren els arguments opcionals següents.
Argumentació |
Què fa |
FileFilter |
Determina els tipus de fitxers que apareixen al quadre de diàleg
(per exemple, *.TXT). Podeu especificar diversos filtres perquè l'usuari
pugui triar. |
FilterIndex |
Determina quin dels fitxers filtra el quadre de diàleg de
manera predeterminada. |
Títol |
Especifica el títol de la
barra de títol del quadre de diàleg . |
ButtonText |
Ignorat (només s'utilitza per a la versió d'Excel per a Macintosh). |
Selecció múltiple |
Si és cert, l'usuari pot seleccionar diversos fitxers. |
Un exemple de GetOpenFilename
L'argument fileFilter determina què apareix a la llista desplegable Tipus de fitxers del quadre de diàleg. Aquest argument consisteix en parells de cadenes de filtre de fitxers seguides per l'especificació de filtre de fitxers de comodí, amb comes que separen cada part i parell. Si s'omet, aquest argument per defecte és el següent:
Tots els fitxers (*.*), *.*
Tingueu en compte que aquesta cadena consta de dues parts, separades per una coma:
Tots els fitxers (*.*)
i
*.*
La primera part d'aquesta cadena és el text que es mostra a la llista desplegable Tipus de fitxers. La segona part determina quins fitxers mostra el quadre de diàleg. Per exemple, *.* significa tots els fitxers.
El codi de l'exemple següent obre un quadre de diàleg que demana a l'usuari un nom de fitxer. El procediment defineix cinc filtres de fitxers. Observeu que la seqüència de continuació de línia VBA s'utilitza per configurar la variable Filtre; fer-ho ajuda a simplificar aquest argument bastant complicat.
Sub GetImportFileName ()
Dim Finfo As String
Dim FilterIndex As Long
Dim Títol com a cadena
Dim FileName com a variant
' Configura la llista de filtres de fitxers
FInfo = "Fitxers de text (*.txt),*.txt" & _
"Fitxers Lotus (*.prn),*.prn" & _
"Fitxers separats per comes (*.csv),*.csv" & _
"Fitxers ASCII (*.asc),*.asc" & _
"Tots els fitxers (*.*),*.*"
' Mostra *.* per defecte
FilterIndex = 5
' Estableix el títol del quadre de diàleg
Títol = "Seleccioneu un fitxer per importar"
' Obteniu el nom del fitxer
FileName = Application.GetOpenFilename (FInfo, _
FilterIndex, títol)
' Gestionar la informació de retorn del quadre de diàleg
Si NomFitxer = Fals Aleshores
MsgBox "No s'ha seleccionat cap fitxer".
Altrament
MsgBox "Has seleccionat " & FileName
Acaba si
End Sub
Aquí teniu el quadre de diàleg que mostra Excel quan executeu aquest procediment. L'aparença pot variar, segons la versió de Windows que utilitzeu i les opcions de visualització que hàgiu establert.

El mètode GetOpen Filename mostra un quadre de diàleg personalitzable i retorna el camí i el nom del fitxer seleccionat. No obre el fitxer.
En una aplicació real, faries alguna cosa més significativa amb el nom del fitxer. Per exemple, és possible que vulgueu obrir-lo fent servir una instrucció com aquesta:
Workbooks.Open FileName
Tingueu en compte que la variable FileName es declara com a tipus de dades Variant. Si l'usuari fa clic a Cancel·la, aquesta variable conté un valor booleà (fals). En cas contrari, FileName és una cadena. Per tant, l'ús d'un tipus de dades Variant gestiona ambdues possibilitats.