2015-06-08 271 views
1

我正在编写一个基于用户输入的过滤查询的脚本,然后这个查询中的数据将用于制作一个新表qryMyExportedData。从那里,数据将被输出到ExportedData.xlsx。当我尝试运行我的代码,我得到以下错误:运行时错误'2498' - Access 2010 VBA - DoCmd.Trasnferspreadsheet

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。

回答

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删除引号。

+0

Jeez .. Idk我没有注意到,谢谢你! –

+0

没问题,很高兴我能够帮助。我使用了这个链接:https://msdn.microsoft.com/en-us/library/office/ff844793.aspx,并通过参数查看了什么不匹配。 – Newd