Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / импорт *.dbf в excel / 24 сообщений из 24, страница 1 из 1
31.05.2006, 14:44:49
    #33763527
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Собственно, требуется срочно написать код на VBA для импорта данных из файла DBF на лист excel. Пробовал сам, но что-то не могу разобраться с методами DAO и ADO DB. Срочно нужно, ПОМОГИТЕ!
...
Рейтинг: 0 / 0
31.05.2006, 15:02:21
    #33763585
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Ну же, кто-нибудь!!!
...
Рейтинг: 0 / 0
31.05.2006, 15:20:24
    #33763646
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Код: 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
31.05.2006, 15:23:00
    #33763659
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
это DAO
соответственно нужно в referens подключить ссылку "Microsoft DAO..."
...
Рейтинг: 0 / 0
31.05.2006, 15:31:37
    #33763683
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Спасибо, конечно, только этот пример с access, а мне надо dbase. Попробовал просто поменять путь на \test.dbf говорит, что нераспознаный формат базы данных ...\test.dbf . Такую же ошибку я и сам получаю, а как сделать, чтобы работало?(
...
Рейтинг: 0 / 0
31.05.2006, 15:36:53
    #33763700
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Код: 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
31.05.2006, 15:38:37
    #33763709
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Пардон, вкралась очепятка. DBQ=C:
...
Рейтинг: 0 / 0
31.05.2006, 15:39:47
    #33763711
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
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
31.05.2006, 15:40:14
    #33763712
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Общая ошибка ODBC (
...
Рейтинг: 0 / 0
31.05.2006, 15:41:44
    #33763716
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Пред пост это для S.PR
...
Рейтинг: 0 / 0
31.05.2006, 15:45:05
    #33763739
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
twenty2Пред пост это для S.PR
Проверено: работает.
Microsoft DAO 3.6 Object Library подключил?
...
Рейтинг: 0 / 0
31.05.2006, 15:46:17
    #33763745
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
to vkdor
Это всё круто, но проблема как раз в том, что ни одна из этих connectionstring с сайта не работает правильно с *.DBF. Например, для MSSQL - всё ништяк, а для этого долбаного DBF нет. Вопрос: есть ли хоть у кого-нить РЕАЛЬНО работающий код для импорта данных из DBF и их вставки на лист excel
...
Рейтинг: 0 / 0
31.05.2006, 15:48:16
    #33763751
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
to S.PR у меня вот здесь
.Refresh
говорит так Общая ошибка ODBC
...
Рейтинг: 0 / 0
31.05.2006, 15:50:59
    #33763763
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
twenty2to S.PR у меня вот здесь
.Refresh
говорит так Общая ошибка ODBC
Файл существует?
...
Рейтинг: 0 / 0
31.05.2006, 15:51:24
    #33763764
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
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
31.05.2006, 15:52:31
    #33763773
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
S.PR twenty2to S.PR у меня вот здесь
.Refresh
говорит так Общая ошибка ODBC
Файл существует?
Да, конечно
...
Рейтинг: 0 / 0
31.05.2006, 15:54:36
    #33763781
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Покажи код.
...
Рейтинг: 0 / 0
31.05.2006, 16:01:29
    #33763820
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
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
31.05.2006, 16:12:36
    #33763865
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Кстати нет ли у кого драйвера DBase. Может надо попробовать их переустановить
...
Рейтинг: 0 / 0
31.05.2006, 16:12:59
    #33763866
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
вроде все верно.
проверь Tools/References и доступ к F:\balance\test.DBF
...
Рейтинг: 0 / 0
31.05.2006, 16:20:25
    #33763889
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Блин, главное на том же самом PHP или PowerBuilder пробую сделать - нет никаких проблем.Всё открывается, читается, а здесь такая засада. Что делать-то???
...
Рейтинг: 0 / 0
31.05.2006, 16:29:11
    #33763930
S.PR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
twenty2Кстати нет ли у кого драйвера DBase. Может надо попробовать их переустановить
Jet есть на сайте Microsoft. Удачи.
...
Рейтинг: 0 / 0
31.05.2006, 23:22:05
    #33764712
Дмит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Пример из умной книжки:
Код: 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
01.06.2006, 11:35:21
    #33765346
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт *.dbf в excel
Вот что удалось сделать. Это точно работает, по крайней мере у меня.

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


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