3

虽然我已经在一个应用程序中为 MS Access 2007 和 Excel 2007 完成了 VBA 项目,但我没有同时自动化多个应用程序。通用项目是开放访问,运行一些更新查询,将数据附加到各种表中。然后 Excel 需要获取数据。Excel 中需要进行一些格式更改,例如不会自动更改日期范围的分组。最后,我计划构建它,以便自动通过电子邮件发送 excel 文件。

其中一些部分很清楚如何完成它,例如 Excel 将通过 ODBC 从 Access 获取数据。但是主 VBA 应该放在哪里呢?我可以在 Access 中有一个开始运行 Access VBA 的按钮,但是让 Access VBA 开始操作 Excel 是一种好习惯吗?这是否使调试变得困难?

4

6 回答 6

3

若要从 Access 开始,请添加对 Excel 对象库的引用。然后使用对象浏览器熟悉 Excel 对象层次结构在 Access 中的外观。这会有些不同,因为 Excel 代码中的顶级对象是隐式的(就像在 Access 中一样),并且在 Access 中编码时必须显式引用。

Access 开发人员手册中有关于从 Access 自动化 Office 其余部分的优秀章节。

最后,最好在使用对其他应用程序的自动化库的引用进行编码以帮助您编程后,您希望切换到后期绑定,以便您可以删除引用。这意味着不使用任何外部库的特定数据类型(您主要使用普通对象变量)并且不使用外部库中定义的任何常量。我的后期绑定生产代码通常包括注释掉的早期绑定版本,以及后期绑定版本。

于 2009-05-21T20:42:32.737 回答
1

我认为您正在寻找的关键字是“微软办公自动化”。

使用您喜欢的支持 COM 接口的编程语言制作应用程序,然后使用自动化在不同的办公应用程序中进行操作。

看这里c#如何访问excel单元格?在这里如何使用 c# 读取 excel 文件的数据?和谷歌。

于 2009-05-21T20:19:17.870 回答
1

我最近做了一些与此非常相似的事情,并且发现我可以输出带有内置 CSS 的 HTML,以便很好地加载到 Excel 中。我使用 Access 允许用户构建他们需要的输出,只打开 Excel 来显示结果。您可能会发现 HTML 输出可以生成更好的电子邮件。

于 2009-05-21T20:50:07.137 回答
1

在 Access VBA 中完成所有工作。有关一些示例代码,请参见以下 URL

模块:示例 Excel 自动化

模块:使用自动化将记录传输到 Excel

另请注意,如果您正在处理多个版本的 Excel,则后期绑定成为必要。后期绑定意味着您可以安全地删除引用,并且只有在应用程序执行有问题的代码行时才会出现错误。而不是在启动应用程序时出错并且根本不允许用户进入应用程序。或者在点击中间、左侧或修剪函数调用时。

当您不知道外部应用程序的版本将驻留在目标系统上时,这也非常有用。或者,如果您的组织正在从一个版本迁移到另一个版本。

有关更多信息,包括附加文本和一些详细链接,请参阅Microsoft Access页面中的后期绑定。

就电子邮件而言, Microsoft Access 电子邮件常见问题解答中有许多选项

于 2009-05-22T02:41:36.383 回答
1

您可以将代码放在 Access 或 Excel 中。以我的经验,这比在两者之间拆分代码(这也有效)更容易使用。

如果您发现自动化代码运行速度太慢,您可以拆分代码,使 Access 由 Access 中的函数运行,Excel 由 Excel 中的函数运行,主代码仅在两者中运行例程。在这种情况下,您可以将主代码放在任何您获得用于启动事物的最佳用户界面的地方。我使用过 C、Access、Word 和 Excel,如果所有代码都在其他地方,那么将开始按钮放在哪里并不重要。

如果您的用户或维护人员更熟悉某个应用程序,您可能希望将您的主代码或主代码放在那里,但更多时候我发现将主代码或主代码与应用程序的胆量放在一起更好,这样我就可以在其他合作伙伴中根本没有代码。

从简短的描述来看,听起来更多的工作将在 Excel 中完成,所以我会将所有代码都放在那里。

从 Access 中提取数据甚至不需要 Access Application 对象——DAO、ADO 或 ODBC 对象都可以工作(甚至是 DDE),这将比同时拥有这两个应用程序更快、更健壮、更容易、更好开放和自动化一个从另一个。

如果您从 Access 开始,听起来这个项目需要一个 Excel 自动化对象。现在效果很好,但仅使用 Excel 和 DAO 对象仍然慢得多,而且更脆弱。

于 2012-12-06T11:30:42.740 回答
-1

尽管 Access 是我进入编程世界的切入点,但我已经很久没有做过 VBA 了。从 Access 97 迁移到 Visual Basic 很容易,我记得我使用 Access 编写了很多东西,更像是 VB 表单来执行多种任务(不一定是数据库东西)。

这就是为什么我认为你应该坚持使用 Access 并从那里开始,在 VBA 的帮助下,在 Excel 等中做你的事情的原因。

祝你好运

于 2009-05-21T20:11:58.103 回答