我在导入工作时遇到了一些麻烦:
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文件)
使用Excel 2010 XLSX文件访问2010。
答案 0 :(得分:0)
范围 可选变体。一个字符串表达式,它是电子表格中有效的单元格范围或范围的名称。此参数仅适用于导入。将此参数留空以导入整个电子表格。
B2:F10
,而不是解析Range
对象。
因此,您可以使用范围的Address
属性,例如:
Range:=xlRange1.Address
我无法测试它。
答案 1 :(得分:0)
您正在尝试在文件打开时导入数据,这会给您带来一些问题。 您要做的是打开excel文件,设置范围,保存工作簿,导入范围,然后返回并清除命名范围(如果您愿意)。
如果要导入存储在一个工作表中的两组独立数据,您可能希望将它们拆分为两个单独的工作表,以使您的生活更轻松。
目前,有点像;
unique_ids = set()
for tweet in search_results:
if 'retweeted_status' not in tweet.keys():
continue
retweetIDs = [retweeted_status[id] for retweeted_status in tweet ['retweeted_status']]
unique_ids.update(retweetIds)
使用变量捕获上次使用的行更容易 比如
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)
循环
结束功能
我已经从内存中编写了代码更改但这应该会让你走上正轨,如果你仍然坚持下去,请告诉我,我可以挖掘出我为你编写的前一个例子! HTH