2017-02-23 8 views
1

私はAccessを使用しており、Excelからデータをインポートする必要があります。 しかし、テーブルにはカラムが多すぎます。私は今必要なすべてのセルを見つけてそれらをマージしてAccessに挿入するだけです。私はVBAのnoobのだcuzをVBAで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 

あなたが見ることができるように、それは、あなたがここにコードを投稿することができた場合に感謝、それを行うための簡単な方法があり、私は思ったんだけど維持するにはあまりにも複雑で難しいです。

+0

Excelシートをリンクすることも、ADOを使用することもできます。 – Fionnuala

+0

どうすればいいですか? – Guoliangcai

+0

TransferSpeadsheetを見てください。 – Fionnuala

答えて

0

DAO/ADO接続でも使用できるMS Accessの追加クエリ内でExcelから直接クエリを実行することを検討してください。 DoCmd.TransferSpreadsheetのようなI/Oメソッドでは、特別なExcelタブまたは一時アクセステーブルを作成しない限り、スプレッドシート内の特定の列を選択することはできません。

以下のクエリでは、ファイル/シート名の参照と同様に名前付きの列を調整します。予約語、スペース、および特殊文字は、大括弧またはバッククォートでエスケープします。

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

私は不思議です、なぜMS Accessの質問にSQL Serverの答え? – Fionnuala

+0

彼らは何かを持っています – Guoliangcai

+0

実際に今私は新しい質問があった、私はあなたが言ったことは、それは動作しますが、空のセルもインポートされることがわかりました、どうすればこの問題を解決することができます。 – Guoliangcai

関連する問題