Экспорт DBF из таблицы в Excel (с учетом и обращением внимания на тип данных и длину полей)
Я работаю в макросе контейнера Excel Workbook
на Table
в Sheet1
,
И нужно создать файл DBF из Table
С VBA
макро.
1-примечание, что после 2003 года Excel не поддерживает DBF
формат, поэтому я не могу использовать ниже...
ActiveWorkbook.SaveAs _
Filename:="C:\insurance.dbf", _
FileFormat:=xlDBF4, _
CreateBackup:=False
Итак, пожалуйста, напишите VBA
макрос, который сохраняет DBF
из Filtered
диапазон (диапазон с несколькими Area
) того, что Table
в MS-Excel Worksheet
,
2- Могу ли я определить свой собственный тип данных для каждого поля в созданном DBF
вышеуказанным гипотетическим VBA
макрос?
Я не хочу открывать или редактировать существующий *.dbf
, Я просто собираюсь создать и сохранить DBF
с индивидуальными Datatype
а также length
если возможно; из таблицы диапазонов с несколькими областями фильтрации в Worksheet
с VBA
function
,
Можем ли мы использовать:
Dim appAccess as Object
set appAccess = CreateObject("Acss.App")
...
appAccess.Run ...
Для этого?! (Как идея)
Благодарю.
Для более подробного описания:
Есть ли быстрый и тихий способ экспорта dbf
файл из диапазона Excel? Если существует прямой способ создания и сохранения dbf
файл из этого диапазона, это лучше.
1 ответ
Этот код не идеален. Просто обратитесь к нему.
Sub myQuery()
Dim path As String, pathExcel As String
Dim dbName As String
'Dim App As Access.Application
Dim App As Object
'Set App = New Access.Application
On Error Resume Next
Set App = CreateObject("Access.Application")
path = "C:\Users\Administrator\Documents\"
pathExcel = ThisWorkbook.FullName
dbName = "C:\Users\Administrator\Documents\Database1.accdb" '<~~ in access, you create accdb(Database1.accdb) before.
App.OpenCurrentDatabase dbName
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Sheet1", pathExcel '<~~from sheet1 to access
App.DoCmd.TransferDatabase acExport, "DBase IV", path, acTable, "Sheet1", "test.dbf" '<~~ access table to dbf
DoCmd.DeleteObject acTable, "Sheet1"
App.DoCmd.Close
App.DoCmd.Quit
App.Quit
End Sub