Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Sostituire caratteri in un filename.

152 views
Skip to first unread message

Massimo

unread,
Oct 20, 2004, 2:19:02 AM10/20/04
to
Ciao a tutti, stò cercando di mettere un pò d'ordine nel mio pc e, dovendo
rinominare alcuni file di una directory, ho pensato di farlo fare a Excel con
vba.
Ho scritto due righe di codice che mi vanno a selezionare la mia directory e
mi vanno a leggere tutti i file contenuti.
Ora, se il nome del file contiene la parola "Teltex", vorrei che questa
parola mi venisse cambiata in "Telt", e per questo ho usato la funzione
Replace che ho già usato per cambiare alcuni dati nelle celle di un foglio di
lavoro.
Ho uato la stessa sintassi per cambiare il nome al file della mia directory
ma, chiaramente, non funziona.
Qualcuno mi sà dire perchè il Replace va bene se applicato sul contenuto di
una cella e non va bene per cambiare parte di un nome di un file?
Il codice che ho scritto è il seguente:

Sub rinomina()
File = "d.\Hyp\"
nome = Dir(File)
Do While nome <> ""
If Mid(nome,4,6) = "Teltex" Then
nome.Replace What:= "Teltex", Replacement:= "Telt"
End if
nome = Dir()
Loop
End Sub

Vi ringrazio per l'aiuto.

Mauro Gamberini

unread,
Oct 20, 2004, 2:50:07 AM10/20/04
to
> Ciao a tutti, stò cercando di mettere un pò d'ordine nel mio pc e, dovendo
> rinominare alcuni file di una directory, ho pensato di farlo fare a Excel
con
> vba.

Dalla guida del VBA di Excel:
Esempio di istruzione Name
In questo esempio l'istruzione Name viene utilizzata per rinominare un file.
Nell'esempio si parte dal presupposto che le directory o cartelle
specificate esistano.In Macintosh, il nome dell'unità predefinita è "HD:" e
l eparti del percorso sono separate da due punti anziché da una barra
rovesciata.

Dim OldName, NewName
OldName = "VECCHIO": NewName = "NUOVO" ' Definisce i
' nomi di file.
Name OldName As NewName ' Rinomina il file.

OldName = "C:\MIADIR\VECCHIO": NewName = "C:\TUADIR\NUOVO"
Name OldName As NewName ' Sposta e rinomina il file.

--
----------------------------
Mauro Gamberini
.


Massimo

unread,
Oct 20, 2004, 3:07:31 AM10/20/04
to
Ti ringrazio Mauro per la risposta ma il problema è che, più che rinominare
il file, si tratterebbe di sostituire la parte "Teltex" con "Telt" in nomi
che possono avere lunghezze diverse e quindi la parola "Teltex" può trovarsi
in posizioni diverse, andrebbe bene anche togliere al nome originale i
caratteri "ex", il risultato sarebbe lo stesso.
Faccio un esempio di come possono essere chiamati i miei file:

HypTeltex_Gen04.xls
PrimeTeltex_Dic03.xls
RecTeltex_Feb04.xls

Dovrebbero diventare:

HypTelt_Gen04.xls
PrimeTelt_Dic03.xls
RecTelt_Feb04.xls

Aspetto lumi e ringrazio, ciao.

**********************************>

> Dalla guida del VBA di Excel:
> Esempio di istruzione Name
> In questo esempio l'istruzione Name viene utilizzata per rinominare un file.
> Nell'esempio si parte dal presupposto che le directory o cartelle
> specificate esistano.In Macintosh, il nome dell'unità predefinita è "HD:" e
> l eparti del percorso sono separate da due punti anziché da una barra
> rovesciata.
>
> Dim OldName, NewName
> OldName = "VECCHIO": NewName = "NUOVO" ' Definisce i
> ' nomi di file.
> Name OldName As NewName ' Rinomina il file.
>
> OldName = "C:\MIADIR\VECCHIO": NewName = "C:\TUADIR\NUOVO"
> Name OldName As NewName ' Sposta e rinomina il file.
>
> --
> ----------------------------
> Mauro Gamberini

> ..
>
>
>

Maurizio Borrelli

unread,
Oct 20, 2004, 11:27:15 AM10/20/04
to
"Massimo" ha scritto nel messaggio
news:0185DA65-14CA-4204...@microsoft.com...

Ciao, Massimo.

Attenzione a non confondere queste *TRE* funzioni:

Function Replace(Expression As String _
, Find As String _
, Replace As String _
, [Start As Long = 1] _
, [Count As Long = -1] _
, [Compare As VbCompareMethod = vbBinaryCompare] _
) As String
Membro di VBA.Strings
Find and replace a substring within a string

Function Replace(What _
, Replacement _
, [LookAt] _
, [SearchOrder] _
, [MatchCase] _
, [MatchByte] _
, [SearchFormat] _
, [ReplaceFormat] _
) As Boolean
Membro di Excel.Range

Function Replace(Arg1 As String _
, Arg2 As Double _
, Arg3 As Double _
, Arg4 As String _
) As String
Membro di Excel.WorksheetFunction

Quella che intendi usare tu e` la prima ma nel tuo codice la usi come
useresti la seconda. In pratica cio` che intendi ottenere e`:

strNuovoNome = Replace(strVecchioNome, "Teltex", "Telt")

(Facci sapere se ed eventualmente come hai risolto. Grazie.)
--
Ciao :o)
Maurizio Borrelli, Microsoft MVP - Office Systems - Access
--------
?SPQR(C)
X
--------


Massimo

unread,
Oct 21, 2004, 3:29:02 AM10/21/04
to
Grazie Maurizio, la tua indicazione è stata efficace e anche abbastanza
semplice da capire, mi hai risolto il problema.
Di nuovo grazie, ciao.

"Maurizio Borrelli" ha scritto:

0 new messages