2017-02-23 18 views
1

我正在使用Access並需要從Excel導入數據。 但是表中有太多的列,我只需要其中的一些。現在我要做的是找出我需要的每個單元格,並將它們合併在一起,然後插入到Access中。有沒有一種簡單的方法將數據導入到VBA的Excel中進行訪問?

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的小白。

+0

您可以鏈接Excel工作表或者您可以使用ADO。 – Fionnuala

+0

我該怎麼辦? – Guoliangcai

+0

看看TransferSpeadsheet。 – Fionnuala

回答

0

考慮直接從MS Access裏面查詢附加查詢,它也可以在DAO/ADO連接中使用。 I/O方法(如DoCmd.TransferSpreadsheet)不允許選擇電子表格中的特定列,除非您創建特殊的Excel選項卡或臨時Access表。

在下面的查詢中相應地調整命名列以及文件/圖紙名稱參考。用方括號或反引號排除任何保留字,空格和特殊字符。

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; 
+0

我很好奇,爲什麼SQL Server應答到MS Access問題? – Fionnuala

+0

他們有什麼東西 – Guoliangcai

+0

其實現在我有一個新的問題,我剛剛做了你說的,它的工作原理,但發現空單元格也會被導入,我該如何解決這個問題。 – Guoliangcai

相關問題