tro*_*cal 5 speed vba intel-core-i3 windows-8 microsoft-excel-2013
我的四核 Acer Aspire S3 超极本上运行着一个 VBA 程序。麻烦的是,它只使用了 25% 的 CPU(其他进程加起来使用了~1%)。笔记本电脑运行 Windows 8.0。Excel 版本为 2013(32 位)。仅使用了 55% 的系统 RAM,Excel 使用了 55% 的一半。
我认为可能只使用了 25%,因为 Excel 只使用了一个核心。但是,我没有任何东西可以支持这个理论。如何加速程序?
谢谢。
Exc*_*lll 11
以下所有内容均适用于 Excel 2007 及更早版本。根据上面评论中发布的链接@??c???007,Excel 2013 中有一些对多线程的本机支持。也就是说,除非您是有经验的程序员,否则忘记它的警告仍然适用。
不幸的是,VBA 不支持多线程,因此您的 VBA 计算将仅限于处理器的一个内核。
但是,有一种高级方法可以通过生成 VBscript 文件并同时执行来诱使 VBA 运行多个线程。这通过在 Excel 进程之外运行您的代码来解决问题,并允许 Windows 管理分配给不同线程的资源。
也就是说,让它工作很可能意味着完全重新思考代码的逻辑(即,你必须弄清楚如何以一种对它们并发运行有意义的方式分配任务),这可能很可能对您的项目不可行。我自己从来没有实现过这个,所以除了告诉你我已经告诉过你的内容之外,我无法真正帮助你。
但是,如果您想进入兔子洞,这里有一篇有趣的博客文章,其中显示了一个完成此操作的示例。警告:除非你是一个有成就的程序员,否则你最好忘记这个想法,只接受 VBA 在单线程中运行。
Stack Overflow 上的其他大胆资源:
https : //stackoverflow.com/q/19159025/657668
/sf/ask/400509511/
当然还有其他方法可以在不使用多线程的情况下优化您的 VBA 代码。没有看到你的代码,就不可能提出有针对性的建议,但这里有一些常见的嫌疑人:
Application.Calculation = xlManual
。请务必Application.Calculation = xlAutomatic
在退出您的 Sub 之前将其设置回。小智 6
我听起来像您尝试使用的程序是单线程的,这意味着它只能使用一个内核,它不知道其他内核是否存在。除了购买具有更快单核时钟速度的处理器或使用支持多线程的程序之外,确实没有具体的方法可以加快速度。
归档时间: |
|
查看次数: |
10794 次 |
最近记录: |