powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / импорт *.dbf в excel
24 сообщений из 24, страница 1 из 1
импорт *.dbf в excel
    #33763527
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно, требуется срочно написать код на VBA для импорта данных из файла DBF на лист excel. Пробовал сам, но что-то не могу разобраться с методами DAO и ADO DB. Срочно нужно, ПОМОГИТЕ!
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763585
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну же, кто-нибудь!!!
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763646
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Private Sub CommandButton1_Click()
    '---------- объявление переменных ------
    ' переменная типа базы данных
    Dim dbAccess As Database
    ' переменная типа набор записей
    Dim reRecordSet As Recordset
    ' здесь будет SQL запрос
    Dim stSQL As String
    ' переменная типа даты
    Dim daDate As Date
 
    ' а вдруг ошибка
    'On Error GoTo ErrorsDB
 
    ' ---------- получаем данные из ячейки
    daDate = Range("DATES").Value
    ' ---------- работа с базой ------------
    ' откроем базу данных
    Set dbAccess = OpenDatabase(stDBGetPath)
    ' Строим SQL запрос
    stSQL = "SELECT * FROM[Curs] WHERE[Поле1] =""" & daDate & """"
    ' получаем набор значений
     Set reRecordSet = dbAccess.OpenRecordset(stSQL)
    ' если данные получены тогда занести в ячейку
    If (reRecordSet.RecordCount >  0 ) Then
        ' поместить значение в ячейку
        Range("KURS").Value = reRecordSet!Поле2
        ''или
        ''Range("KURS").CopyFromRecordset reRecordSet
    Else
        MsgBox "Not Found"
    End If
 
    ' закрываем набор записей
    reRecordSet.Close
    ' закрываем базу данных
    dbAccess.Close
    ' все в норме конец
    GoTo Ends
    ' ошибка где-то однако
ErrorsDB:
    MsgBox "Произошла ошибка"
Ends:
End Sub

Private Function stDBGetPath() As String
    Dim stTemp As String
    ' взять путь нахождения активной книги
    stTemp = ActiveWorkbook.Path
    ' прибавить имя базы данных
    stDBGetPath = stTemp + "\" + "Curs.mdb"
End Function
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763659
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это DAO
соответственно нужно в referens подключить ссылку "Microsoft DAO..."
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763683
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, конечно, только этот пример с access, а мне надо dbase. Попробовал просто поменять путь на \test.dbf говорит, что нераспознаный формат базы данных ...\test.dbf . Такую же ошибку я и сам получаю, а как сделать, чтобы работало?(
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763700
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
With ActiveSheet.QueryTables.Add(Connection:="odbc;Driver={Microsoft dBase Driver (*.dbf)};DBQ=D:;", _
        Destination:=ActiveSheet.Range("A1"), Sql:="SELECT * FROM C:\FILE.DBF")
    .Refresh
    End With
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763709
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, вкралась очепятка. DBQ=C:
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763711
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Excel как БД
там ссылка на сайт где можно найти строки подключения
Код: plaintext
Sub sdfassdasdg()\n\nDim cnn As ADODB.Connection\n    Dim rst As ADODB.Recordset\n    Dim strCnnString As String\n    Dim strSource As String\n    \n    strSource = "C:\\MyBook.xls"\n    \n    \' Строка подключения ODBC.\n    \'strCnnString = "DRIVER={Microsoft Excel Driver (*.xls)};" _\n    \'  & "ReadOnly=1;DBQ=" & strSource\n    \n    \' Строка подключение OLE DB.\n    strCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _\n      & strSource & ";Extended Properties=Excel 8.0"\n    \n    Set cnn = New ADODB.Connection\n    \n    cnn.Open strCnnString\n    \n    \' Используем метод Execute для создания набора записей.\n    \'Set rst = cnn.Execute("SELECT * FROM [Лист1$]")\n    \n    \' Или для определенного диапазона.\n    \'Set rst = cnn.Execute("SELECT * FROM [Лист1$]A1:B10")\n    \n    \'Do Until rst.EOF\n    \'    Debug.Print rst.Fields("Поле1") & " " & rst.Fields("Поле2")\n    \'    rst.MoveNext\n    \'Loop\n\n    \' Добавляем записи.\n    Set rst = New ADODB.Recordset\n    \n    With rst\n        .CursorLocation = adUseClient\n        .Open "SELECT * FROM [Лист1$]", cnn, adOpenStatic, _\n          adLockOptimistic\n        .AddNew\n        .Fields("Поле1") =  123 \n        .Fields("Поле2") = "Test"\n        .Update\n    End With\n    \n    \' Обновляем записи.\n    \'With rst\n    \'    .CursorLocation = adUseClient\n    \'    .Open "SELECT * FROM [Лист1$] WHERE Поле2=\'Test\'", cnn, _\n    \'      adOpenStatic, adLockOptimistic\n    \'    .Fields("Поле1") = 1234\n    \'    .Update\n    \'End With\n\n    \' По поводу удаления. Из справки MSDN.\n    \' You cannot:\n    \' 1. Delete an entire record at once or you receive the following error message:\n    \' Deleting data in a linked table is not supported by this ISAM.\n    \' You can only delete a record by blanking out the contents of each\n    \' individual field.\n    \' 2. Delete the value in a cell containing an Excel formula or you\n    \' receive the following error message:\n    \' Operation is not allowed in this context.\n    \' 3. You cannot delete the empty spreadsheet row(s) in which the deleted data\n    \' was located, and your recordset will continue to display empty\n    \' records corresponding to these empty rows.\n    \n    rst.Close\n    cnn.Close\n\n    Set rst = Nothing\n    Set cnn = Nothing\n End Sub

твои строки наверно эти
ODBC
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\\mydbpath;"
OLE DB
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\folder;Extended Properties=dBASE IV;User ID=Admin;Password="
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763712
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Общая ошибка ODBC (
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763716
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пред пост это для S.PR
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763739
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twenty2Пред пост это для S.PR
Проверено: работает.
Microsoft DAO 3.6 Object Library подключил?
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763745
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to vkdor
Это всё круто, но проблема как раз в том, что ни одна из этих connectionstring с сайта не работает правильно с *.DBF. Например, для MSSQL - всё ништяк, а для этого долбаного DBF нет. Вопрос: есть ли хоть у кого-нить РЕАЛЬНО работающий код для импорта данных из DBF и их вставки на лист excel
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763751
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to S.PR у меня вот здесь
.Refresh
говорит так Общая ошибка ODBC
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763763
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twenty2to S.PR у меня вот здесь
.Refresh
говорит так Общая ошибка ODBC
Файл существует?
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763764
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub CommandButton1_Click()
MsgBox ("okidoki")
Dim ConnectString, SQLstring, QueryResult
ConnectString = "OLEDB;Driver={SQL Server};Server=(local);Database=balance;Uid=***;Pwd=***;"
SQLstring = "select * from fibo0505 where dat = '2005-05-01'"
With ActiveSheet.QueryTables.Add(Connection:=ConnectString, Destination:=Range("A4"), Sql:=SQLstring)
.Refresh
End With
ActiveSheet.QueryTables(1).Delete 'Kill connect....
End Sub

ВОТ ЭТОТ КОД У МЕНЯ РАБОТАЕТ, НО ОН ДЛЯ MSSQL (
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763773
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S.PR twenty2to S.PR у меня вот здесь
.Refresh
говорит так Общая ошибка ODBC
Файл существует?
Да, конечно
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763781
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи код.
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763820
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub CommandButton4_Click()
With ActiveSheet.QueryTables.Add(Connection:="odbc;Driver={Microsoft dBase Driver (*.dbf)};DBQ=F:\balance;", _
Destination:=ActiveSheet.Range("A4"), Sql:="SELECT * FROM F:\balance\test.DBF")
.Refresh
End With
End Sub

Но ему совершенно явно не нравится odbc в Connection:=
Почему?
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763865
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати нет ли у кого драйвера DBase. Может надо попробовать их переустановить
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763866
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде все верно.
проверь Tools/References и доступ к F:\balance\test.DBF
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763889
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, главное на том же самом PHP или PowerBuilder пробую сделать - нет никаких проблем.Всё открывается, читается, а здесь такая засада. Что делать-то???
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33763930
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twenty2Кстати нет ли у кого драйвера DBase. Может надо попробовать их переустановить
Jet есть на сайте Microsoft. Удачи.
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33764712
Дмит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример из умной книжки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
dim cn as ADODB.Connection
dim adoRS as ADODB.Recordset

pathDBF="C:\dbf\"
strSQL = "SELECT * FROM T2.dbf"

Sey cn= New ADODB.Connection
cn.Provider="Microsoft.Jet.OLEDB.4.0"
cn.ConnectionString = "Data Source=" & pathDBF & "; Extended Properties=dBase III"
cn.Open
Set adoRS = New ADODB.Recordset
adoRS.CursorType=adOpenKeyset
adoRS.LockType=adLockOptimistic
adoRS.Open strSQL, cn
Если формат dBase 4 и 5, то Extended Properties смотри в ветке реестра -
HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\ISAM Formats
...
Рейтинг: 0 / 0
импорт *.dbf в excel
    #33765346
twenty2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что удалось сделать. Это точно работает, по крайней мере у меня.

Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
pathDBF = "F:\balance\"
strSQL = "SELECT * FROM test.dbf"

cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.ConnectionString = "Data Source=" & pathDBF & "; Extended Properties=dBase III"
cnn.Open
Set cmd.ActiveConnection = cnn
cmd.CommandText = strSQL

rst.CursorLocation = adUseClient
rst.Open cmd, , adOpenStatic, adLockBatchOptimistic
ActiveSheet.Range("A4").CopyFromRecordset rst

rst.Close
cnn.Close
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / импорт *.dbf в excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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