请教一个C#处理Excel工作表内容部分电脑会报错问题
本帖最后由 Bingo2018 于 2024-10-23 15:47 编辑请教一下各位大佬,我把C#代码生成exe程序,用VBA调用exe里面的子程序,但是偶尔正常用,也会经常报错,部分电脑正常没问题,小部分电脑就报这个错误提示,时发生错误: 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel.Application”。此 操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY))。
代码头部分是这样的,有三个子程序,exe执行是用VBA来调取exe里面的三个子程序来处理不同的表格内容。后面不值找不到问题出在哪里,把每个子程序拆开调试又是正常的。请问我这样写是有问题吗
using Microsoft.Office.Interop.Excel;
using System;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
using ExcelApp = Microsoft.Office.Interop.Excel.Application;
using Microsoft.Office.Core;
namespace VBAexe
{
class Program
{
static void Main(string[] args)
{
try
{
ExcelAutomation automation = new ExcelAutomation();
foreach (string arg in args)
{
switch (arg.ToLower())
{
case "subtoolnc2":
automation.SubToolNc2();
break;
case "tpnc":
automation.EPnc();
break;
case "imagedebugging":
automation.ImageDebugging();
break;
case "imagedebugging2":
automation.ImageDebugging2();
break;
}
}
}
catch (Exception)
{
}
//Environment.Exit(0); // 在所有子程序执行完毕后退出程序
}
}
public class ExcelAutomation
{
public void SubToolNc2()
{后面是每个子程序的处理的代码。。。 regsvr32 那个可执行文件试试 flyer_2001 发表于 2024-10-23 16:55
regsvr32 那个可执行文件试试
执行就出现这个错误了 我知道了。打开[开始] - [运行],输入“regedit”,点击[确定]进入注册表编辑器。在注册表中查找 {00024500-0000-0000-C000-000000000046},找到后右键选择[导出]进行备份。32位系统路径:HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}64位系统路径:HKEY_CLASSES_ROOT\WOW6432node\CLSID\{00024500-0000-0000-C000-000000000046}注册表导出备份完成后,右键删除 {00024500-0000-0000-C000-000000000046} 注册表项。重启计算机,卸载本机上的 Office 程序并重新安装。优化建议:
重装 Office 前,请确保所有文档已备份并关闭,避免数据丢失。 eenny820 发表于 2024-10-23 17:41
我知道了。打开[开始] - [运行],输入“regedit”,点击[确定]进入注册表编辑器。在注册表中查找 {00024500 ...
我试试这个方法,但是试过卸载干净重装过几次都是不行的,包括用WPS也是这种偶尔出现这种情况,但是WPS切换成整合窗口就正常了 office 安装 版本以及安装勾选功能不一样,建议还是一样的
参考一下这个
https://blog.csdn.net/zhengyuanting/article/details/2422294?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-2422294-blog-86609832.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-2422294-blog-86609832.235%5Ev43%5Epc_blog_bottom_relevance_base4 根据大家提供的参考试了,结果还是一样,找不到原因,重装这些都试过了,都是不行,换别的电脑上又是可以的,我原来开始是可以的,后面搞着搞着就报这个错误了,百度过这个问题还是很多人遇到过,但是暂时我也没找到有效解决方案 换一个插件吧 部分电脑没问题,就证明是环境问题,这里涉及到操作系统版本,Excel版本等等各种情况,所以建议是,如果是常用的功能,既然已经由C#介入了,最好是换几个不依赖office组件的工具实现相关功能;再者,充分利用没有问题的电脑环境,做成服务的方式让其他环境使用?
页:
[1]
2