2017-02-23 92 views
1

Я использую Access и должен импортировать данные из Excel. Но в таблице слишком много столбцов, мне просто нужны некоторые из них. Что я сейчас делаю, это выяснить каждую ячейку, в которой я нуждаюсь, и объединить их вместе, а затем вставить в Access.Есть ли простой способ импорта данных в Access из Excel с помощью VBA?

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

Рассмотрите возможность прямого запроса из Excel внутри запроса доступа MS Access, который также может использоваться в соединениях DAO/ADO. Методы ввода-вывода, такие как DoCmd.TransferSpreadsheet, не позволяют выбирать определенные столбцы в электронной таблице, если вы не создадите специальную вкладку Excel или таблицу доступа Temp 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

У них есть что-то incommon – Guoliangcai

+0

На самом деле теперь у меня появился новый вопрос, я просто сделал то, что вы сказали, он работает, но обнаружил, что пустая ячейка также будет импортирована, как я могу решить эту проблему. – Guoliangcai