sono d'accordo John M ha la migliore risposta alle OP di domanda. Il pensiero non dichiarato esplicitamente, lo scopo apparente è quello di ottenere un nome di file selezionato, mentre altre risposte restituiscono conteggi o elenchi. Vorrei aggiungere, tuttavia, che msofiledialogfilepicker potrebbe essere una soluzione migliore in questo caso. Per esempio:
Dim f As object
Set f = Application.FileDialog(msoFileDialogFilePicker)
dim varfile as variant
f.show
with f
.allowmultiselect = false
for each varfile in .selecteditems
msgbox varfile
next varfile
end with
Nota: il valore di varfile rimarrà lo stesso, poiché multiselect è falso (solo elemento mai selezionato). Ho usato il suo valore al di fuori del circuito con uguale successo. Probabilmente è una pratica migliore farlo come ha fatto John M., comunque. Inoltre, il selettore di cartelle può essere utilizzato per ottenere una cartella selezionata. Preferisco sempre l'associazione in ritardo, ma penso che l'oggetto sia nativo della libreria di accesso predefinita, quindi potrebbe non essere necessario qui
+1 Speravo sempre che fosse possibile, la chiave per fare il lavoro di rilegatura tardiva sta passando l'opzione numerica piuttosto che msoOpenFileDialog ecc. Così semplice ma una grande risposta:) –
Puoi, ma non dovrebbe. Con l'associazione tardiva si sta codificando al buio .. Quando si aggiunge il riferimento e si dichiara correttamente e si imposta l'oggetto filedialog, l'IDE mostra suggerimenti, mentre con l'associazione tardiva non lo farà. – Chris
@Chris OTOH, utilizzando l'associazione anticipata significa che gli utenti devono avere anche i riferimenti aggiunti. Ciò significa che l'associazione tardiva è necessaria per alcune applicazioni. –