2009-05-21 81 views
3

尽管我已经在MS Access 2007和Excel 2007的单个应用程序中完成了VBA项目,但我还没有同时自动执行多个应用程序。通用项目是开放访问,运行一些更新查询,将数据附加到各种表格。然后Excel需要获取数据。 Excel中需要一些格式更改,例如不会自动更改日期范围的分组。最后,我打算建立它,这样excel文件将自动通过电子邮件发送。如何使用VBA自动执行多个Office应用程序?

这个的一些部分很清楚如何实现它,比如Excel将通过ODBC从ODBC获取数据。但主VBA应该在哪里生活?我可以在Access中有一个可以开始运行Access VBA的按钮,但是让Access VBA开始操作Excel是一个好习惯吗?这是否难以调试?

回答

3

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

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

最后,一旦您使用对其他应用程序的自动化库的引用进行编码来帮助您编程,最好是,您希望切换到较晚的绑定,以便删除引用。这意味着不使用任何外部库的特定数据类型(大多数情况下使用普通对象变量),也不使用外部库中定义的任何常量。带后期绑定的我的产品代码通常包含早期绑定版本,以及后期绑定版本。

+0

谢谢大卫。我没有在亚马逊上找到一本完全符合这个标题的书。你能给我一个指针吗?我很感激。 – Knox 2009-05-21 20:56:38

+0

访问http://www.mcwtech.com/Books.aspx是的,最新版本是针对Access 2002的,但它仍然非常相关。 – 2009-05-22 02:50:14

-1

虽然Access是我进入编程世界的入口,但我还没有完成VBA的年龄。从Access 97迁移到Visual Basic非常简单,我记得我使用Access编写了很多类似VB的表单,用于执行多种任务(不一定是数据库内容)。

这就是为什么我认为你应该坚持访问,并从那里,用VBA的帮助下,做你的东西在Excel等原因..

好运

1

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

1

完成Access VBA中的所有工作。请参阅以下网址的一些示例代码

Modules: Sample Excel Automation

Modules: Transferring Records to Excel with Automation

还要注意的是,如果你正在处理多个版本的Excel后期绑定成为一种必然。后期绑定意味着您可以安全地删除引用,并在应用程序执行有问题的代码行时仅出现错误。而不是在启动应用程序时出错,并且根本不允许应用程序中的用户。或者当打中间,左或调整函数调用时。

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

欲了解更多信息,包括额外的文字和一些详细的链接,请参阅Late Binding in Microsoft Access页面。

至于发电子邮件去那里是在Microsoft Access Email FAQ

1

许多选项你可以把代码在Access或Excel。根据我的经验,这比在两者之间分割代码(这也是有效的)更容易处理。

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

如果您的用户或维护人员对一个应用程序更熟悉,您可能希望将主代码或主代码放在那里,但更多的时候我觉得最好将主代码或主代码放在应用程序的内部,这样我就可以在其他合作伙伴中完全没有代码。

从简要说明,听起来像更多的工作将在Excel中完成,所以我会把所有的代码放在那里。

从Access中提取数据甚至不需要访问应用程序对象--DAO或ADO或ODBC对象将工作(甚至DDE),这将更快,更健壮,更容易,更好而不是让两个应用程序都打开并自动化。

如果你从Access开始,这听起来像这个项目将需要一个Excel自动化对象。现在运行的很好,但只要使用Excel和DAO对象,它的运行速度仍然更慢,更脆弱。

相关问题