我希望能够像这样一个http://ichart.yahoo.com/table.csv?s=^GSPC获取csv文件,这将是位于工作簿文件夹 中,并将其作为已存在的空白MS Access数据库中名为GSPC的表格。空白数据库文件将位于相同的文件夹中,并命名为tblImport.accdb。我看过很多论坛主题,发现对于像我这样的noob来说不够简单。我很乐意提供任何帮助。使用Excel VBA将CSV转换为MS Access数据库中的表格
回答
将CSV导入Access的最简单方法是在Access应用程序会话中使用DoCmd.TransferText。
但是你想使用Excel VBA。在这种情况下,如果您的MS Office安装包含Access(MSACCESS.EXE),则可以使用Excel VBA自动执行Access并仍然使用DoCmd.TransferText
以方便CSV导入。
我在Excel 2007中测试了这个模块,它创建了GSPC
表,并将table.csv
中的数据存储在该表中。如果该表已存在,则TransferText
将简单地附加CSV数据。您可以在运行TransferText
之前执行DELETE FROM GSPC
,以便表格仅包含最新的CSV数据。
考虑到你说你是一个noob,这可能看起来有点吓人。但以下大部分内容都是我添加的用于指导您的评论。该过程的实际“胆”是相当短暂和简单。
Option Explicit
Public Sub ImportCsvToAccess()
Const cstrCsvFile As String = "table.csv"
Const cstrDbFile As String = "tblImport.accdb"
Const cstrTable As String = "GSPC"
Dim strFolder As String
'* early binding *'
' requires reference to Microsoft Access <version> Object Library
'Dim objAccess As Access.Application
'Set objAccess = New Access.Application
'* late binding *'
' no reference required
Dim objAccess As Object
Set objAccess = CreateObject("Access.Application")
' this is useful during development
' in production, you may prefer to hide it (Visible = False)
objAccess.Visible = True
strFolder = ActiveWorkbook.Path & Chr(92)
'Debug.Print strFolder
objAccess.OpenCurrentDatabase strFolder & cstrDbFile, _
Exclusive:=True
'* early binding *'
'objAccess.DoCmd.TransferText _
' TransferType:=acImportDelim, _
' TableName:=cstrTable, _
' Filename:=strFolder & cstrCsvFile, _
' HasFieldNames:=True
'* late binding *'
' acImportDelim = 0
objAccess.DoCmd.TransferText _
TransferType:=0, _
TableName:=cstrTable, _
Filename:=strFolder & cstrCsvFile, _
HasFieldNames:=True
objAccess.Quit
Set objAccess = Nothing
End Sub
早期绑定在开发过程中很有用,因为它为您提供智能感知和类型检查。对于生产的后期绑定意味着您可以放弃引用以避免使用不同的Office版本进行部署。但是如果你愿意,你可以为两者进行早期绑定。 – HansUp
这是一个美丽的解决方案。它比我希望的更快,更好。谢谢你的评论。谢谢HansUp。 – steinbitur
- 1. 将大型MS Access数据库转换为CSV
- 2. MS Access将.csv转换为.xls
- 3. 使用Excel VBA将数据导出到MS Access表
- 4. SQL将行对转换为MS ACCESS数据库中的列
- 5. MS Access VBA格式Excel
- 6. 使用VBA将数据表格Excel插入到Access 2010中
- 7. 将MySQL .sql文件转换为MS Access数据库
- 8. 使用Python将CSV转换为Excel
- 9. 如何使用Excel VBA将Excel XLS转换为Access MDB
- 10. MS Access VBA中的多个数据库?
- 11. 使用Access 2003将Access 2000数据库转换为Access 97
- 12. 将Excel表格链接到MS Access中的表格 - 使用VBScript
- 13. 将CSV转换为Excel表
- 14. 如何将.csv转换为.mdb(MS Access)格式
- 15. VBA Excel - 将列名保存到MS Access的电子表格中
- 16. 如果表格不在Excel中的Access数据库中VBA
- 17. 使用逗号将Excel文件转换为CSV VBA
- 18. 使用Python将MS Access中的数据复制到MS Excel中
- 19. 如何将MS Access数据库编码转换为UTF-8?
- 20. 将MySQL转换为MS Access
- 21. 立即转换为MS Access VBA中的特定格式
- 22. 如何使用VBA将XML中的数据转换为excel?
- 23. 可在MS Access中使用的VBA Excel函数列表
- 24. VBA宏 - MS Access的数据库建议
- 25. 将MS Access中的VBA代码转换为SQL服务器
- 26. 将Access数据库转换为SQL Server
- 27. 将Ms sqlserver查询转换为Ms Access?
- 28. 使用MS Access表中的数据填充MS Word表格
- 29. 将Access数据库转换为SQL
- 30. 使用POST-Login将多个HTML表格转换为CSV/Excel
至少给它一个镜头和人都会有部分的激励来帮助你。 – Tarik
如果您计划使用VBA,您需要查看SQL'Create'来创建一个表和http://stackoverflow.com/questions/9564908/open-csv-file-via-vba-performance来查看CSV可以打开。另外,如果您计划在处理数据之后再查看记录集。 – Grant
我不明白你为什么想让Excel参与此事。如果您想使用VBA将CSV导入到Access中,则可以使用Access VBA中的“DoCmd.TransferText”。它可以为您创建Access表并将CSV数据保存在该表中。 http://msdn.microsoft.com/en-us/library/office/bb214141(v=office.12).aspx – HansUp