transferpreadsheet命令出错

时间:2016-02-01 16:24:52

标签: excel-vba ms-access access-vba vba excel

尝试将数据从Excel文件(vrtSelectedItem)导入Access表(MAF),但在DoCmd行上收到“类型不匹配”错误。

数据位于名为“For Export”的工作表中,但我不确定我是否正确指出。但是,可能是其他的东西。

此外,数据位于命名范围“ExportRange”中。是否可以使用名称而不是指定单元格?

    Dim fd As FileDialog
    Dim vrtSelectedItem As Variant
    Dim xl As Object
    Dim wb As Object, ws As Object
    'Dim data1 As Variant

    'Select Excel file
    Set fd = Application.FileDialog(msoFileDialogOpen)
    With fd
        .AllowMultiSelect = True
        .Title = "Select one or more files"
        .InitialFileName = InitPath

        If .Show = True Then
           Set xl = CreateObject("excel.application")

            For Each vrtSelectedItem In .SelectedItems
                DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, MAF, vrtSelectedItem("For Export"), 0, "B1:B72"
            Next
        End If
    End With

1 个答案:

答案 0 :(得分:1)

如果要导入的数据位于命名范围(“ExportRange”),请将该名称用作 Range 参数。在这种情况下,甚至不要提及工作表名称。

TableName 参数应该是字符串值。我假设您要将数据导入名为“MAF”的表中,因此引用该表名。

DoCmd.TransferSpreadsheet TransferType:=acImport, _
    SpreadsheetType:=acSpreadsheetTypeExcel9, _
    TableName:="MAF", _
    FileName:=vrtSelectedItem, _
    HasFieldNames:=False, _
    Range:="ExportRange"

我没有看到CreateObject("excel.application")的价值。您似乎只需要一个简单的TransferSpreadsheet操作,因此您不需要创建Excel应用程序实例。