Hola, para gustos colores, personalmente pienso y de hecho así lo utilizo desde hace tiempo que esta función es mas 'fiable' ya que antes de nada comprueba si el archivo tiene extensión y después devuelve la que sigue al último punto (.)
Private Function Extension(NombreArchivo As String) As String
If InStr(NombreArchivo, ".") Then
Extension = Mid$(NombreArchivo, InStrRev(NombreArchivo, ".") + 1)
End If
End Function
Saludos