Регулярные выражения — очень мощная вещь, при правильном подходе . Мой, как обычно, оказался недостаточно проверенным.
Попробуйте такой вариант шаблона (на основе Вашего примера):
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = False
objRegExp.Pattern = "^\d{5}-\d{2}-\d{2}\..{0,4}$"
Str = "12345-01-01.xls"
MsgBox objRegExp.Test(Str), 0 ,Str
Str = "Копия 12345-01-01.xls"
MsgBox objRegExp.Test(Str), 0 ,Str
Str = "12345-01-01.Копия.xls"
MsgBox objRegExp.Test(Str), 0 ,Str
Str = "12345-01-01.Коп.xls"
MsgBox objRegExp.Test(Str), 0 ,Str
Str = "12345-01-01."
MsgBox objRegExp.Test(Str), 0 ,Str
{0,4} — ну, если вдруг *.html, что-ли. Хотя, если у Вас только *.xls, то можно так и написать.
P.S. Да, кстати, "12345-01-01." в примере отрабатывает, но в скрипте-то objFile.Name вернёт только "12345-01-01", т.е. без точки; так что, пожалуй, даже
...
objRegExp.Pattern = "^\d{5}-\d{2}-\d{2}(|\..{1,4})$"
...
Str = "12345-01-01."
MsgBox objRegExp.Test(Str), 0 ,Str 'Должно быть Ложь
Str = "12345-01-01"
MsgBox objRegExp.Test(Str), 0 ,Str 'Должно быть Истина