Мне нужно импортировать несколько таблиц Excel в таблицу Access. В настоящее время электронные таблицы выглядит следующим образом:Выполнить макрос Excel, затем импортировать таблицу доступа в несколько файлов Excel в папке
ID | Year | Sales | Commissions
-- | ---- | ----- | -----------
1 | 2016 | 1,000 | 100
2 | 2016 | 2,000 | 200
3 | 2016 | 3,000 | 300
4 | 2016 | 1,000 | 300
Они должны выглядеть следующим образом:
ID | Name | Year | Month | Sales | Commissions | Discount | Net Sales | %
-- | ---- | ---- | ----- | ----- | ----------- | -------- | --------- | -
1 | John | 2016 | 2 | 1,000 | 100 | | |
2 | Mary | 2016 | 2 | 2,000 | 200 | | |
3 | Jake | 2016 | 2 | 3,000 | 300 | | |
4 | Bob | 2016 | 2 | 1,000 | 300 | | |
Последние три колонки будут пустыми. Имена («John, Mary ...») будут использовать поиск по идентификатору на другой таблице, но это можно сделать позже в Access. 3 строки также должны быть удалены сверху. Месяц («2») будет находиться в пути к файлу Excel. Он будет единственным номером в имени файла. I.e., «2» за февраль. Все электронные таблицы будут находиться в одной папке. Каждая книга Excel будет иметь названия электронных таблиц «DataSheet». Это электронная таблица, которая будет импортирована из каждой книги.
Могу ли я написать сценарий в Access, чтобы сделать все это?
До сих пор я получил это для макроса Excel:
Sub Macro2()
Rows("1:3").Select
Range("A3").Activate
Selection.Delete Shift:=xlUp
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B1").Select
ActiveCell.FormulaR1C1 = "Name"
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D1").Select
ActiveCell.FormulaR1C1 = "Month"
Range("G1").Select
ActiveCell.FormulaR1C1 = "Discount"
Range("H1").Select
ActiveCell.FormulaR1C1 = "Net Sales"
Range("I1").Select
ActiveCell.FormulaR1C1 = " %"
Range("G2").Select
End Sub
Here's something, как это будет импортировать несколько файлов:
Dim strPathFile As String, strFile As String, strPath As String
Dim strTable As String
Dim blnHasFieldNames As Boolean
blnHasFieldNames = False
strTable = "tablename"
strFile = Dir(strPath & "*.xls")
Do While Len(strFile) > 0
strPathFile = strPath & strFile
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
strTable, strPathFile, blnHasFieldNames
strFile = Dir()
Loop