В разных локалях разные символы используются в качестве десятичного разделителя и разделителя тысяч. Хотя точка (.) - это десятичный разделитель в локали 2057, он, скорее всего, используется как разделитель тысяч в локали 1034.
Чтобы обойти эту проблему, вы можете попробовать заменить символ точки в значении поля на десятичный разделитель, соответствующий локали. Я не уверен, но что-то вроде этого должно работать:
session.LCID = 1034
strDecSep = Mid(CStr(CDbl(3/2)), 2, 1)
nNumber = recMessages.fields(lCounter)
nNumber = Replace(nNumber, ".", strDecSep)