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

Cambiar extensiones

19 views
Skip to first unread message

Jorge

unread,
May 5, 2004, 9:29:54 AM5/5/04
to
Buenos días,

Quisiera saber mediante macros cómo puedo hacer para
cambiar la extensión a los archivos de un directorio y
los subdirectorios.

Gracias!

Pablo Almitrani

unread,
May 5, 2004, 10:37:42 AM5/5/04
to
Hola, lo que podes hacer es al momento de guardar el archivo con la macro,
le indicás la extensión que desees.
Saludos.
Jorge <anon...@discussions.microsoft.com> escribió en el mensaje de
noticias 897a01c432a5$0cf2d510$a601...@phx.gbl...

Jorge

unread,
May 5, 2004, 11:42:24 AM5/5/04
to
Gracias pero lo que necesito no es guardar archivos, sino
que a un conjunto de archivos ya existentes daes un
comando y cambiarles la extenció...

es como en MS-DOS que uno da el comando REN *.mp3 *.rjo y
cambia todos los mp3 a rjo pero necesito hacerlo mediante
macros y en los subdirectorios.


>-----Mensaje original-----

>.
>

Fernando Arroyo

unread,
May 5, 2004, 1:36:47 PM5/5/04
to
Mira si te sirve el siguiente código. Yo he hecho un par de pruebas y parece funcionar bien, pero te aconsejo que seas muy prudente dado que estamos hablando de operaciones masivas con ficheros. Mi consejo es que hagas varias pruebas con una copia de los directorios y que antes de empezar "en serio" saques una copia de seguridad de los mismos.


Sub CambiarExtensiones()
Dim fso As Object, fCarpeta As Object, tmpCarpeta As Object
Dim Fichero As Object, tmpFichero As Object
Dim strRutaInicial As String

strRutaInicial = "C:\Ruta" 'Ruta que se procesará

Set fso = CreateObject("Scripting.FileSystemObject")
Set fCarpeta = fso.GetFolder(strRutaInicial)

For Each tmpFichero In fCarpeta.Files
Name tmpFichero.Path As Left(tmpFichero.Path, (InStrRev(tmpFichero.Path, "."))) & "NuevaExtensión" '<<-- Poner la extensión que sea.
Next tmpFichero

Set tmpFichero = Nothing
Set Fichero = Nothing
Set tmpCarpeta = Nothing
Set fCarpeta = Nothing
Set fso = Nothing

Recursivo strRutaInicial

End Sub


Public Sub Recursivo(RutaInicial As String)
Dim fso As Object, fCarpeta As Object, tmpCarpeta As Object
Dim Fichero As Object, tmpFichero As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set fCarpeta = fso.GetFolder(RutaInicial)

For Each tmpCarpeta In fCarpeta.SubFolders
For Each tmpFichero In tmpCarpeta.Files
Name tmpFichero.Path As Left(tmpFichero.Path, (InStrRev(tmpFichero.Path, "."))) & "NuevaExtensión" '<<-- Poner la extensión que sea.
Next

Recursivo tmpCarpeta.Path
Next

Set tmpFichero = Nothing
Set Fichero = Nothing
Set tmpCarpeta = Nothing
Set fCarpeta = Nothing
Set fso = Nothing
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"Jorge" <anon...@discussions.microsoft.com> escribió en el mensaje news:8b8001c432b7$8fa6e520$a601...@phx.gbl...

Héctor Miguel

unread,
May 5, 2004, 1:59:58 PM5/5/04
to
hola, chicos !

[solo por aportar una alternativa mas] :))

[me parece que] valdria la pena analizar el uso de la instruccion =>Name<=
=> 'permite' renombrar archivos si se usa el mismo directorio [o copiar archivos EN OTRO directorio]
=> Name "Origen" As "Destino" <=
'requisitos' [al renombrar] = (1) que "Origen" EXISTA [y este cerrado] y (2) que "Destino" NO EXISTA
[probablemente] usando bucles/ciclos [For..Next] con matrices, 'patrones', etc.

saludos,
hector.

Jorge

unread,
May 5, 2004, 4:24:13 PM5/5/04
to
Muchas gracias!

Voy a hacer las pruebas...

Saludos!


>-----Mensaje original-----

>.
>

0 new messages