У меня есть некоторые проблемы при получении моего импорта работать:Импорт Excel в Access с пользовательским динамическим диапазоном
Function importMetrics()
Dim strFile As String
Dim strPath As String
Dim strWorksheet As String
Dim strTable As String
'Excel variables
Dim xlApp As Excel.Application
Dim xlFile As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlRange1 As Excel.Range
Dim xlRange2 As Excel.Range
Dim r1, r2 As String
Dim r#, c#
Dim clVal As String
'Set File Path
strPath = CurrentProject.Path & "\Data\2015\01 - January"
'check if directory exists
If Len(Dir(strPath, vbDirectory)) = 0 Then
MsgBox ("File Doesn't exist")
End
End If
'Import all Files
strFile = Dir(strPath & "\*.xl*")
'ID which Sheet to Import
strWorksheet = "EP & NBO DATA"
'ID Table to Import To
strTable = "tbl_MIPData"
'start loop
Do While strFile <> ""
'Open File
'Get the info from Excel:
Set xlApp = New Excel.Application
Set xlFile = xlApp.Workbooks.Open(strPath & "\" & strFile, False, True)
Set xlSheet = xlFile.Sheets(strWorksheet)
Set xlRange1 = xlSheet.Range("A1" & xlSheet.Range("A1").End(xlDown).End(xlToRight)).Select
Set xlRange2 = xlSheet.Range("N1" & xlSheet.Range("N1").End(xlDown).End(xlToRight)).Select
'Import File Range A
DoCmd.TransferSpreadsheet _
transfertype:=acImport, _
tablename:=strTable, _
FileName:=strPath & "\" & strFile, _
hasFieldNames:=False, _
Range:=xlRange1
'Import File Range B
DoCmd.TransferSpreadsheet _
transfertype:=acImport, _
tablename:=strTable, _
FileName:=strPath & strFile, _
hasFieldNames:=False, _
Range:=strWorksheet & "!" & xlRange2
'Close Excel File
xlApp.Quit
Set xlApp = Nothing
Loop
End Function
Это код, который я написал до сих пор. Я думаю, что это связано с тем, как я открываю файлы Excel. Диапазон выходит из строя на xlRange1
и xlRange2
. Если я поставлю xlSheet.Select
, он, похоже, не исправит его.
Я нахожусь в этом состоянии. Кроме того, я не мог много узнать о том, как рекурсивно ходить в подкаталогах (например, перемещать все файлы Excel в данных)
Доступ к 2010 году с файлами XLSX Excel 2010.
Я не могу изменить исходный лист, поскольку он только для чтения. Я посмотрю, могу ли я сохранить первую и последнюю строки, а затем посмотреть, работает ли она. – Idgarad
Если рабочий лист прочитан, выполните только сохранение, а затем удалите свойство только для чтения, импортируйте свои данные, а затем удалите копию, которая будет хорошим подходом к принятию –
. Найденное решение.Пришлось открыть его дважды. Перенос электронной таблицы не собирался работать, поэтому я открыл ее, найдя диапазон, затем используя ACE, чтобы прочитать excel через SQL и сделать INSERT INTO с результатами. – Idgarad