【发布时间】:2020-03-05 03:42:55
【问题描述】:
代码首先将 dbf 文件更改为 csv。
Sub FindFiles()
Dim strDocPath As String
Dim strCurrntFile As String
Dim Fname As String
strDocPath = "Y:\Eilat\Shapes\"
'strCurrentFile = Dir(strDocPath & "*.*")
strCurrentFile = Dir(strDocPath & "111.dbf")
Workbooks.Open FileName:=strDocPath & strCurrentFile
Fname = Left$(strCurrentFile, Len(strCurrentFile) - 4) & ".csv"
ActiveWorkbook.SaveAs FileName:=strDocPath & Fname, FileFormat:=xlCSVMSDOS, CreateBackup:=False
ActiveWorkbook.Close (True)
Dim filepath As String
Dim sqlinsert As String
Dim sqlvalue As String
Dim sqlquery As String
Dim sqlwhere As String
'Set db = CurrentDb
directory = "Y:\Eilat\Shapes\"
FileName = "111.csv"
Set rs = CreateObject("ADODB.Recordset")
strcon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & directory & ";" _
& "Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
'strSQL = "SELECT * FROM " & FileName
'rs.Open strSQL, strcon
'rs.MoveFirst
Dim strTextLine As String
Dim aryMyData() As String
Open directory & FileName For Input As #1
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, strTextLine ' Read line into variable.
aryMyData = Split(strTextLine, ",") 'Split text into array by comma
'(csv 长度发生变化,例如这是 csv 中的列,但它可以更长。EHANDLE,UseCode,UseCode2,Descriptio,Gush,Helka,Owner,OwnerID,Holder,HolderID,Floor,PhysicalNo,Date,Area ,Comments,Address,StreetName,HouseNo,Telephone,Fax,Email,Manager,Business,SerialNo,MeasuredBy,Height,BlockNo,Mapkey,User1,User2,user3是csv中的列,但可以更长。
strSQL = "??(需要什么sql语句??)
(不知道如何导入到 mdb "Y:\Eilat\Arnona\Eilat.mdb")
Debug.Print strSQL
DoCmd.RunSQL strSQL
Loop
Close
End Sub
【问题讨论】:
-
您实际上有多种选择。您可以链接 csv 文件有一个表,然后只做一个 insert-selet 或者您可以尝试构建一个文本文件和一个导入规范以这种方式导入它。可能还有另外几种方法,但这是我最喜欢的两种方法。
-
我想用代码来做
-
是的,我明白这一点。我建议的事情是通过代码完成的。谷歌我说的东西并学习一些很酷的技术
-
我可以在代码中的 mdb 文件之外使用“导入规范”吗?
-
你真的应该看看这些东西,伙计——我发现这个表格是谷歌的第一个结果。 stackoverflow.com/questions/28950791/…