El código que te dejé de ejemplo busca el guión y a partir de allí la cadena, no importando si es de 1, 2, o la cantidad de letras que tengas.
Lo que no queda claro es si se realizará una acción diferente si encuentra A, B, A-A, A-B, etc. Eso lo establecés en cada IF... ElseIF.
Si no encuentra el guión significa que no hay letras y cancela como ya lo tenías.
Sub LeerNotePad()
'Por.Dante Amor
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set l1 = ThisWorkbook
Set h1 = l1.ActiveSheet
ruta = l1.Path & "\"
ChDir ruta
'
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Seleccione archivo NotePad"
.Filters.Clear
.Filters.Add "All Files", "*.*"
.Filters.Add "Archivos Txt", "*.txt*"
.FilterIndex = 2
.AllowMultiSelect = False
.InitialFileName = ruta
If .Show Then
'--------ajustada x Elsamatilde
dato = .SelectedItems.Item(1)
'busca el guión
ubica = InStr(1, dato, "-")
'si lo encuentra extrae la cadena que sigue
If ubica > 0 Then
letras = Mid(dato, ubica + 1, Len(dato) - ubica)
If letras = "A" Then
col = Columns("C").Column
ElseIf letras = "B" Then
col = Columns("H").Column
ElseIf letras = "A-B" Then
'para cuando encuentre A-B
Else
'para cualquier otro caso distinto
End If
Else
'no encontró letras
MsgBox "El archivo no tiene la nomenclatura", vbCritical, "ERROR DE ARCHIVO"
Exit Sub
End If
'----------------
num = 9
Set l2 = Workbooks.Open(.SelectedItems.Item(1))
Set h2 = l2.Sheets(1)
Set r = h2.Columns("A")
Set b = r.Find("Ch.", lookat:=xlPart)
If Not b Is Nothing Then
ncell = b.Address
Do
dato1 = Split(h2.Cells(b.Row + 1, "A"), ",")
dato2 = Split(h2.Cells(b.Row + 2, "A"), ",")
h1.Cells(num, col + 1) = dato1(1)
h1.Cells(num, col + 2) = dato1(3)
h1.Cells(num, col + 3) = dato2(1)
h1.Cells(num, col + 4) = dato2(3)
num = num + 1
Set b = r.FindNext(b)
Loop While Not b Is Nothing And b.Address <> ncell
End If
l2.Close
End If
End With
MsgBox "Proceso terminado", vbInformation, "LEER ARCHIVOS"
End Sub
Sdos!