是否可以使用 VBA 按计划、无人值守地基于服务器创建 Excel 工作簿?

发布于 2024-10-12 02:06:34 字数 208 浏览 4 评论 0原文

我希望能够安排一个 Excel 宏 (VBA) 在半夜运行(文件准备好后)以创建自定义工作簿(多个工作表、数据透视表、图表、筛选器、大纲、自定义格式) , ETC。)。目前,该宏是在第二天手动启动的。此外,它需要在服务器上无人值守地运行(笔记本电脑晚上回家!)。有人成功地做过这样的事情吗?请不要使用 Unix 端 hack(例如 Perl 模块)——需要完全访问 VBA 功能,包括数据库功能。谢谢!

I'd like to be able to schedule an Excel macro (VBA) to run in the middle of the night (after a file is ready) to create a customized workbook (multiple sheets, pivot tables, charts, filters, outlines, custom formatting, etc.). Currently, the macro is fired up manually the next day. Furthermore, it needs to run unattended on a server (laptop goes home at night!). Anybody successfully do something like this? Please, no Unix-side hacks (e.g., Perl modules) - need full access to VBA features, including database functions. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可遇━不可求 2024-10-19 02:06:34

好吧,你有一些选择。

首先,所有 Excel 都必须安装在服务器上。
然后您创建一个计划任务来调用程序。

在这种情况下,您可以编写 vbscript 或 .NET 程序来调用应用程序、加载文档并启动其内容(您的 VBA)。那应该有效。
或者,您将 VBA 代码移至程序中,并将代码定位到 Excel,但可能需要做更多工作。

如果您使用 .NET 来做到这一点,您可能会取得最大的成功。例如,您可以添加成功运行的事件日志等。

Well you have some options.

First, for all Excel has to be installed on server.
Then you create a sheduled task to call a program.

In this case you can write e.g. a vbscript or .NET program to call the app, load the document and starts its content (your VBA). That should work at all.
Or you move the VBA code to a program and target Excel with your code, but prolly more work.

If you do this with .NET you have prolly best success. e.g. you can add an eventlog for successful run, etc.

初与友歌 2024-10-19 02:06:34

如果您可以让 Excel 始终在服务器上运行,则可以使用 Application.OnTime 安排特定宏的下一次运行(运行后,在宏代码中重新安排另一个宏)。当我在银行工作时,我们一直用它来进行夜间工作。

如果你不能让Excel继续运行,我不得不说你可能会陷入痛苦的世界。可以使用 AT 作业(计划任务)启动 Excel,但您可能会头痛如何让它在正确的用户权限下运行,并且如果您使用任何插件,您将经常遇到灾难,它们无法加载并阻止 Excel 启动。归根结底,Excel 并不是真正要在服务器上运行的(这实际上违反了使用条款),并且启动/运行/停止它也不会成为一个可靠的系统,即使您确实得到了它去工作。

If you can leave Excel running on the server all the time, you can use Application.OnTime to schedule the next runs of a particular macro (once it's run, reschedule another in the macro code). When I worked in banking we used this all the time to run night-time jobs.

If you cannot leave Excel running, I have to say you may be in a world of pain. It's possible to start Excel using an AT job (scheduled task) but you may have headaches getting it to run under the correct user privileges and if you use any addins you'll experience regular disasters where they failed to load and stopped Excel from starting up. At the end of the day, Excel isn't really meant to be run on servers (it's actually a violation of the terms of use) and starting/running/stopping it is not going to be a reliable system even if you do get it to work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文