Формат ввода для CDate
зависит от вашего системного языка, что делает его бесполезным для синтаксического анализа значений, которые поступают в фиксированном формате.
Однако, так как ваши компоненты даты находятся в фиксированных положениях, самый простой способ заключается в использовании функции строки для извлечения значения из исходной строки:
Dim s As String
Dim d As Date
s = "20120515 061115"
d = DateSerial(Left(s, 4), Mid(s, 5, 2), Mid(s, 7, 2)) _
+ TimeSerial(Mid(s, 10, 2), Mid(s, 12, 2), Mid(s, 14, 2))