- Код: Выделить всё
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" ( _
lpszSrc As String, ByVal lpszDst As String) As Long
Sub Макрос1()
Const RegExKvu As String = "===========================================" 'От этой строки начинается таблица
Dim KVU_path As String 'Путь к файлу
Dim KVU_AllText As String 'Содержимое файла в DOS кодировке
Dim KVU_InsertText As String 'Текст для вставки в документ
Dim KVU_Win As String 'Текст в кодировке WIN
Dim fN As Long
KVU_path = "d:\2_KVU.REP"
'Считываю все содержимое файла
fN = FreeFile
Open KVU_path For Binary As fN
KVU_AllText = String$(LOF(fN), vbNullChar)
Get #fN, , KVU_AllText
Close #fN
'Выкусываю из всего содержимого нужный мне текст
KVU_InsertText = Mid(KVU_AllText, _
InStr(KVU_AllText, RegExKvu) + Len(RegExKvu), _
Len(KVU_AllText) - InStr(1, KVU_AllText, RegExKvu))
'Так печатается нужный мне кусок в кодировке DOS
Debug.Print KVU_InsertText
'Пытаюсь изменить кодировку способом найденным тут, на vbstreets
KVU_Win = Space(Len(KVU_InsertText))
OemToChar KVU_InsertText, KVU_Win
'Выводится не текст, а только несколько кракозябр
Debug.Print KVU_Win
End Sub
Либо я файл не так считываю, либо кодировку не так меняю. На всякий случай прикреплю пример файла. Очень надеюсь на вашу помощь.