如何将字符串传递给VBA中的函数?

时间:2013-07-31 14:48:18

标签: function vba ms-access access-vba

我正在尝试将不同的表名称作为字符串传递,以便它们可以在将我指定的表导出到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 

1 个答案:

答案 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抱怨“操作或方法需要表名参数。“