标题: 如何批量导入CSV文件到ACCESS [打印本页] 作者: 8868 时间: 2007-8-31 21:36 标题: 如何批量导入CSV文件到ACCESS 手中有成千上万个CSV格式的文件,如果通过手工方式导入到ACCESS中,势必要花很多时间.有没有谁知道可以批量导入CSV文件到ACCESS的代码?或者有没有谁知道将CSV文件批量转换成XLS文件的代码?(转换成XLS后就可以批量导入到ACCESS中了)作者: Grant 时间: 2007-9-1 14:47
Public Function ReadCSVFile(ByVal strFilePath As String, ByVal strFileName As String)
Dim I As Integer
Dim intCount As Long
Response = MsgBox("是否要覆盖原有[" & rs(16) & "],点是将更新所有[" & rs(16) & "]数据?", 4 + 32 + 256, "系统提示")
If Response = vbNo Then ' 当用户按下“否”。
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
Exit Function
End If
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * from info where ship='" & rs(16) & "'" '删除重复数据
DoCmd.SetWarnings True
End If
Set conn1 = CurrentProject.Connection
sql = "Select * From info "
rs1.Open sql, conn1, 1, 3
Do Until rs.EOF '循环更新数据表
rs1.AddNew
For I = 0 To 26
rs1(I) = rs(I)
Next
rs.MoveNext
Loop
rs1.UpdateBatch
rs1.Close
conn1.Close
Set rs1 = Nothing
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Function
自写的函数,楼主更改一下便可以批量导入csv文件了作者: Henry D. Sy 时间: 2007-9-1 14:52
刚刚出炉的,楼主趁热吃吧!作者: 8868 时间: 2007-9-1 16:05
版主的函数是不是将CSV文件导入到ACCESS后都自成一个表呢?我的意思是将现有的所有CSV文件的数据都导入到ACCESS的一个表中,然后再对表进行相关的数据操作.麻烦版主帮忙!作者: Grant 时间: 2007-9-1 16:09
同理的,我只是把它函数化而已作者: Victor_Duane 时间: 2007-9-1 17:09
GG,这个函数写成两个函数,是不是条理更加清晰一点也好理解一点啊作者: 8868 时间: 2007-9-1 18:37
那么这个函数在窗体的控件中怎么调用呢?我很菜的,谢谢版主帮忙!作者: Grant 时间: 2007-9-1 18:40
请上传你的示例说明文件我给你改改吧.这样也方便别人使用,现在这个函数只是我给一网友临时写的而已.作者: 8868 时间: 2007-9-1 20:45
我做了一个示例,请版主帮忙填入代码,谢谢了!作者: goto2008 时间: 2007-9-2 09:15
CSV格式是啥东东?作者: 8868 时间: 2007-9-2 14:08
就是文本格式的东东.在EXCEL的另存为对话框中有该格式.还请版主Grant帮忙帮到底,谢谢!作者: 8868 时间: 2007-9-2 20:40
本人还是没有搞定,麻烦好心人帮忙!作者: Grant 时间: 2007-9-3 04:09
时间不是很充裕,只能晚上来弄了见谅
[attach]26108[/attach]作者: Henry D. Sy 时间: 2007-9-3 08:12
夜猫子,都不用睡觉了。作者: Grant 时间: 2007-9-3 08:54
错了,是小睡一下继续工作.作者: 8868 时间: 2007-9-3 10:47 标题: 回复 #13 Grant 的帖子 非常感谢版主的帮忙,由衷的对你说一声谢谢!作者: 8868 时间: 2007-9-3 16:18
还有一个问题想请教版主,为了防止重复导入数据,我在tbl出口名细中设置了三个主键。如果重复导入数据,系统会出现一般用户无法看懂的提示。在你写的函数中,加入什么样的代码后可以隐藏系统默认提示?(DoCmd.Setwarnings Flase好象不起作用)谢谢版主指教!作者: Grant 时间: 2007-9-3 17:38
Do Until rs.EOF
Set conn1 = CurrentProject.Connection
sql = "Select * From tbl出口名细 where [VENDOR NO]='" & rs(0) & "'"
rs1.Open sql, conn1, 1, 3
If rs1.RecordCount = 1 Then
表中有纪录
Else
rs1.AddNew
For I = 0 To 7
rs1(I + 1) = rs(I)
Next
End If
rs.MoveNext
Loop作者: Grant 时间: 2007-9-3 17:39
或者可用 Dcount 等方法来判断..作者: 8868 时间: 2007-9-11 10:19
不好意思,又要麻烦版主了!用了你写的程序后,导入文件时,有三个字段始终导不进去(币制,单价,总价).请版主看看是怎么回事!谢谢!作者: 8868 时间: 2007-9-11 15:38
麻烦斑竹帮忙看看!作者: Grant 时间: 2007-9-11 16:14
主要是For I = 0 To 10 原来是 For I = 0 To 7 字段数量不同 而你有几个字段是必填,所以出现这个情况