Есть такая задача: Имеется файлы DBF с 6 полями с кодировкой Win. Нужно считать информацию с этого ДБФ файла по строчно и загнать в массив.
[vba]
Код
Sub DBF() Dim Arr() Dim p As String, f As String, wb As Workbook Dim sFileName, sTempFileName As String Application.ScreenUpdating = False: Application.DisplayAlerts = False
With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Выбрать папку": .Show If .SelectedItems.Count = 0 Then Exit Sub Else p = .SelectedItems(1) & "\" End If End With f = Dir(p & "*.dbf")
Do While f <> "" sFileName = f sTempFileName = "123456.dbf" Name p + sFileName As p + sTempFileName
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & p & ";Extended Properties=dBase IV" .Open Set rs = .Execute("SELECT * FROM " & sTempFileName) Arr ()= rs.Fields.Item(1).Value .Close End With
Name p + sTempFileName As p + sFileName f = Dir Loop End Sub
[/vba]
Доброго времени Всем.
Есть такая задача: Имеется файлы DBF с 6 полями с кодировкой Win. Нужно считать информацию с этого ДБФ файла по строчно и загнать в массив.
[vba]
Код
Sub DBF() Dim Arr() Dim p As String, f As String, wb As Workbook Dim sFileName, sTempFileName As String Application.ScreenUpdating = False: Application.DisplayAlerts = False
With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Выбрать папку": .Show If .SelectedItems.Count = 0 Then Exit Sub Else p = .SelectedItems(1) & "\" End If End With f = Dir(p & "*.dbf")
Do While f <> "" sFileName = f sTempFileName = "123456.dbf" Name p + sFileName As p + sTempFileName
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & p & ";Extended Properties=dBase IV" .Open Set rs = .Execute("SELECT * FROM " & sTempFileName) Arr ()= rs.Fields.Item(1).Value .Close End With
Name p + sTempFileName As p + sFileName f = Dir Loop End Sub
Видимо, подразумевается, что файлов несколько, и их нужно впихнуть в один массив
[vba]
Код
Sub DBF() Const sTempFileName = "123456.dbf" Dim p$, f$, t$, c$, sFileName$, arr As Variant With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Выбрать папку": .Show If .SelectedItems.Count = 0 Then Exit Sub Else p = .SelectedItems(1) & "\" End If End With f = Dir(p & "*.dbf") t = "tmp.dbf" sFileName = p + f FileCopy sFileName, p + t c = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & p & ";Extended Properties=dBASE IV" With CreateObject("ADODB.Recordset") .Open "delete * from tmp", c Do While f <> "" If f <> t Then Name sFileName As p + sTempFileName .Open "insert into tmp select * from 123456", c Name p + sTempFileName As sFileName End If f = Dir$() Loop .Open "select * from tmp", c arr = .getrows .Close .Open "drop table tmp", c End With End Sub
[/vba]
Видимо, подразумевается, что файлов несколько, и их нужно впихнуть в один массив
[vba]
Код
Sub DBF() Const sTempFileName = "123456.dbf" Dim p$, f$, t$, c$, sFileName$, arr As Variant With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Выбрать папку": .Show If .SelectedItems.Count = 0 Then Exit Sub Else p = .SelectedItems(1) & "\" End If End With f = Dir(p & "*.dbf") t = "tmp.dbf" sFileName = p + f FileCopy sFileName, p + t c = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & p & ";Extended Properties=dBASE IV" With CreateObject("ADODB.Recordset") .Open "delete * from tmp", c Do While f <> "" If f <> t Then Name sFileName As p + sTempFileName .Open "insert into tmp select * from 123456", c Name p + sTempFileName As sFileName End If f = Dir$() Loop .Open "select * from tmp", c arr = .getrows .Close .Open "drop table tmp", c End With End Sub
Уточню суть задачи. Есть несколько файлов DBF, каждый файл нужно загрузить в массив. Потом в массиве сделать сверку данных з другим DBF файлом. После чего данные из массива записать в таблицу или же сразу в DBF определенном шаблоне. Для дальнейшей загрузки файлов бухгалтерской программы.
doober, krosav4ig, Спасибо вам за подсказку.
Уточню суть задачи. Есть несколько файлов DBF, каждый файл нужно загрузить в массив. Потом в массиве сделать сверку данных з другим DBF файлом. После чего данные из массива записать в таблицу или же сразу в DBF определенном шаблоне. Для дальнейшей загрузки файлов бухгалтерской программы.MisterYu