【问题标题】:Run-time error '2498' - Access 2010 VBA - DoCmd.TransferSpreadsheet运行时错误“2498”-Access 2010 VBA-DoCmd.TransferSpreadsheet
【发布时间】:2015-06-08 12:03:16
【问题描述】:

我正在编写一个脚本,它根据用户输入过滤查询,然后此查询中的数据将用于创建一个新表qryMyExportedData。从那里,数据将被导出到ExportedData.xlsx。当我尝试运行我的代码时,我收到以下错误:

Run-time error '2498': An expression you entered is the wrong data type for one of the arguments.

我的代码:

Private Sub Query_Click()
  Dim strExport as String
  strExport = "SELECT * FROM qryCostDepLosses WHERE [Maintenance Type]  = '" & Me.MainType & "' AND [Date] = #" & Me.Date & "#"

  Set qdfNew = CurrentDb.CreateQueryDef("myExportQueryDef", strExport)

  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "myExportQueryDef", CurrentProject.Path & "\ExportedData.xlsx", "True"

  CurrentDb.QueryDefs.Delete qdfNew.Name 'cleanup

End Sub

我已将错误范围缩小到DoCmd.TransferSpreadsheet 行。我相信 strExport 看起来应该如此。数据也会导出到 myExportQueryDef。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    您正在尝试将布尔值作为字符串发送。所以代码应该是这样的:

    Private Sub Query_Click()
      Dim strExport as String
      strExport = "SELECT * FROM qryCostDepLosses WHERE [Maintenance Type]  = '" & Me.MainType & "' AND [Date] = #" & Me.Date & "#"
    
      Set qdfNew = CurrentDb.CreateQueryDef("myExportQueryDef", strExport)
    
      DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "myExportQueryDef", CurrentProject.Path & "\ExportedData.xlsx", True
    
      CurrentDb.QueryDefs.Delete qdfNew.Name 'cleanup
    
    End Sub
    

    基本上只需删除 True 周围的引号。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2016-12-08
    相关资源
    最近更新 更多