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

问题描述:

我正在MS Access中创建一个将CSV文件导入到表中的宏。我正在使用TransferText操作导入CSV字符串,并且我想让用户浏览包含CSV字符串的文件。 如何显示“浏览”对话框以启用用户选择文件?如何将“浏览文件”对话框添加到transferText命令?

+1

这是http://*.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

请参阅API: Call the standard Windows File Open/Save dialog box。但是这需要VBA代码。

+0

谢谢你的回答! – dmr 2009-12-21 19:41:44

替代方案(我会说是@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