I mostly agree with Michael--to learn the most, you should get started on your own, and come back with more specific questions. However, I am looking to reach 50 rep so I will pander to you. But do please try to go through the code and understand it.
Your name suggests you are a programmer, so the concepts we make use of should be familiar. I like to work from the inside out, so here goes:
here are my variables:
Dim sFileName   As String
Dim sFilePath   As String
Dim wbBook      As Excel.Workbook
Dim i           As Double
Dim wsSheet     As Excel.Worksheet
Dim rRange      As Range
Dim c           As Range
Dim dReplace    As Double
At the core, you'll want a select case statement to read each cell and decide what the new value should be. Then you will assign the new value to the cell:
Select Case c.value 'c being the cell we are currently examining
    Case "S"
        dReplace = 4
    Case "M"
        dReplace = 3
    Case "B"
        dReplace = 2
    Case Else
        'Assuming you should only encounter the above values, 
        'then anything else is an error
        '.assert false will stop the code, or you can replace 
        'with more refined error handling
        Debug.Assert False
 End Select
 c.value = dReplace
Around that you'll want a for each loop to define the current cell and iterate through all the cells in the range you specify for that particular worksheet:
set rRange = wsSheet.Range("C2:E5000") 'Customize to your range
for each c in rRange.Cells
    '...
next
Next level up is the for next loop to iterate through all the worksheets in the current file:
For i = 1 To 30
    If wbBook.Sheets(i).Name = "" Then
        GoTo NextOne
    End If
    Set wsSheet = wbBook.Sheets(i)
    '...
NextOne:
Next i
The if then statement at the top prevents an error if there are fewer than 30 worksheets in a workbook. If the number of sheets per file varies then this will be useful, if  the number is fixed, just adjust the loop to stop and the right spot. Of course, this assumes your workbooks have information on multiple sheets. If not skip the loop altogether.
I'm sure many will criticize my use of goto, but since VBA loops lack a continue command, this is the workaround I employ. 
Around that you'll want another iterator to loop through your multiple files. Assuming they are all in the same folder, you can use the Dir() function to grab the file names one-by-one. You give it the file path and (optionally) the file type, and it will return the first file name it finds that meets your cirteria. Run it again and it returns the second file name, etc. Assign that to a string variable, then use the file path plus the file name to open the workbook. Use a do loop to keep going until runs out of files:
sFilePath = "C:\Your File Path Here\"
sFileName = Dir(sFilePath & "*.xlsx")
Do Until sFileName = ""
    Set wbBook = Workbooks.Open(sFilePath & sFileName)
    '...
    wbBook.Save
    wbBook.Close
    sFileName = Dir()
Loop
Now Put it all together:
Sub ReplaceLetterCodewithNumberCode()
    Dim sFileName   As String
    Dim sFilePath   As String
    Dim wbBook      As Excel.Workbook
    Dim i           As Double
    Dim wsSheet     As Excel.Worksheet
    Dim rRange      As Range
    Dim c           As Range
    Dim dReplace    As Double
    Application.ScreenUpdating = False
    sFilePath = "C:\Your File Path Here\"
    sFileName = Dir(sFilePath & "*.xlsx")
    Do Until sFileName = ""
        Set wbBook = Workbooks.Open(sFilePath & sFileName)
        For i = 1 To 30
            If wbBook.Sheets(i).Name = "" Then
                GoTo NextOne
            End If
            Set wsSheet = wbBook.Sheets(i)
            Set rRange = wsSheet.Cells("C2:E5000") 'Customize to your range. Assumes the range will be the same
            For Each c In rRange.Cells
                Select Case c.value 'c being the cell we are currently examining
                    Case "S"
                        dReplace = 4
                    Case "M"
                        dReplace = 3
                    Case "B"
                        dReplace = 2
                    Case Else
                        'Assuming you should only encounter the above values,
                        'then anything else is an error
                        '.assert false will stop the code, or you can replace
                        'with more refined error handling
                        Debug.Assert False
                 End Select
                 c.value = dReplace
            Next
NextOne:
        Next i
        wbBook.Save
        wbBook.Close
        sFileName = Dir()
    Loop
    'Clean up
    Set wbBook = Nothing
    Set wsSheet = Nothing
    Set rRange = Nothing
    Set c = Nothing
    Application.ScreenUpdating = True
End Sub