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

все.
...
Рейтинг: 0 / 0
импорт из dbf в excel
    #33764995
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
импорт из dbf в excel
    #33765339
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
Период между сообщениями больше года.
импорт из dbf в excel
    #39709353
Sema9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
импорт из dbf в excel
    #39709356
Sema9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон, вопрос задал в секции цитирования

А можно где-то здесь указать кодировку DBF-файла ?
Ато у меня кракозябры селектит из текстовых полей
...
Рейтинг: 0 / 0
импорт из dbf в excel
    #39709397
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну скажем для ДОСовых DBF (кодовая 866) это
Код: vbnet
1.
"Extended Properties=dBASE IV;charset=866"
...
Рейтинг: 0 / 0
импорт из dbf в excel
    #39709423
Sema9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / импорт из dbf в excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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