提问人:Carlsberg789 提问时间:4/3/2020 最后编辑:CommunityCarlsberg789 更新时间:12/11/2020 访问量:4559
从 Excel 调用 Word 时出错:此项目中的宏已禁用
Error when calling Word from Excel: The macros in this project are disabled
问:
我在 Excel 中有 VBA 代码,用于调用指定本地文件夹中的 Word 文件。
对于某些用户,它会变成以下错误:
此项目中的宏处于禁用状态。请参考主机应用程序的联机帮助或文档,以确定如何启用宏
当代码应该从 Excel 移动到 Word 文件时,会出现此错误。
到目前为止,我尝试过的内容:
Excel 信任中心:
- 整个位置(包括受信任的子文件夹)。
- 选中“允许信任网络上的文档”。
- 禁用所有宏,通知为“选中”。
我无法更改它,因为它是灰色的。但是,此设置对于所有用户都是相同的。 - 受保护的视图被禁用。
Word 信任中心
- 受保护的视图被禁用。
- 打开 Word 文件不会生成任何“启用宏”通知。
答:
0赞
Cpt.Whale
4/3/2020
#1
故意将其变灰的正常方法(也许您的用户的 IT 通过 gpo 设置了这一点?)是注册表项,其中 16.0 是您安装的版本
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security]
"VBAWarnings"=dword:00000001
要解决的其他问题包括:
- 他们可以创建和运行自己的宏吗?
- 他们可以在不同的文档中运行不同的宏吗?
- 有没有人有不同版本的 Excel?
- excel 和 word 文件是否都是用户 PC 的本地文件?
- 用户是否启用了开发人员设置?
- 是否有人在“宏设置”>“开发人员宏设置”中有不同的设置?
- Windows 是否阻止了 excel 文件?右键单击文件>属性>“常规”:
还有这个特定的 GPO,它只阻止来自松散定义的“Internet”的宏
0赞
Michael Wycisk
12/6/2020
#2
我前段时间遇到了类似的问题。从 Excel 宏中打开 Word 文档时,一切对我来说都很好。但是在另一台 PC 上,宏只是停止了,并显示一条消息指示宏已禁用。
可以通过将单词 app 的属性更改为 来解决此问题。Application.AutomationSecurity
msoAutomationSecurityLow
请务必在代码执行后将该属性设置回其原始值。
您可以尝试以下代码示例。
Option Explicit
Sub OpenWordsFilePathWithLowSecuritySettings()
Dim sFilePath As String
Dim wrdApp As Object
Dim wrdDoc As Object
Dim lAutomationSetting As Long
'The path to your word file
sFilePath = "C:\Users\micha\Desktop\example file.docx"
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
'Save word app automation security so we can restore it afterwards
lAutomationSetting = wrdApp.AutomationSecurity
'Error handling to make sure the automation security is reset even if an error occurs
On Error GoTo ErrorHandler
'Change the automation setting to low security
wrdApp.AutomationSecurity = msoAutomationSecurityLow
'Open word document
Set wrdDoc = wrdApp.Documents.Open(sFilePath)
'Your code - do something with the word file
'
'
'
ErrorExit:
On Error Resume Next
'Close the word document
wrdDoc.Close
'Reset the word automation security
wrdApp.AutomationSecurity = lAutomationSetting
wrdApp.Quit
Set wrdDoc = Nothing
Set wrdApp = Nothing
Exit Sub
ErrorHandler:
MsgBox "An error occured: (Code: " & Err.Number & ", Description: " & Err.Description & ")", vbCritical, "Error"
Resume ErrorExit
End Sub
上一个:尝试构建 XLL“此程序无法在 DOS 模式下运行”
下一个:同时编辑文档
评论