Office 程序无法使用 VBA

Zev*_*itz 5 microsoft-office vba microsoft-office-2010 avira

我最近重新安装了 Windows 10、Avira Free Antivirus v. 15.0.44.142 和 Office Professional Plus 2010。在重新安装之前,这种应用程序组合运行良好。

现在,当我尝试从新的 Word 文档打开 VBA IDE 时,收到以下消息:

Word 遇到了问题。

保存文件时出现问题。

下面列出了一些可能的原因,例如缺少磁盘空间、内存不足或缺少权限;没有一个是相关的。

唯一可能相关的是:

如果计算机运行的防病毒软件版本与 Microsoft Office 不兼容或必须更新,也会发生此错误。

如前所述,我正在运行 Avira 免费防病毒软件,并且 AFAICT 已更新防病毒软件。我尝试在 Avira 实时保护关闭时打开 VBA IDE,但没有成功。

一旦我关闭该消息,VBA IDE 窗口就会打开,但没有可用的项目,并且大多数菜单项都被禁用。

.docm在打开 VBA IDE 之前保存带有扩展名的文档没有帮助。

尝试从其他应用程序打开 VBA IDE 时会出现类似的奇怪结果:

  • Excel 列出了三个项目Project1Project2Project3,但没有每个项目下面的常用对象树——类模块、标准模块等——也没有 ThisWorkbook 节点。
  • PowerPoint 的功能与 Word 相同——根本没有项目——但没有任何错误。

我尝试通过 Office 安装程序卸载并重新安装 VBA。

安全设置被设置为禁用带有警告的宏。IIRC 的旧行为是禁用宏,除非我明确允许它们用于特定文档。检查每个应用程序的信任对象模型

我已经在 Avira 中寻找一种设置来控制它,但没有成功。

注册表不包含此处VBAOff描述的密钥。

如何为 Office 应用程序启用 VBA?

注意。之前的安装不是 Windows 10 的全新安装;首先是 Windows 8,然后是 8.1,然后是 10。

在打开 VBA 编辑器之前我尝试过的事情:

  • 维修处
  • 卸载并重新安装 Office,然后手动安装 Office 2010 SP2
  • Windows 更新(仅在上述手动安装后发现 Office 更新)
  • 以管理员权限运行 Word
  • 启用从信任中心选择的所有宏
  • 删除Normal.dotm模板并允许 Word 重新创建它
  • 卸载Office,运行评论中@harrymc引用的“Clean Office卸载”工具,重新安装Office
  • 添加 Outlook(以前未安装)
  • 关闭 UAC(在启动 Word 之前)
  • 以安全模式启动——我无法启动 Word;Word 未被识别为已激活
  • 设置HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled = 1和重启

查看事件查看器,我在SystemApplicationSecurity(都在Windows Logs 下)找不到任何内容。我唯一发现的是每次尝试在 Word 中打开新文档的 VBA 编辑器时,应用程序和服务日志 -> Microsoft Office 警报中的以下事件:

Log Name:      OAlerts
Source:        Microsoft Office 14 Alerts
Date:          07/03/2019 20:49:42
Event ID:      300
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Description:
Microsoft Word
Word has encountered a problem.
P1: 200815
P2: 14.0.7015.1000
P3: 5v59
P4: 0x80070002

Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft Office 14 Alerts" />
    <EventID Qualifiers="0">300</EventID>
    <Level>4</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2019-03-07T18:49:42.772417400Z" />
    <EventRecordID>120</EventRecordID>
    <Channel>OAlerts</Channel>
    <Security />
  </System>
  <EventData>
    <Data>Microsoft Word</Data>
    <Data>Word has encountered a problem.</Data>
    <Data>200815</Data>
    <Data>14.0.7015.1000</Data>
    <Data>5v59</Data>
    <Data>0x80070002</Data>
  </EventData>
</Event>
Run Code Online (Sandbox Code Playgroud)

在 Excel 或 PowerPoint 中打开编辑器时没有类似的事件。


使用Sysinternals的procmon中,只有在尝试打开从Word VBA编辑器,以及用于过滤结果捕捉Process Name = "WINWORD.EXE"和排除SUCCESSBUFFER OVERFLOWNAME NOT FOUNDResult,我发现以下几点:

RegOpenKey         ACCESS DENIED      
      HKLM\Software\WOW6432Node\Microsoft\VBA
CreateFileMapping  FILE LOCKED WITH READERS
      C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA7\VBE7.DLL
CreateFileMapping  FILE LOCKED WITH READERS
      C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB
Run Code Online (Sandbox Code Playgroud)

FILE LOCKED WITH READERS重复的次数。

但经过进一步调查,我发现后来从同一个注册表项 ( HKLM\Software\WOW6432Node\Microsoft\VBA)读取成功。此外,CreateFileMapping正在使用路径的长名称;紧随其后的是成功CreateFileMapping使用 DOS 名称,例如C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL.