我正在尝试将不同的表名称作为字符串传递,以便它们可以在将我指定的表导出到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
答案 0 :(得分:2)
table_name 是用于保存表名称的参数的名称。因此,对于TransferSpreadsheet
,请勿在该名称周围使用引号。然后,您将提供TransferSpreadsheet
表格的名称而不是文字“table_name”。
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
table_name, strFinalName, True
IOW,你想要处理 table_name 和你的 strFinalName 变量一样 - 不要用引号括起名字。
此外,您还有另外两个调用NAME_FILE()
功能的功能。其中每个都创建一个传递给NAME_FILE()
的本地字符串变量。但是,您没有为这些变量中的任何一个分配表名,因此结果与NAME_FILE("")
相同。然后,当您点击TransferSpreadsheet
语句时, TableName 参数的空字符串(""
)会导致Access抱怨“操作或方法需要表名参数。“