我的应用程序(通过vb.net ClickOnce部署的windows应用程序)使用Word打开和填充.dot模板来创建新的Word文档。我引用Microsoft 14对象库并使用以下代码:
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模板不包含宏。
发布于 2014-01-14 14:19:11
检查word文档的属性,并确保文件已解除阻塞。有时,当您从另一台计算机获取文档或从internet下载文档时,它们会被阻塞,从而导致抛出此异常“无法打开宏存储”。
发布于 2012-05-02 01:59:53
由于Word Interop实际上是在后台运行,就像它在交互式会话中运行一样,因此在执行过程中使用的帐户需要某些权限。
您是否在您的web应用程序中使用Windows身份验证和模拟?如果是这样的话,被模拟的用户必须具有本地登录服务器的权限才能运行Word.此外,您必须实际使用该帐户登录服务器至少一次,以便该用户在该计算机上存在一个配置文件,以便可以加载注册表单元。我还发现,您可能需要以该用户的身份实际运行Word至少一次(在尝试从代码中运行Word之前,要确保第一次初始化消息得到处理)。
如果不是,那么应用程序运行的服务帐户(通常是网络服务)需要上述权限(我稍后将对此进行描述),您将不得不在运行时动态加载注册表单元。就我个人而言,我更喜欢使用具有本地登录权限的用户帐户实现代码临时模拟。
本地登录权限可能会有点棘手,这取决于您的网络和组策略配置(如果您希望稍微安全,而不只是使用域管理帐户)。
在VS中运行的计算机上一切正常运行的原因是,web应用程序的上下文是您的用户帐户--当然,用户帐户在您的计算机上具有本地登录权限,并且可以加载注册表单元。
现在是权限:
- 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"
的修改/读取/执行权限。
希望这能帮到一些人,也不会让人太困惑.
发布于 2021-04-11 20:46:54

右键单击打开的文件->,单击取消块勾选框-> Apply
至少为我工作过。
https://stackoverflow.com/questions/9605680
复制相似问题