打开已保存的工作簿会导致当前工作簿引发异常

2023-12-19

我正在尝试打开保存的 Excel 工作簿,同时保留对当前工作簿的引用。问题是,一旦我打开保存的工作簿,原始工作簿就会在访问时引发异常。

这是要演示的代码片段。我将其放入功能区按钮的事件处理程序中以对其进行测试。

try
{
    string workbookPath = @"C:\Temp\Test.xlsx";
    Workbook current = Globals.ThisAddIn.Application.ActiveWorkbook;
    Workbook newWorkbook = Globals.ThisAddIn.Application.Workbooks.Open(workbookPath);

    current.Activate();                   // throws an exception
    Sheets sheets = current.Worksheets;   // throws an exception
    string name = current.Name;           // throws an exception
}
catch (Exception ex) {}

如果您调试并将手表放在current, sheets and name您可以立即看到变量newWorkbook实例化后,其他变量在访问时抛出异常。

抛出的异常是

System.Runtime.InteropServices.COMException was caught
  Message=Exception from HRESULT: 0x800401A8
  Source=WorkbookTest
  ErrorCode=-2147221080
  StackTrace:
       at Microsoft.Office.Interop.Excel._Workbook.Activate()
       at WorkbookTest.Ribbon1.button1_Click(Object sender, RibbonControlEventArgs e) in C:\Temp\WorkbookTest\WorkbookTest\Ribbon1.cs:line 25
  InnerException: 

最奇怪的是,这个only发生在 Excel 的新实例上。如果我打开 Excel,关闭第一个工作簿并打开一个新工作簿,它就可以正常工作。仅当我有一个新打开的 Excel 实例时,此操作才会失败。我实在不明白这是为什么。

有谁知道如何解决这一问题?我在这里做错了什么吗?


我认为这可能是正确的行为。

如果您要手动启动一个新的 Excel 会话(这会自动创建一个新工作簿 [Book1]),然后在不对 Book1 执行任何操作来打开现有工作簿的情况下,您会注意到 Excel 会话中不再存在 Book1。

