1

我正在尝试将不同的表名作为字符串传递,以便它们可以在将我指定的表导出到 Excel 电子表格的函数中使用。我无法让它工作,因为当我尝试执行“DoCmd.TransferSpreadsheet”命令时,它说它无法识别“table_name”。我认为如果我传递一个带有表名的字符串名称,它将起作用,但显然它没有。我是否传递了错误的字符串,或者我不允许这样做?另外,我应该将它导出为什么类型的 Excel 电子表格?我没有看到不同类型之间的差异。

Public Function NAME_FILE(table_name As String)

Dim strName As String
Dim strLocation As String
Dim strXLS As String
Dim strFinalName As String

strName = InputBox("What do you want to name the file?", "File Name")
strLocation = "C:\folder1\"
strXLS = ".xls"
strFinalName = strLocation & "" & strName & "" & strXLS

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "table_name", strFinalName, True

End Function

Public Function EXPORT_PRODUCT_CODE()
Dim T_PRODUCT_CODE As String

NAME_FILE (T_PRODUCT_CODE)

End Function

Public Function EXPORT_CAMPAIGN_CODE()
Dim T_CAMPAIGN_CODE As String

NAME_FILE (T_CAMPAIGN_CODE)
End Function 
4

1 回答 1

3

table_name是您用来保存表名称的参数的名称。因此,对于TransferSpreadsheet,不要在该名称周围使用引号。然后,您将TransferSpreadsheet输入表的名称而不是文字文本"table_name"

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
    table_name, strFinalName, True

IOW,您希望像处理strFinalName变量一样处理table_name --- 不要用引号将名称括起来。

此外,您还有 2 个其他功能可以调用您的NAME_FILE()功能。其中每一个都创建了一个本地字符串变量,该变量传递给NAME_FILE(). 但是,您没有为这些变量中的任何一个分配表名,因此结果与NAME_FILE(""). 然后,当您点击该TransferSpreadsheet语句时,您有一个空字符串 ( "") 用于TableName参数,这会导致 Access 抱怨“操作或方法需要一个表名称参数”。

于 2013-07-31T14:55:48.707 回答