如何在transferText命令中添加“浏览文件”对话框?

时间:2009-12-21 18:34:41

标签: vba file ms-access dialog

我正在MS Access中创建一个将CSV文件导入表格的宏。我正在使用TransferText操作导入CSV字符串,我想允许用户浏览包含CSV字符串的文件。 如何显示“浏览”对话框以使用户能够选择文件?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

另一种选择(我会说是@Tony Toews和@draice推荐的API调用的第二选择)是使用Application.FileDialog对象。只要VBA已经在Access中,这就是Office自动化库的一部分,但在最新版本的Access中(从A2002或A2003开始,我不知道哪个),顶级Access应用程序提供了这个对象的包装器。但要注意,如果没有对Office自动化库的引用,则无法在没有引用的情况下使用Intellisense中显示的ENUM值(有用的错误消息会通知您并提供创建引用)。简而言之,如果您使用它最好像使用后期绑定的任何自动化对象一样使用它,除了您不必使用Application.CreateObject初始化顶级对象,因为它已经在那里供您使用

编辑:

@draice问:

  

我不明白以下几点   你写的陈述:“   顶级访问应用程序   为这个对象提供了一个包装器“   “你最好像使用它一样使用它   具有后期绑定的自动化对象“

  1. Tony的API代码适用于每个版本的Windows,并且由于MS相信向后兼容性,因此在未来的Windows版本中,它们永远不会破坏此API调用。

  2. 除非您将引用添加到Office Automation库,否则FileDialog对象在VBA中不易使用。最好尽量减少Access数据库中的引用数量,因为各种各样的东西会搞砸它们并导致应用程序中断(任何缺少的引用都会阻止所有VBA代码运行)。为了避免遗漏引用的问题,我们使用后期绑定,以便您编写的代码不依赖于外部库。

  3. Microsoft可能会从Access的未来版本中删除此对象。 FileSearch对象是一个类似的情况,因为它作为Office自动化库的一部分在A95 / 97中引入,然后在A2000中创建了它的包装,但Microsoft在A2007中删除了它(并且根本没有提供替代方案) 。 MS可以选择在将来的Access版本中删除FileDialog对象,然后您的代码就会中断。但API调用永远不会破坏。

答案 2 :(得分:0)