2009-12-21 44 views
1

我正在MS Access中創建一個將CSV文件導入到表中的宏。我正在使用TransferText操作導入CSV字符串,並且我想讓用戶瀏覽包含CSV字符串的文件。 如何顯示「瀏覽」對話框以啓用用戶選擇文件?如何將「瀏覽文件」對話框添加到transferText命令?

+1

這是http://stackoverflow.com/questions/1091484/how-to-show-open-file-dialog-in-access-2007-vba – Fionnuala 2009-12-22 10:49:23

+1

幾乎重複我使用Access 2002( XP),我做的第一件事就是購買Access 2002 Developer's Handbook。有人認爲它是Access編程的「聖經」:http://www.amazon.com/Access-2002-Desktop-Developers-Handbook/dp/0782140092/ref=sr_1_2?ie=UTF8&s=books&qid=1261494653&sr=1-2 。它包含大量的示例代碼。事實上,Tony Toews指出的這個鏈接來自該書的作者之一,但該書更好地解釋瞭如何使用它。 – 2009-12-22 15:13:02

回答

1

替代方案(我會說是@Tony Toews和@draice推薦的API調用的第二選擇)將使用Application.FileDialog對象。只要VBA在Access中,這已經是Office自動化庫的一部分,但在Access的最新版本中(從A2002或A2003開始,我不知道哪一個),頂級Access應用程序提供了一個這個對象的包裝。但是,請注意,如果沒有對Office自動化庫的引用,那麼在沒有引用的情況下,不能使用顯示在Intellisense中的ENUM值(有用的錯誤消息會通知您並提供創建引用)。簡而言之,如果您最好像使用帶有後期綁定的自動化對象那樣使用它,除非您不必使用Application.CreateObject初始化頂級對象,因爲它已經在那裏供您使用。

編輯:

@draice問:

我不明白以下 語句,你寫道:「 頂級訪問應用程序已經 此對象提供的包裝」 「這是最好的使用它,你會用後期綁定任何 自動化對象」

  1. 託尼的API代碼可以在Windows的每個版本中使用,並且由於MS相信向後兼容性,他們將永遠不會在未來版本的Windows中破壞此API調用。

  2. FileDialog對象在VBA中不易使用,除非將引用添加到Office自動化庫。最好最大限度地減少Access數據庫中的引用數量,因爲各種各樣的事情可能會混淆並導致您的應用程序中斷(任何缺少的引用都會阻止所有VBA代碼運行)。爲了避免缺少引用的問題,我們使用後期綁定,以便您編寫的代碼不依賴於外部庫文件。

  3. Microsoft可能會從未來版本的Access中刪除此對象。 FileSearch對象是一個類似的情況,因爲它是作爲Office Automation庫的一部分引入到A95/97中的,然後在A2000中創建了一個包裝器,但是Microsoft在A2007中刪除了它(並且根本沒有提供任何替代方法) 。 MS可以選擇刪除將來版本的Access中的FileDialog對象,然後您的代碼將中斷。但是API調用永遠不會中斷。

+0

謝謝你的回答!不過,我是一名編程和MS Access新手,所以我發現部分答案很混亂。 爲什麼它是「API調用的第二選擇」?從我的初學者的角度來看,Application.FileDialog看起來簡單得多。 此外,我不明白您寫的以下聲明: 「頂級Access應用程序爲此對象提供了一個包裝」 「最好使用它,就像任何具有遲綁定的自動化對象一樣」 – dmr 2009-12-23 14:46:36

相關問題