我猜您正在通过 C# 加载项遇到相同的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打开已保存的工作簿会导致当前工作簿引发异常 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • VBA删除列中的单元格并根据单元格的值左移?

    如果单元格为空 如何删除 B 列 和左移 中的单元格 下面是我所拥有的 但它给出了 应用程序定义或对象定义的错误 Sub DeleteCellShiftLeft For i 1000 To 1 Step 1 If Cells i B Val
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • 为什么 Rust 允许通过空指针调用函数?

    我正在尝试 Rust 中的函数指针魔法 最终得到了一个代码片段 我完全没有解释为什么它会编译 甚至没有解释它为什么运行 fn foo println This is really weird fn caller
  • 如何将文件夹层次结构中的所有 git 内容向上移动一级?

    我有一个 git 存储库 其结构如下 repo git bootstrap py buildout cfg gitignore webapp manage py modules templates static 我想移动内容webapp文件
  • Net Core:从 Autofac 模块访问 appsettings.json 值

    AspNet核心应用程序 1 像这样的Autofac模块 public class AutofacModule Module protected override void Load ContainerBuilder builder Reg
  • 在 PHP PCRE 函数中双重转义还是不双重转义?

    我一直在寻找一篇关于何时需要双重转义 何时不需要双重转义的可靠文章 但我找不到任何东西 也许我看起来不够仔细 因为我确信在某个地方有一个解释 但让下一个有这个问题的人很容易找到 以以下正则表达式模式为例 n domain com myfee
  • 封闭式班级

    是否可以创建一个不再接纳新成员的类型类 也许通过使用模块边界 我可以拒绝导出完整实例定义所需的函数 但这只会在有人生成无效实例时导致运行时错误 我可以将其设置为编译时错误吗 自 GHC 7 8 1 起 封闭型家庭 https downloa
  • 单击超链接时停止模糊事件

    我用了这个答案jQuery 模拟输入和 div https stackoverflow com questions 11228628 jquery select simulation with input and div创建一个看起来相似的
  • 拖放背后的逻辑

    我想知道基本拖放功能的 它是如何工作的 和 它应该如何设计和实现 方面 我还没有实现过这样的功能 我正计划为我的一个项目这样做 并且我确实对如何实施它有一些想法 我想确保我走在正确的道路上 并且你们很可能也对此事有话要说 假设我有如下列出的
  • 如何在存储库上使用 svn2git

    我在用着svn2git https github com nirvdrum svn2git测试 svn 存储库到 git 的迁移 现在我的 svn 是这样构建的 myproj包含 repo1 repo2 obsolete old 每个存储库
  • Razor/JavaScript 和尾随分号

    使用 Visual Studio 2012 在 Razor 视图页面的 JavaScript 部分中 我发现 Razor 语法与 JavaScript 语法之间存在战斗 特别是 脚本部分中的尾部分号由智能感知标记 并传递编译器警告 而不是错
  • HDFS中的数据块大小,为什么是64MB?

    HDFS Hadoop默认数据块大小为64MB 磁盘中的块大小一般为4KB 64MB 块大小意味着什么 gt 是否意味着从磁盘读取的最小单位是64MB 如果是 这样做的好处是什么 gt 方便连续访问 HDFS 中的大文件 我们可以使用磁盘原
  • Angular2可观察http获取条件重复

    我正在使用 angular2 可观察模式来发出 http 请求 我正在尝试有条件地重复 http get 我想执行 http get 直到满足条件 http get url map res gt if the condition is me
  • 一槽多信号

    对于我的 GUI 我希望有两对按钮可以在滚动区域中上下滚动 第一组按钮应该在滚动区域 1 上工作 第二组按钮应该在滚动区域 2 上工作 我放在滚动区域中的小部件称为 viewport1 和 viewport2 由于两组按钮都应该执行相同的操
  • 如何在 SSRS 报告中显示格式化的 XML?

    我的数据集中有一个字段包含未格式化的 XML 字符串 例如
  • 在unix中,是对多个小文件进行排序更好,还是对一个大文件进行排序更好?

    因此 我正在处理多个文件 需要对它们进行组合和排序 首先对每个文件进行排序并在合并文件时使用 sort m 选项 还是先合并然后排序 会更有效吗 或者说是一样的吗 我的理解是unix使用合并排序 所以本质上 一个大文件是否会被分离 排序和重
  • 重新启动 Kafka Connect S3 Sink 任务丢失位置,完全重写所有内容

    重新启动 Kafka Connect S3 接收器任务后 它会从主题的开头开始一直写入 并写入旧记录的重复副本 换句话说 Kafka Connect 似乎失去了它的地位 所以 我想象Kafka Connect将当前的偏移位置信息存储在内部c
  • 在 j2me 中使用 WSDL 文件的存根文件

    是否可以使用 WSDL 文件生成存根文件 我知道如何使用 j2me 中的 wscompiler 生成存根文件 我有一个 wsdl 文件 是否可以使用它创建存根文件 我在 j2me 应用程序中使用这些存根文件 有多种方法可以生成存根文件 Us
  • 有没有办法在活动之间传递函数引用?

    有没有一种方法可以在 Kotlin 和 Android 中捆绑函数引用 以便可以从其他片段调用这些函数 例如 我的片段工厂方法如下所示 fun newInstance tryAgainFunction gt Unit TimeOutHand
  • 如何以编程方式在 Watch 上撰写消息?

    如何将消息应用程序打开到撰写屏幕 并在消息正文中预加载特定文本 Benjy的答案几乎是正确的 https stackoverflow com a 34459852 4151918 但有一个问题 Since urlSafeBody未解包 字符
  • 为什么将一个小浮点数添加到一个大浮点数中只会删除小浮点数?

    假设我有 float a 3 gdb p f a 3 float b 299792458 gdb p f b 299792448 then float sum a b gdb p f sum 299792448 我认为这与尾数的移动有关 有
  • 打开已保存的工作簿会导致当前工作簿引发异常

    我正在尝试打开保存的 Excel 工作簿 同时保留对当前工作簿的引用 问题是 一旦我打开保存的工作簿 原始工作簿就会在访问时引发异常 这是要演示的代码片段 我将其放入功能区按钮的事件处理程序中以对其进行测试 try string workb