Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Открытие DBF файла / 18 сообщений из 18, страница 1 из 1
16.01.2009, 23:09
    #35762489
Gena108
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Открываю dbf файл с помощью Екселя, латынь и цифры импортируются нормально, кириллица непонтным текстом. Подскажите пожалуйста что делать?
...
Рейтинг: 0 / 0
16.01.2009, 23:47
    #35762513
alex_gearbox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Попробуй импортировать данные.
...
Рейтинг: 0 / 0
17.01.2009, 00:01
    #35762519
Gena108
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
В случае открытия с помощью получается таблица, все данные распологается там где им нужно, но текст не тот. В случае импорта, данные вставляются в одну ячейку и практически без логики.
...
Рейтинг: 0 / 0
17.01.2009, 14:51
    #35762856
alex_gearbox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Без римера несколько сложно.

1. попробуйте разные настройки импорта;
2. найдите где-нибудь Excel 2000, он вроде как кирилицу нормально выводил.
...
Рейтинг: 0 / 0
19.01.2009, 12:07
    #35764287
Gena108
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Наверное нужно менять кодировку в реестре?
...
Рейтинг: 0 / 0
19.01.2009, 15:11
    #35764947
Gena108
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Реестр изменить не могу. Нашел в форуме след. ф-ю:
Код: plaintext
1.
2.
3.
4.
5.
Public Function ANSI2OEM(ByVal sAnsi As String) As String
    Dim sOem As String
    sOem = String(Len(sAnsi), Chr( 0 ))
    CharToOem sAnsi, sOem
    ANSI2OEM = sOem
End Function

Но не все симовлы кооректно переводит, например "╫" должно быть "Ч", а ставит "+".
Помогите, п-та разобраться.
...
Рейтинг: 0 / 0
19.01.2009, 19:50
    #35765734
alex_gearbox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Файл пуст что-ли?
...
Рейтинг: 0 / 0
20.01.2009, 01:45
    #35766097
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Gena108Наверное нужно менять кодировку в реестре?
Гена, в Вашем примере ничего кроме заголовка DBF нет.
А без данных рекомендации больше похожи на гадания. Попробуем погадать.
В заголовке DBF 29-й байт равен 0x65. Это обычно означает кодировку CP866.
Попробуйте применить приложенный в архиве RUS.REG
Нужно запустить его, и подтвердить.
В приложении есть также вспомогательная Excel-табличка, в которой можно нажать кнопку Пуск и сравнить установки реестра для DOS и Windows кодировок с требуемыми.
...
Рейтинг: 0 / 0
20.01.2009, 10:19
    #35766394
Gena108
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Добрый день, спасибо за помощь.
В приложении файл DBF с данными. RUS.REG не применяется, выдает ошибку "Не удалось импортировать. Не все данные были записаны в реестр", наверное нет доступа к редактиваронию. Я вчера пробывал на дом. ПК менять DataCodePage на ANSI, файл не перекодирует. По проверке все совпадает из требуемыми.
...
Рейтинг: 0 / 0
21.01.2009, 00:27
    #35768298
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Получите :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
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$, ptrType&, 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 GoTo exit_
  ' Открыть 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
...
Рейтинг: 0 / 0
21.01.2009, 08:46
    #35768480
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Вместо: If FileName = False Then GoTo exit_
Правильнее: If FileName = False Then Exit Sub

И можно убрать лишнюю переменную: ptrType&

После обработки файл DBF нормально читается в Excel.
...
Рейтинг: 0 / 0
21.01.2009, 12:02
    #35768996
Gena108
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Огромное спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
10.11.2010, 10:18
    #36946391
Dream.357
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Здесь нужно поменять либо кодовую страницу (866<->1251), либо тип файла (dBase4<->Visual FoxPro), либо сделать конверт ANSI<->OEM. Это все можно сделать, например, с помощью бесплатной http://elphsoft.com/dbfcommander.html
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
07.08.2015, 11:10
    #39024850
asai9493
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
Привет Всем !!. Не знаю, может и не по теме, но на Вас последняя надежда.
Мне нужно открыть файл dbf формата. Пробовал все программы, какие только есть- fox pro, dbf manager, excell, total commander.... все напрасно. Файл dbf открывают, но вот только появляются ????. Думаю, скорее всего это файл из далекого прошлого....
Кто знает решение... помогите. НУжно срочно!
...
Рейтинг: 0 / 0
07.08.2015, 13:21
    #39025004
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
asai9493, Вы уже создали свой вопрос, Вам задали вопросы для помощи тут: 17988397
не надо плодить вопросы, отвечайте в 1 теме.
...
Рейтинг: 0 / 0
28.05.2016, 14:47
    #39245438
Jagare
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
ZVI,

Интересный макрос, но только что мы получим, если хотя бы один из столбцов таблицы имеет бинарный тип данных I?
...
Рейтинг: 0 / 0
30.03.2017, 14:13
    #39430130
btm_1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
ZVI,
спасибо, мучилась два дня , спа-спа
...
Рейтинг: 0 / 0
03.04.2017, 18:40
    #39432279
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие DBF файла
btm_1ZVI, спасибо, мучилась два дня , спа-спа
Рад, что помогло, спасибо за отклик! :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Открытие DBF файла / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]