Change the Extension of Files in a Specified Folder

By | 2007-05-03

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

Author: dwirch

Derek Wirch is a seasoned IT professional with an impressive career dating back to 1986. He brings a wealth of knowledge and hands-on experience that is invaluable to those embarking on their journey in the tech industry.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.