我使用Access并需要从Excel导入数据。 但是这个表有太多的列,我只需要其中的一些。我现在要做的是找出我需要的每个单元格并将它们合并在一起然后插入Access。
Set file = GetObject(path) 'get excel file
intArrNeedCols = Array(3, 4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 26) 'the columns I need
For row = 2 To file.Sheets(1).UsedRange.Rows.Count 'loop and collect values of each cell in the target column,the first row is title
strSQL = "INSERT INTO orderlist VALUES("
For Each col In intArrNeedCols
strSQL = strSQL & "'" & file.sheets(1).cells(row, col) & "',"
Next
…… 'other statements,like excute sql statement
Next
正如您所看到的,这太复杂且难以维护,我想知道是否有一种简单的方法可以做到这一点,非常感谢您可以在此处发布代码,因为我可以是VBA的noob。
答案 0 :(得分:0)
考虑从MS Access追加查询中直接查询,该查询也可用于DAO / ADO连接。除非您创建特殊的Excel选项卡或临时访问表,否则DoCmd.TransferSpreadsheet
等I / O方法不允许在电子表格中选择特定列。
在下面的查询中,相应地调整命名列以及文件/工作表名称引用。使用方括号或反引号转义任何保留字,空格和特殊字符。
INSERT INTO OrderList
SELECT t.[Col1], t.[Col2], t.[Col3] ...
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Excel\File.xlsx].[SHEETNAME$] t;