Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / импорт из dbf в excel / 10 сообщений из 10, страница 1 из 1
31.05.2006, 14:54
    #33763561
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
Собственно, требуется срочно написать код на VBA для импорта данных из файла DBF на лист excel. Пробовал сам, но что-то не могу разобраться с методами DAO и ADO DB. Срочно нужно, ПОМОГИТЕ!
...
Рейтинг: 0 / 0
31.05.2006, 15:32
    #33763690
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
Господа, ну не ужели нет спецов по VBA(грёбаный язык)
...
Рейтинг: 0 / 0
31.05.2006, 16:21
    #33763893
twenty2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
Тут вообще кто-нить живёт( Неужели нет ни у кого работающего кода?
...
Рейтинг: 0 / 0
31.05.2006, 18:19
    #33764342
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
Workbooks.Open("aaaa.dbf")

все.
...
Рейтинг: 0 / 0
01.06.2006, 09:17
    #33764995
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
twenty2Господа, ну не ужели нет спецов по VBA(грёбаный язык)
Нормальный язык, весьма простой.

twenty2Тут вообще кто-нить живёт( Неужели нет ни у кого работающего кода?
Поиском пользовался. Ответы в форуме по Office смотрел?

И вообще эта тема с dbf мусолится каждую неделю.

Вариант 1. Самый простой.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub X1()
    Dim wb As Excel.Workbook

    Set wb = Application.Workbooks.Open(Filename:="D:\1\Расходы.dbf")

    wb.SaveAs "D:\1\Расходы.xls"

    Set wb = Nothing
End Sub

Вариант 2. Метод QueryTable.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Sub X2()
    Dim ws As Excel.Worksheet
    Dim strCnnString As String
    Dim strSQL As String
    
    Set ws = ActiveSheet
    
    strCnnString = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=D:\1;" & _
      "Extended Properties=dBASE IV;" & _
      "User ID=Admin;Password="
    strSQL = "SELECT ITEM FROM Расходы"

    ws.QueryTables.Add( _
      Connection:=strCnnString, _
      Destination:=ws.Range("A1"), _
      Sql:=strSQL).Refresh
End Sub

Вариант 3. Метод CopyFromRecordset.

Код: 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.
Public Sub X3()
    Dim ws As Excel.Worksheet
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set ws = ActiveSheet
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=D:\1;" & _
      "Extended Properties=dBASE IV;" & _
      "User ID=Admin;Password="
    
    rst.Open "SELECT ITEM FROM Расходы", cnn, _
      adOpenStatic, adLockReadOnly
    
    ws.Range("A1").CopyFromRecordset rst
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing
End Sub
...
Рейтинг: 0 / 0
01.06.2006, 11:33
    #33765339
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
Период между сообщениями больше года.
27.09.2018, 15:23
    #39709353
Sema9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
AshtonВариант 3. Метод CopyFromRecordset.

Код: vbnet
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.
Public Sub X3()
    Dim ws As Excel.Worksheet
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set ws = ActiveSheet
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=D:\1;" & _
      "Extended Properties=dBASE IV;" & _
      "User ID=Admin;Password="
    
    rst.Open "SELECT ITEM FROM Расходы", cnn, _
      adOpenStatic, adLockReadOnly
    
    ws.Range("A1").CopyFromRecordset rst
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing
End Sub



А можно где-то здесь указать кодировку DBF-файла ?
Ато у меня кракозябры селектит из текстовых полей
...
Рейтинг: 0 / 0
27.09.2018, 15:26
    #39709356
Sema9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
Пардон, вопрос задал в секции цитирования

А можно где-то здесь указать кодировку DBF-файла ?
Ато у меня кракозябры селектит из текстовых полей
...
Рейтинг: 0 / 0
27.09.2018, 16:18
    #39709397
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
Ну скажем для ДОСовых DBF (кодовая 866) это
Код: vbnet
1.
"Extended Properties=dBASE IV;charset=866"
...
Рейтинг: 0 / 0
27.09.2018, 16:46
    #39709423
Sema9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
импорт из dbf в excel
AkinaНу скажем для ДОСовых DBF (кодовая 866) это
Код: vbnet
1.
"Extended Properties=dBASE IV;charset=866"


Выдает ошибку: Невозможно найти устанавливаемый ISAM. (скриншот прилагается)
Возможно потому, что вместо Microsoft.Jet.OLEDB.4.0 я использую Microsoft.ACE.OLEDB.12.0 по причине того, что первый у меня не установлен. Хотел найти и доустановить - не нашел, а в Гугле намекают, что в 10 винде он не поддерживается
Возможно, для Microsoft.ACE.OLEDB.12.0 другой синтаксис ?
Офис у меня 2010, версия Эксцеля 14.0.7212.5000 64-разрядная

Не подскажите что ему написать ?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / импорт из dbf в excel / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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