【问题标题】:How do I add a "browse for file" dialog box to the transferText command?如何在 transferText 命令中添加“浏览文件”对话框?
【发布时间】:2009-12-21 18:34:41
【问题描述】:

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

【问题讨论】:

标签: vba file ms-access dialog


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    另一种选择(我会说这是@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. FileDialog 对象在 VBA 中不容易使用,除非您添加对 Office 自动化库的引用。最好尽量减少 Access 数据库中的引用数量,因为各种各样的事情都会弄乱它们并导致您的应用程序崩溃(任何缺少的引用都会阻止所有 VBA 代码运行)。为了避免缺少引用的问题,我们使用后期绑定,这样您编写的代码就不会依赖于外部库。

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

    【讨论】:

    • 感谢您的回答!但是,我是一名编程和 MS Access 新手,所以我发现您的部分答案非常令人困惑。为什么它是“API 调用的第二选择”?从我初学者的角度来看,Application.FileDialog 似乎要简单得多。另外,我不明白您写的以下语句:“顶级访问应用程序为此对象提供了一个包装器”“最好像使用任何具有后期绑定的自动化对象一样使用它”
    【解决方案3】:
    猜你喜欢
    • 2010-11-05
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多