excel 2013 vba与其他办公程序冲突

时间:2016-01-11 15:56:40

标签: excel excel-vba ms-office vba

我们公司大约6个月前升级到办公室2013。我有预先存在的代码,用于导入CSV文件,执行计算和更新图形。自2013年升级以来,在运行Excel VBA代码时,其他Office 2013程序(例如,Word,Outlook)对鼠标或键盘输入无响应,直到VBA代码完成。有趣的是,PowerPoint似乎没有受到影响。在我的VBA代码中,我使用典型的加速技术:application.windowstate = xlMinimized,使用手动计算,并关闭屏幕更新。我遇到了堆栈溢出(Application.Screenupdating = false affects all of office)中的一个页面,表明屏幕更新设置为false是一个潜在的问题。我尝试按照该链接和许多其他人的建议修改我的代码,以便在宏运行时Word和Outlook仍然可用。这包括使用“Excel”。前缀(例如,Excel.Application.ScreenUpdating = False),使窗口最大化,使用“Excel.Application.Windows(ThisWorkbook.Name).WindowState = xlMinimized,等等。我尝试过的任何东西都消除了Excel VBA的影响其他Office应用程序。我根本不明白为什么办公室(显然)如此交织在一起,以至于一个应用程序会对其他应用程序产生负面影响。我在Office 2010或更早版本中没有看到这种效果。任何有用的见解都会非常感激。

2 个答案:

答案 0 :(得分:1)

经过相当多的调试后,我终于意识到为什么我的VBA代码在Word / Outlook中禁止响应。我从不使用Office剪贴板,但出于某种原因,我在Excel中使用Word打开它,并看到有复制数据的证据,包括图表。虽然我之前已经清理过代码以试图消除复制/粘贴(即使用剪贴板),但有两个区域尚未完成。两者之间难以改变的是图表更新领域。懒惰,我开发了图表更新的代码,它总是需要在嵌入式图表所在的页面上至少有一个预先存在的图表。我使用的技术是复制顶部图表,删除页面上的所有图表,将复制的图表粘贴到顶部位置,然后将其复制到所有图表位置。然后代码运行以重新映射工作表中的源数据以及要绘制的所有数据。我修改了代码以删除除第一个图表之外的所有代码,然后复制。这避免了使用.Copy。一旦我清理了所有剪贴板的使用,我就能够在Excel中运行VBA代码,而不会干扰Word或Outlook的正常使用。 正如我所提到的,我从来没有一个人使用Office剪贴板;旧的Windows剪贴板一直很好。在我的代码中,我一直在努力清除复制/粘贴后的剪贴板,使用Excel.Application.CutCopyMode = False(或者,只是Application.CutCopyMode = False)。我认为这可以防止干扰其他程序的任何问题,直到我们开始使用Office 2013,我没有看到任何问题。但是,即使这清除了Windows剪贴板,它也不会清除Office剪贴板。我查看了很多网页,试图找到一种方法来清除Office剪贴板,但没有一个能做到。似乎清除Office剪贴板的能力自2000年以来已经消失。我发现这是一个有用的参考,因为我尝试了此处列出的代码和其他类似的变体来清除Office剪贴板,但它们都只清除Windows剪贴板: http://www.pcreview.co.uk/threads/vba-clear-clipboard.2237563/。 我希望这对那些可能有类似经历的人有所帮助。

还有一件事......在Word中进行编辑时,我发现它工作正常,直到我在Excel VBA代码运行时复制了一个图形(在Word中)。此时,Word再次没有响应。由于我已经取消了对剪贴板的所有使用,我重新检查了VBA代码,发现仍然存在执行Excel.Application.CutCopyMode = False的地方。我评论了所有这些线并重复测试。现在运行Excel VBA,我可以在Word中进行编辑而不会受到干扰,包括复制/粘贴。

答案 1 :(得分:0)

加载项。禁用Word中的所有加载项。现在我的Excel VBA可以全天运行而不会导致Word窒息。我做了一些尝试来尝试缩小哪个加载项。我相信Acrobat PDFMaker Office Com Addin是罪魁祸首。在我在Stack Overflow上发布这个问题之前,我已经看到在尝试研究这个问题时被引用作为可能影响的VBA。我已将此加载项打折为问题来源,因为我们在Power Point中也包含了Acrobat PDFMaker;而且我没有注意到Power Point被冻结了#39;当我在Word和Outlook中运行Excel VBA时。但是,在Outlook中禁用PDFMaker后,它现在也显得干净,不再由Excel执行VBA挂起。