есть база ДБФ. при импорте в эксель 2007 русские буквы идут ИЕРОГЛИФАМИ. предыдущие версии хотя бы спрашивали кодовую талицу. а с 2007 и дальше - просто грузит и ИЕРОГЛИФЫ. помогите кто знает. СПАСИБО.
открытие ДБВ в Эксель (DBF)
03.11.2010 21:34:45
|
|
|
|
03.11.2010 22:03:36
Z, действительно 2007-ой не умеет открывать .dbf?
|
|
|
|
03.11.2010 22:10:16
У меня как-то 2003 отдельные dbf тоже криво открывал. Потом ZVI дал небольшую утилитку, и всё стало открываться корректно. Но она (утилита) дома, а я на работе.
|
|
|
|
03.11.2010 22:33:29
Здесь?
|
|
|
|
03.11.2010 22:41:25
Проблема похожая, но у меня была отдельная утилита, на ярлык которой на рабочем столе, нужно было просто затащить этот .dbf
После этого файл с RU стал открываться корректно. |
|
|
|
04.11.2010 02:32:58
VBA код перекодировки файлов DBF из Windows-1251 в DOS-866 для работы в Excel я приводил здесь: <BR>
|
|
|
|
04.11.2010 08:58:50
Вот и у меня: на работе на всех машинах открывались нормально, а дома отображалась вместо кириллицы фигня. Вышеупомянутая утилита спасла :-)
|
|
|
|
03.07.2011 11:15:05
Уважаемый ZVI - вставил в єексель Ваш код:
Option Explicit Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long ' ZVI:2009-01-20 ' Перекодировка DBF из Windows-1251 в DOS-866 для работы в Excel Sub Dbf_Win2Rus() Dim FN%, s$, ptrData&, b() As Byte, FileName On Error GoTo exit_ ' Выбрать DBF файл ChDrive Mid(ThisWorkbook.Path, 1, 1) ChDir ThisWorkbook.Path & "\" FileName = Application.GetOpenFilename("DBF File (*.dbf), *.dbf", , _ "DBF Win2Dos") If FileName = False Then Exit Sub ' Открыть DBF файл FN = FreeFile Open FileName For Binary Access Read Write As #FN ' Считать все в байтовый массив ReDim b(0 To LOF(FN) - 1) Get #FN, , b ' Проверить флаг перекодировки для исключения двойной If CInt(b(29)) = 38 Then If MsgBox("DOS-кодировка уже установлена," & vbLf _ & "Все равно продолжить?", _ vbExclamation + vbOKCancel + vbDefaultButton2, _ "Не навреди!") <> vbOK Then GoTo exit_ End If End If ' Установить указатель на начало данных ptrData = b(9) * 256 + b(8) + 1 ' Считать данные в Unicode s = StrConv(MidB(b, ptrData), vbUnicode) ' Перекодировать данные в DOS-866 ReDim b(0 To Len(s) - 1) b = StrConv(Win2Dos(s), vbFromUnicode) ' Переписать данные в DBF Put #FN, ptrData, b ' Установить флаг DOS-866 в DBF Put #FN, 30, 38 exit_: Close #FN If Err <> 0 Then Debug.Print "Error: " & Err.Number & " - " & Err.Description Else MsgBox "Преобразовано успешно!", vbInformation, "DBF Win2Dos" End If End Sub Private Function Win2Dos(ByVal sWin As String) As String Win2Dos = String(Len(sWin), Chr(0)) Call CharToOem(sWin, Win2Dos) End Function но результат выполнения дает ошибку: прилагаю подскажите в чем проблема. СПАСИБО |
|
|
|
07.07.2011 23:23:59
уважаемый ZVI. Вроде бы работает, только немного не так иногда. подскажите где именно и как в этом макросе можно поиграться с кодовой страницей. может что то наковыряю.
СПАСИБО |
|
|
|
08.11.2012 10:56:52
доброго времени суток
можно ли этот макрос можно переделат на функцию |
||||
|
|
|||
Читают тему