Текстовый файл Dos кодировка

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Doggas
Сообщения: 27
Зарегистрирован: 01 мар 2007, 12:17

У меня есть набор текстовых файлов в dos кодировке. При их обработке мне надо их открывать в нормальной кодировке. Есть ли какие-т возможности сделать это? Может параметр при открытиии файла...
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

Если использовать метод OpenText (файл открывается в виде Workbook), то в нем можно указать параметр Origin:=xlMSDOS
Всякое решение плодит новые проблемы.
Doggas
Сообщения: 27
Зарегистрирован: 01 мар 2007, 12:17

Genyaa писал(а):Если использовать метод OpenText (файл открывается в виде Workbook), то в нем можно указать параметр Origin:=xlMSDOS
я открываю OpenTextFile в VBA(в базе Access), а там можно выбирать только парметры:
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
- пробовала использовать все параметры, но открывает одинаково закорючками ((
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

&quot писал(а):в нормальной кодировке
:)
Полагаю, имелась в виду win-1251 (rus)
Параметра такого для VBA нет, но ничто не мешает после считывания перекодировать текст.
Наберите в поиске этого форума перекодир* - получите кучу примеров
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

Doggas писал(а):я открываю OpenTextFile в VBA(в базе Access), а там можно выбирать только парметры:
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
- пробовала использовать все параметры, но открывает одинаково закорючками ((
А! Так это Access... с Access не работаю так много, чтобы что-либо советовать.
Всякое решение плодит новые проблемы.
Doggas
Сообщения: 27
Зарегистрирован: 01 мар 2007, 12:17

Нашла в других темах как можно перекодировать строку:
Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long,
потом использую эти функции:
sAnsi = String(Len(s), Chr(0))
OemToChar s, sAnsi
s1 = sAnsi
но проблема! s - строка с закарючками, а sAnsi становится квадратиками (а при первой прогонке все нормально перевел в текст). почему так получилось?
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

не перекодировались русские буквы.
Включите РУССКИЙ язык (раскладку клавиатуры) и прогоните ещё раз. Получилось?..
можно попробовать изменить в реестре - вот регфайлик:

Код: Выделить всё

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
Внимание! 1) Все операции с реестром выполняются на собственный страх и риск. 2) после применения надо перегруить комп
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте Doggas.

Код: Выделить всё

Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long 'конвертируем строку в win-кодировку.
Function dosToWin(sourstr$) As String
    dosToWin = Space$(Len(sourstr))
    OemToChar sourstr, dosToWin
End Function
Function winToDos(sourstr$) As String
    winToDos = Space$(Len(sourstr))
    CharToOem sourstr, winToDos
End Function
такая конструкция работает
Евгений.
Ответить