将多个电子表格导入Access

时间:2014-01-08 08:27:03

标签: vba ms-access access-vba

我正在尝试将工作簿中的所有电子表格导入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

1 个答案:

答案 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导入向导。如果您没有进口经验,请注意有许多"陷阱"。您的源文档需要没有合并的单元格,不连贯的标题行条目和无数其他障碍。导入向导可能会显示源数据存在一些问题。

最后,如果源工作表为空(没有单元格具有值),则导入将在此时停止。 (这不是您报告的行为,但值得一提。)