上午好☀️☀️☀️️
本答案参考通义千问
在同时安装了 Microsoft Office 和 WPS 的系统中,WPS 会默认关联 Excel 文件类型(如 .xls、.xlsx、.xlsm),这会导致使用 Microsoft.Office.Interop.Excel.Application() 时,系统尝试用 WPS 打开文件,而不是 Microsoft Excel。
为了确保你的 VB.NET 程序能正确调用 Microsoft Excel 而不是 WPS,需要强制指定 Excel 应用程序的路径,并避免 WPS 的干扰。以下是详细解决方案:
✅ 解决方案步骤
-
明确指定 Excel 应用程序的路径
通过设置 excelApp 的 ApplicationPath 属性,直接指向 Microsoft Excel 的安装路径。
-
禁用 WPS 对 Excel 文件类型的关联
可以通过注册表或手动更改文件关联来防止 WPS 自动打开 Excel 文件。
-
使用 COM 对象时避免系统默认行为
在创建 Excel 应用程序对象时,使用 CreateObject 并指定正确的 CLSID 或 ProgID。
-
修改代码以确保使用 Excel
下面是修改后的代码示例,确保使用的是 Microsoft Excel。
🔧 修改后的 VB.NET 代码
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim filePath As String = "C:\Users\QianWeihua\Desktop\新建文件夹 (2)\工作簿1.xlsm"
' 指定 Excel 的安装路径(根据实际安装路径修改)
Dim excelApp As Object = CreateObject("Excel.Application")
' 设置 Excel 不可见(可选)
excelApp.Visible = True
' 打开文件
Dim workbook As Object = excelApp.Workbooks.Open(filePath)
' 可选:显示文件
workbook.Activate()
End Sub
注意: 如果仍然无法打开 Excel,可能是由于 WPS 修改了系统对 .xlsm 文件的默认程序。你需要手动更改文件关联。
🛠️ 手动更改文件关联(Windows)
- 右键点击一个
.xlsm 文件 → 选择 “打开方式” → “选择其他应用”。 - 从列表中选择 Microsoft Excel。
- 勾选 “始终使用此应用打开 .xlsm 文件”。
或者,你可以通过注册表编辑器(regedit)来删除 WPS 对 Excel 文件类型的关联:
注意: 请确保路径与你电脑上实际安装的 Office 版本一致。
⚠️ 额外建议
- 如果你不想彻底卸载 WPS,可以考虑使用 虚拟机 或 容器化工具 来隔离开发环境。
- 使用 VB.NET 与 Excel Interop 时,建议只安装 Microsoft Office,避免 WPS 干扰。
✅ 总结
| 步骤 | 描述 |
|------|------|
| 1 | 明确指定 Excel 应用程序路径 |
| 2 | 修改文件关联,确保 .xlsm 由 Excel 打开 |
| 3 | 使用 CreateObject("Excel.Application") 替代 New Microsoft.Office.Interop.Excel.Application() |
| 4 | 保持代码简洁,避免系统默认行为干扰 |
如果你仍然遇到问题,请提供你电脑上 Microsoft Office 的安装路径 和 WPS 的版本号,我可以进一步帮你定制代码。