首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Word自动化:无法打开宏存储

Word自动化:无法打开宏存储
EN

Stack Overflow用户
提问于 2012-03-07 16:45:52
回答 5查看 16.9K关注 0票数 4

我的应用程序(通过vb.net ClickOnce部署的windows应用程序)使用Word打开和填充.dot模板来创建新的Word文档。我引用Microsoft 14对象库并使用以下代码:

代码语言:javascript
复制
Dim oWord As Word.Application = Nothing
Dim oDoc As Word.Document = Nothing
Try
    oWord = New Word.Application
    Dim strFileName As String = ""
    Select Case strType
        Case "LettreReception"
            strFileName = Path.Combine(GetParam(1), "Template_LettreReception.dot")
            If File.Exists(strFileName) Then
                oDoc = oWord.Documents.Add(strFileName)

在最后一行中,我在已部署的计算机上(在我的开发机器上)收到了“无法打开宏存储”错误。

我使用Windows7-Office2010-VS 2010 (.Net 3.5)进行开发。我的部署机也是安装了Office 2010的Windows 7。

我试图删除normal.dotm (我发现了一些链接,建议它),但没有成功。使用的.dot模板不包含宏。

EN

回答 5

Stack Overflow用户

发布于 2014-01-14 14:19:11

检查word文档的属性,并确保文件已解除阻塞。有时,当您从另一台计算机获取文档或从internet下载文档时,它们会被阻塞,从而导致抛出此异常“无法打开宏存储”。

票数 6
EN

Stack Overflow用户

发布于 2012-05-02 01:59:53

由于Word Interop实际上是在后台运行,就像它在交互式会话中运行一样,因此在执行过程中使用的帐户需要某些权限。

您是否在您的web应用程序中使用Windows身份验证和模拟?如果是这样的话,被模拟的用户必须具有本地登录服务器的权限才能运行Word.此外,您必须实际使用该帐户登录服务器至少一次,以便该用户在该计算机上存在一个配置文件,以便可以加载注册表单元。我还发现,您可能需要以该用户的身份实际运行Word至少一次(在尝试从代码中运行Word之前,要确保第一次初始化消息得到处理)。

如果不是,那么应用程序运行的服务帐户(通常是网络服务)需要上述权限(我稍后将对此进行描述),您将不得不在运行时动态加载注册表单元。就我个人而言,我更喜欢使用具有本地登录权限的用户帐户实现代码临时模拟。

本地登录权限可能会有点棘手,这取决于您的网络和组策略配置(如果您希望稍微安全,而不只是使用域管理帐户)。

在VS中运行的计算机上一切正常运行的原因是,web应用程序的上下文是您的用户帐户--当然,用户帐户在您的计算机上具有本地登录权限,并且可以加载注册表单元。

现在是权限:

  • 首先,必须在服务器上运行"dcomcnfg“,并进行以下配置更改:

代码语言:javascript
复制
- Right click on Component Services\computers\My Computer\DCOM Config\Microsoft Word 97 - 2003 Document and go to Properties
- In the Properties screen, go to the Security tab and change the "Launch and Activation Permissions" to Customize.
- Click the Edit button and add the local computer NETWORK SERVICE account (If not using impersonation... If using impersonation, add the appropriate user or group) to the list of users and check "Local Launch" and "Local Activation"

  • 确保本地计算机网络服务帐户(如果不使用模拟.如果使用模拟,则适当的用户或组对将要打开和/或保存到的文件夹和文件具有适当的读取/修改权限。
  • 在C:\Windows\System32 32\config\systemprofile\下创建一个"Desktop“目录,并给予本地网络服务帐户(或运行ASP .NET应用程序所用的帐户)完全权限:我相信这一步骤和下一步仅适用于C:\Windows\System32 32\配置文件文件夹

的修改/读取/执行权限。

希望这能帮到一些人,也不会让人太困惑.

票数 3
EN

Stack Overflow用户

发布于 2021-04-11 20:46:54

右键单击打开的文件->,单击取消块勾选框-> Apply

至少为我工作过。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9605680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档