【问题标题】:Error with transferspreadsheet command传输电子表格命令出错
【发布时间】:2016-02-03 00:10:05
【问题描述】:

尝试将数据从 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

【问题讨论】:

    标签: excel ms-access vba


    【解决方案1】:

    如果您要导入的数据在指定范围内 ("ExportRange"),请使用该名称作为 Range 参数。在这种情况下,甚至不要提及工作表名称。

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

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

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

    【讨论】:

    • 像冠军一样工作!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多