吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 629|回复: 19
收起左侧

[求助] 请教一个C#处理Excel工作表内容部分电脑会报错问题

[复制链接]
Bingo2018 发表于 2024-10-23 15:41
本帖最后由 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里面的三个子程序来处理不同的表格内容。后面不值找不到问题出在哪里,把每个子程序拆开调试又是正常的。请问我这样写是有问题吗
[C#] 纯文本查看 复制代码
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()
        {后面是每个子程序的处理的代码。。。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

flyer_2001 发表于 2024-10-23 16:55
regsvr32 那个可执行文件试试
 楼主| Bingo2018 发表于 2024-10-23 17:24
eenny820 发表于 2024-10-23 17:41
我知道了。打开[开始] - [运行],输入“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 前,请确保所有文档已备份并关闭,避免数据丢失。
 楼主| Bingo2018 发表于 2024-10-23 18:51
eenny820 发表于 2024-10-23 17:41
我知道了。打开[开始] - [运行],输入“regedit”,点击[确定]进入注册表编辑器。在注册表中查找 {00024500 ...

我试试这个方法,但是试过卸载干净重装过几次都是不行的,包括用WPS也是这种偶尔出现这种情况,但是WPS切换成整合窗口就正常了
zazakgfh 发表于 2024-10-23 23:17
office 安装 版本以及安装勾选功能不一样,建议还是一样的
xinxin99 发表于 2024-10-23 23:42

参考一下这个

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
 楼主| Bingo2018 发表于 2024-10-24 00:13
根据大家提供的参考试了,结果还是一样,找不到原因,重装这些都试过了,都是不行,换别的电脑上又是可以的,我原来开始是可以的,后面搞着搞着就报这个错误了,百度过这个问题还是很多人遇到过,但是暂时我也没找到有效解决方案
7R903 发表于 2024-10-24 08:38
换一个插件吧
tb612443 发表于 2024-10-24 09:29
部分电脑没问题,就证明是环境问题,这里涉及到操作系统版本,Excel版本等等各种情况,所以建议是,如果是常用的功能,既然已经由C#介入了,最好是换几个不依赖office组件的工具实现相关功能;再者,充分利用没有问题的电脑环境,做成服务的方式让其他环境使用?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表