Hola, estoy intentando renombrar(Convertirlos a mayusculas) todos los archivos de una carpeta,
este es mi codigo, cuando lo ejecuto me arroja este error
Argumento o llamada a procedimientos no valida
Set objfso = CreateObject("scripting.filesystemobject")
Set folder = objfso.getfolder("D:\Pelis\")
Dim myname
For Each archivos In folder.Files
myname = UCase(CStr(archivos))
archivos.Name = myname
Next
Muchas Grcias!
El error te indica que te indica que el nombre no puede contener caracteres ilegales, pues le estás pasando el nombre de la ruta absoluta, no le estás pasando el nombre del archivo, pero además de eso, te daría otro error consequente, ya que no puedes renombrar un archivo usando el mismo nombre indistintamente de si son mayúsculas o minúsculas, debes mover el archivo.
Puedes utilizar el método
MoveFile, o renombrar 2 veces el archivo (que sería lo mismo a moverlo dos veces).
Mover:
Option Explicit
Dim oFSO, oDir, oFile, _
filePath, dirName, fileName, fileExt, _
newFileName, newFileExt
Set oFSO = CreateObject("scripting.filesystemobject")
Set oDir = oFSO.getfolder("D:\Pelis\")
For Each oFile In oDir.Files
filePath = oFSO.GetAbsolutePathName(oFile)
dirName = oFSO.GetParentFolderName(oFile)
fileName = oFSO.GetBaseName(oFile)
fileExt = oFSO.GetExtensionName(oFile)
newFileName = UCase(fileName)
newFileExt = LCase(fileExt)
If (fileName & "." & fileExt) <> (newFileName & "." & newFileExt) Then
Call oFSO.MoveFile(filePath, dirName & "\" & newFileName & "." & newFileExt)
End If
Next
Renombrar:
Option Explicit
Dim oFSO, oDir, oFile, _
filePath, dirName, fileName, fileExt, _
newFileName, newFileExt, newFilePath
Set oFSO = CreateObject("scripting.filesystemobject")
Set oDir = oFSO.getfolder("D:\Pelis\")
For Each oFile In oDir.Files
filePath = oFSO.GetAbsolutePathName(oFile)
dirName = oFSO.GetParentFolderName(oFile)
fileName = oFSO.GetBaseName(oFile)
fileExt = oFSO.GetExtensionName(oFile)
newFileName = UCase(fileName)
newFileExt = UCase(fileExt)
newFilePath = dirName & "\" & newFileName & "." & newFileExt
If fileName <> newFileName Then
If Not oFSO.FileExists(newFilePath & ".tmp") Then
oFile.Name = fileName & "." & fileExt & ".tmp"
oFile.Name = newFileName & "." & newFileExt
Else
Call MsgBox("File already exist: " & _
vbNewLine & _
"'" & newFilePath & ".tmp" & "'", _
16, "File Renamer")
End If
End If
Next
Saludos
Muchas Gracias por los Ejemplos, y la explicacion.
Set objfso = CreateObject("scripting.filesystemobject")
Set folder = objfso.getfolder("D:\Pelis\")
Dim myname
For Each archivos In folder.Files
archivos.name = UCase(archivos.name)
Next
saludos flamer y dime si te funciona