我正在尝试将工作簿中的所有电子表格导入Access。但是,即使我没有收到任何错误消息,也没有任何内容导入Access。一切都在工作,除了下面提到的那条线,即使看起来Access正在导入电子表格,我的表格中也没有任何内容。
Public Sub Import_Excel_Workbook()
Dim strFile As String
Dim StrFldrPath As String
Dim strfilelist() As String
Dim intFile As Integer
Dim filename As String
DoCmd.SetWarnings False
StrFldrPath = "C:\Documents\SPY\New\"
'Loop through the folder & build file list
strFile = Dir(StrFldrPath & "*.xls")
' (commented-out code removed for clarity)
Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase "C:\Documents\Database2.accdb" 'not dynamic yet
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Open("C:\Documents\SPY\New\SPY_1.xls") 'not dynamic yet
Set colWorksheets = objWorkbook.Worksheets
'cycle through the list of files
'For intFile = 1 To UBound(strfilelist)
'filename = StrFldrPath & strfilelist(intFile) (removed for the time being)
For Each objWorksheet In colWorksheets
Set objRange = objWorksheet.UsedRange
strWorksheetName = objWorksheet.Name & "!" & objRange.Address(False, False)
'########## LINE BELOW SEEMS TO FAIL ############
objAccess.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
"S&P", "C:\Documents\SPY\New\SPY_1.xls", True, strWorksheetName 'not dynamic yet
Next
'Next intFile
DoCmd.SetWarnings True
End Sub
答案 0 :(得分:1)
您似乎正在尝试遵循此方法:http://blogs.technet.com/b/heyscriptingguy/archive/2008/01/21/how-can-i-import-multiple-worksheets-into-an-access-database.aspx。请注意,此技术可让您导入所有标签(工作表),这一点非常重要。
正如评论中所建议的那样,您必须避免将SetWarnings
设置为False。在抑制错误时,您无法解决问题。
您的帖子中包含许多与您的问题无关的代码。请检查https://stackoverflow.com/help/mcve,了解如何以鼓励答案的方式提问。
说了这么多,我建议您更改标签(工作表)名称,使其不包含符号&
。
如果这不能解决您的问题,请尝试使用问题选项卡上的Access导入向导。如果您没有进口经验,请注意有许多"陷阱"。您的源文档需要没有合并的单元格,不连贯的标题行条目和无数其他障碍。导入向导可能会显示源数据存在一些问题。
最后,如果源工作表为空(没有单元格具有值),则导入将在此时停止。 (这不是您报告的行为,但值得一提。)