Change the Extension of Files in a Specified Folder

This function will allow you to change the extension of files within a specified folder. You can either change the name of all files, or files with a specified extension. A reference to the Scripting Runtime is required. See code comments for details and example.

Public Function ChangeExtension(ByVal FolderName As String, _
ByVal NewExtension As String, Optional ByVal OldExtension As _
String = &qt;) As Boolean

Dim oFso As New FileSystemObject
Dim oFolder As Folder
Dim oFile As File
Dim sOldName As String
Dim sNewName As String
Dim iCtr As Long
Dim iDotPosition As Integer
Dim sWithoutExt As String
Dim sFolderName As String

sFolderName = FolderName
If Right(sFolderName, 1) "" Then sFolderName = _
sFolderName & ""
Set oFolder = oFso.GetFolder(FolderName)
For Each oFile In oFolder.Files

sOldName = sFolderName & oFile.Name
sNewName = &qt;
iDotPosition = InStrRev(sOldName, ".")
If iDotPosition > 0 Then
If OldExtension = &qt; Or UCase(Mid(sOldName, _
iDotPosition + 1)) = UCase(OldExtension) Then

sWithoutExt = Left(sOldName, iDotPosition - 1)
sNewName = sWithoutExt & "." & NewExtension

On Error Resume Next &qt;&qt;file may already exist
&qt;&qt;if you don&qt;&qt;t want to let
&qt;&qt;this slide, remove this
&qt;&qt;line
Name sOldName As sNewName
Err.Clear
On Error GoTo ErrorHandler
End If
End If
Next
ChangeExtension = True
ErrorHandler:
Set oFile = Nothing
Set oFolder = Nothing
Set oFso = Nothing

Tags: