Страницы: 1
RSS
открытие ДБВ в Эксель (DBF)
 
есть база ДБФ. при импорте в эксель 2007 русские буквы идут ИЕРОГЛИФАМИ. предыдущие версии хотя бы спрашивали кодовую талицу. а с 2007 и дальше - просто грузит и ИЕРОГЛИФЫ. помогите кто знает. СПАСИБО.
 
{quote}{login=sanya}{date=03.11.2010 09:34}{thema=открытие ДБВ в Эксель}{post}есть база ДБФ. при импорте в эксель 2007...{/post}{/quote}  
Однако напрасные потуги - XL-2007 и младше *.dbf НЕ понимают. Выход - Access или сторонние проги, или O_o_321...  
55036
 
дбф большой - 45 столбов и около 40 тысяч строк - ОО 3,2,и т,д. который типа берет 1 млн стро - фуфло - комп просто виснет (ОО тоесть, 4 ядра 3,3 8памяти)  
ОО - это миф - не верьте - он на огромных таблицах просто ВИСНЕТ
 
Z, действительно 2007-ой не умеет открывать .dbf?
 
умеет. бстро. красиво. только не спрашивает кодовой таблицы. и получаются иероглифы. ну и ....... смысла дальше нет. просто нашел такую "дырку" в экселе. может кто то скажет что это не так.
 
У меня как-то 2003 отдельные dbf тоже криво открывал. Потом ZVI дал небольшую утилитку, и всё стало открываться корректно. Но она (утилита) дома, а я на работе.
 
Здесь? http://www.planetaexcel.ru/forum.php?thread_id=9876 <BR>благодаря Лузеру ищу по must have, первая ссылка:)
 
Проблема похожая, но у меня была отдельная утилита, на ярлык которой на рабочем столе, нужно было просто затащить этот .dbf    
После этого файл с RU стал открываться корректно.
 
VBA код перекодировки файлов DBF из Windows-1251 в DOS-866 для работы в Excel я приводил здесь: <BR>http://www.sql.ru/forum/actualthread.aspx?tid=631075#6713135 <BR>Готовая утилита для перекодировки DBF из OEM в ANSI и обратно, о которой упоминал Юрий М, это, насколько я помню, DBFNavigator: <BR>http://www.softholm.com/freeware/DBFNavigator.zip
 
{quote}{login=Юрий М}{date=03.11.2010 10:03}{thema=}{post}Z, действительно 2007-ой не умеет открывать .dbf?{/post}{/quote}  
Юрий М! Видимо я неточно выразился - "*.dbf НЕ понимают". Можно ли считать файл открытым, если в нем "получаются иероглифы. ну и ....... смысла дальше нет (sanya)"?.. Хотя сейчас для пробы "покликал" старые базы до 90 мегов на XL-2010 (другое все снес) - открывает нормально, но не уверен, что не перекодировал их ранее. Что касается O_o_321, то он на моей старушке "с кофе попить" с 75 Мб (15 полей на 95000 строк) справился и в *.xlsx сохранил в размере 9Мб...  
Z.  
37857
 
Вот и у меня: на работе на всех машинах открывались нормально, а дома отображалась вместо кириллицы фигня. Вышеупомянутая утилита спасла :-)
 
{quote}{login=ZVI}{date=04.11.2010 02:32}{thema=}{post}Готовая утилита для перекодировки DBF из OEM в ANSI и обратно, о которой упоминал Юрий М, это, насколько я помню, DBFNavigator{/post}{/quote}  
Неа - нашёл: это cpdbf.exe. Вот архивчик (сама утилита и инструкция).
 
Уважаемый ZVI - вставил в єексель Ваш код:  
Option Explicit  
Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long  
 
' ZVI:2009-01-20 http://www.sql.ru/forum/actualthread.aspx?tid=631075  
' Перекодировка 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  
 
 
но результат выполнения дает ошибку: прилагаю  
 
подскажите в чем проблема. СПАСИБО
 
Код нужно вставлять не в модуль ЭтаКнига, а в стандартный модуль.  
В VBE используйте меню: Insert - Module  
После чего появится Module1, куда и нужно скопировать код.  
Посмотрите как сделано в приложении.
 
уважаемый ZVI. Вроде бы работает, только немного не так иногда. подскажите где именно и как в этом макросе можно поиграться с кодовой страницей. может что то наковыряю.    
СПАСИБО
 
{quote}{login=sanya}{date=07.07.2011 11:23}{thema=}{post}уважаемый ZVI. Вроде бы работает, только немного не так иногда. подскажите где именно и как в этом макросе можно поиграться с кодовой страницей. может что то наковыряю.    
СПАСИБО{/post}{/quote}В макросе используется API функция CharToOem,которая преобразует из кодировки Windows-CP1251 в DOS866. Других кодировок она не поддерживает, ла и другие кодировки в DBF-файлах мне не попадались. Бывают еще закодированные DBF-файлы, но это совсем другая история. Приложите в архиве небольшой DBF-файл, с которым есть проблемы и кратко опишите, что должно быть в какой-нибудь строке.  
Попробуйте также воспользоваться рекомендованными утилитами, а они нормально перекодируют проблемные DBF-файлы?
 
Как я знаю *.dbf бывают разные.  
Но меня возмущает что *.dbf от MicroSoft Visual Fox-Pro 9.0 не открываются MicroSoft Office 2010!!! (и кодировка 866, 1251 тут не причем).  
Вопрос как без дополнительной утилиты открыть *.dbf от MicroSoft Visual Fox-Pro 9.0 - ведь есть в Windows XP SP3 какие-то ODBC драйверы?
 
У меня другая беда: на моём компе DBF файла в 2007 excel открываются отлично, все корректно (только запись 40.3722.002* в расчетах видит как 40.3722.002, звездочку игнорирует) зато на всех остальных машинах открывает, но с датами полный бардак :  в место 16.11.2011 отображается 20111116 в текстовом формате. Офис ставил с одного диска, пиратского, может кто знает куда галочку поставить чтобы это исправить. я уже все перерыл :(
 
а если у меня тоже - на одной машине все нормально - а на всех остальных кракозябы  
Может кто то подскажет где найти ( в винде самой или в DBD или еще где то) в чем отличия на компах. Винда везде одна - Офис тоже - вот парадокс.  
спасибо
 
доброго времени суток  
можно ли этот макрос можно переделат на функцию
Страницы: 1
Читают тему
Наверх