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 = "") 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 = ""
iDotPosition = InStrRev(sOldName, ".")
If iDotPosition > 0 Then
If OldExtension = "" Or UCase(Mid(sOldName, iDotPosition + 1)) = UCase(OldExtension) Then
sWithoutExt = Left(sOldName, iDotPosition - 1)
sNewName = sWithoutExt & "." & NewExtension
On Error Resume Next ''file may already exist
' if you don''t want to let this slide, remove this line
Name sOldName As sNewName
Err.Clear
On Error GoTo ErrorHandler
End If
End If
Next
ChangeExtension = True
End Function
ErrorHandler:
Set oFile = Nothing
Set oFolder = Nothing
Set oFso = Nothing