升级至Office 365 64位后Microsoft.Office.Interop.Word代码报错求助
匹配项目编译平台与Office位数
64位Office要求项目必须编译为x64平台,而非Any CPU。Any CPU模式下,若系统是64位但进程以32位运行(比如勾选了“首选32位”),会无法访问64位的Word COM组件。操作步骤:右键项目→属性→生成→平台目标,选择x64,同时取消“首选32位”选项(若存在)。替换
Marshal.GetActiveObject为直接创建实例GetActiveObject依赖已运行的Word实例的COM注册信息,64位Office的注册路径与32位差异较大,容易出现找不到类的问题。直接创建新实例更稳定:var wordApp = new Microsoft.Office.Interop.Word.Application();若需要复用已打开的Word实例,可添加异常处理,失败后再创建新实例:
Microsoft.Office.Interop.Word.Application wordApp; try { wordApp = Marshal.GetActiveObject("Word.Application") as Microsoft.Office.Interop.Word.Application; } catch (System.Runtime.InteropServices.COMException) { wordApp = new Microsoft.Office.Interop.Word.Application(); }使用NuGet安装官方Interop组件
不要手动用regasm注册Interop DLL,直接通过NuGet安装官方的Microsoft.Office.Interop.Word包(最新版兼容Office 365)。先移除项目中手动添加的Interop引用,再在NuGet包管理器中搜索并安装该包。重新注册Word COM组件
以管理员身份打开命令提示符,执行以下命令(路径需匹配你的Office安装目录,Office 365通常为Office16):cd "C:\Program Files\Microsoft Office\root\Office16" regsvr32.exe /m msword.olb检查DCOM配置权限
运行dcomcnfg打开组件服务,依次展开组件服务→计算机→我的电脑→DCOM配置,找到Microsoft Word 97 - 2003 Document(对应Office 365的Word组件),右键选择属性→安全选项卡,确保当前程序运行用户在“启动和激活权限”“访问权限”中拥有允许权限。
内容的提问来源于stack exchange,提问作者JeroenZenM

