Discussione:
Estrarre Nome file
(troppo vecchio per rispondere)
unknown
2004-07-14 08:18:58 UTC
Permalink
Salve a tutti!!

Vi chiedo se esiste un modo per estrarre il nome di un file,
indipendentemente dal percorso dal tipo di estensione e dalla lunghezza?

Es.

Con VBA attraverso la funzione "Application.GetOpenFilename" seleziono
il file che voglio e lo carico su di una textbox.

Successivamente a questa operazione che mi restituisce l'intero
percorso del file :

C:\Documents and Settings\XXX\Desktop\XXX\lista.xls

vorrei che su di un'altra textbox o su di una cella mi venga restituito
il nome "lista.xls" o "lista".

Il problema è che i percorsi possono essere diversi per cui la
lunghezza dei caratteri anche, quindi non posso utilizzare funzioni
tipo DESTRA o STRINGA.ESTRAI, almeno per quanto ne so e provato.


Come fare???

GRAIE
Roberto Restelli
2004-07-14 11:13:46 UTC
Permalink
Ciao Falkenji.
Post by unknown
Vi chiedo se esiste un modo per estrarre il nome di un file,
indipendentemente dal percorso dal tipo di estensione e dalla
lunghezza?
[CUT]
C:\Documents and Settings\XXX\Desktop\XXX\lista.xls
[CUT]
Il problema è che i percorsi possono essere diversi per cui la
lunghezza dei caratteri anche, quindi non posso utilizzare funzioni
tipo DESTRA o STRINGA.ESTRAI, almeno per quanto ne so e provato.
Non ha importanza la lunghezza. Potresti semplicemente ricercare l'ultima
ricorrenza del carattere "\" che separa il percorso dal nome del file, ed
utilizzare i normali comandi di separazione delle stringhe per recuperare
l'ultima porzione a destra.
In VBA potrebbe essere qualcosa simile a:
============
'...
Dim sPercorso As String, sNomeFile As String
sPercorso = "C:\Documents and Settings\XXX\Desktop\XXX\lista.xls"

sNomeFile = Right$(sPercorso, Len(sPercorso)-InStrRev(sPercorso,"\"))
'...
============

Ciao
Roberto
--
Roberto Restelli
Microsoft MVP - Office Systems - Outlook
unknown
2004-07-14 12:42:21 UTC
Permalink
Post by Roberto Restelli
Right$(sPercorso, Len(sPercorso)-InStrRev(sPercorso,"\"))
GRAZIE Roberto!!!

Funziona che e una meraviglia!!

Senti! Giusto per la cronaca, Ho scovato su un file access una stringa
in VBA che ho provato per excel, funziona, e sembra che faccia la
stessa cosa... secondo te ce qualk differenza??

La stringa e:


sNomeFile = Mid(sPercorso, InStrRev(sPercorso, "\") + 1)


Cioé l'istruzione InStrRev ce sempre...! Boh!? Non ne capisco molto!

GRAZIE e alla prossima!!!
Maurizio Borrelli
2004-07-14 16:38:17 UTC
Permalink
Post by unknown
Post by Roberto Restelli
Right$(sPercorso, Len(sPercorso)-InStrRev(sPercorso,"\"))
GRAZIE Roberto!!!
Funziona che e una meraviglia!!
Senti! Giusto per la cronaca, Ho scovato su un file access una stringa
in VBA che ho provato per excel, funziona, e sembra che faccia la
stessa cosa... secondo te ce qualk differenza??
sNomeFile = Mid(sPercorso, InStrRev(sPercorso, "\") + 1)
Cioé l'istruzione InStrRev ce sempre...! Boh!? Non ne capisco molto!
Ciao, Falkenji.

Ma si puo' ottenere lo stesso risultato in tanti modi!

Persino:

sNomeFile = Split(sPercorso,"\")(UBound(Split(sPercorso,"\")))

Se vuoi capirne di piu', apri la finestra Immediata e digita le
istruzioni in questione una porzione alla volta, esaminando i vari
risultati, e consultando le relative pagine della guida.

Per esempio, digita, ricordandoti sempre di premere Invio alla fine di
ogni riga:

p="C:\Documents and Settings\XXX\Desktop\XXX\lista.xls"

?Len(p)

?InStrRev(p,"\")

ecc. Dove il punto interrogativo sta per "PRINT".
--
Ciao :o)
Maurizio Borrelli, Microsoft MVP - Office Systems - Access
--------
?SPQR(C)
X
--------
Loading...