2013-07-31 69 views
1

我想通過不同的表名作爲字符串,所以他們可以在一個函數中使用,將導出我指定到Excel電子表格的表。我無法使它工作,因爲當我嘗試執行「DoCmd.TransferSpreadsheet」命令時,它說它不能識別「table_name」。我認爲,如果我傳遞了一個字符串名稱與它的工作表的名稱,但顯然它沒有。我錯過了字符串,還是我不允許這樣做?另外,我應該將其導出爲什麼類型的Excel電子表格?我沒有看到不同類型之間的差異。如何將字符串傳遞給VBA中的函數?

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

關於電子表格類型的選擇,請打開* DoCmd.TransferSpreadsheet Method *的Access幫助主題並查找將您帶到* AcSpreadSheetType枚舉*的鏈接。 – HansUp

回答

2

table_name的是你使用持有表的名稱參數的名稱。因此,對於TransferSpreadsheet,請勿在該名稱周圍使用引號。然後您將餵食TransferSpreadsheet表格的名稱而不是文字「table_name」

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

督察,要處理table_name的爲你做你的strFinalName變量一樣---不引號括起來。

此外,您還有2個其他功能,其中稱爲您的NAME_FILE()功能。其中的每一個都會創建一個本地字符串變量,並將其傳遞給NAME_FILE()。但是,您不會爲這些變量中的任何一個指定表名,所以結果與NAME_FILE("")相同。然後,當您點擊TransferSpreadsheet語句時,您的空字符串("")爲表名參數導致訪問投訴「該操作或方法需要一個表名稱參數。」

+0

再次感謝您幫助HansUp!我嘗試了你說的,但是我得到了這個錯誤消息「該操作或方法需要一個表名參數。」 – nedstark179

+0

如果將'MsgBox(table_name)'添加到'NAME_FILE'函數,您會看到什麼? – HansUp

+0

它顯示一個空白的消息框 – nedstark179

相關問題