无法打开另一个 Excel 文件(当通过 .net 打开一个 Excel 时)

2023-11-26

我设计了一个 .net 应用程序,它将在登录时打开 Excel 文件并用它来打印报告。当用户注销时它将被关闭。我将 Excel 文件的可见设置为 false,以便用户不知道后台进程。

但是,如果任何人在此期间打开任何其他 Excel 文件,我的报告 Excel 文件将变得可见,并且 Excel 对象将折叠。我必须转到任务管理器并终止所有打开的 Excel 实例才能解决此问题。

Code:

 Private Sub OK_Click(sender As Object, e As EventArgs) Handles OK.Click
        Try
            Dim dt As New DataTable()
            Dim Adapter As New SqlDataAdapter()
            ConnectMe()
            Dim SQLCmd As New SqlCommand("uspLogin", Con)
            SQLCmd.CommandType = CommandType.StoredProcedure
            SQLCmd.Parameters.AddWithValue("@pLoginName", UsernameTextBox.Text.Trim())
            SQLCmd.Parameters.AddWithValue("@pPassword", PasswordTextBox.Text.Trim())
            Adapter.SelectCommand = SQLCmd
            Adapter.Fill(dt)
            SQLCmd.Dispose()
            If dt.Rows.Count > 0 Then
                Me.Cursor = Cursors.WaitCursor
                Loading.Show()
                OpenAllTempaltes()            
                Me.Hide()                
                Con.Close()
                Me.Cursor = Cursors.Arrow
            Else
                MsgBox("Your Credential is Wrong !!!", MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Login")
                UsernameTextBox.Text = ""
                PasswordTextBox.Text = ""              
                UsernameTextBox.Focus()
            End If
        Catch ex As Exception         
            Application.Exit()
        End Try
    End Sub

 Public Sub OpenAllTempaltes()
        Try                                   
            xlWorkBook = xlApp.Workbooks.Open(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Templates", "Excel_Templates_GST.xlsm"), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, True)                
        Catch ex As Exception
            Throw
        End Try
    End Sub

    Public Sub CloseAllTempaltes()
        Try
            CleanUp(xlApp, xlWorkBook, xlWorkSheet)
        Catch ex As Exception
            ExceptionLog("PrintPage", "CloseAllTempaltes", ex.ToString(), DateTime.Now.ToString("dd-MMM-yyyy"))
        Finally
            GC.Collect()
        End Try
    End Sub

我怎样才能防止这种情况发生?


Use the IgnoreRemoteRequestsExcel 应用程序对象的属性:

xlApp.IgnoreRemoteRequests = True

这相当于检查 Excel UI 选项
文件 |选项|高级|一般|忽略使用动态数据交换 (DDE) 的其他应用程序。
(看这个相关答案关于超级用户。)

我无法方便地使用 .NET 应用程序重现您的场景,但通过后期绑定 Word VBA 中的 Excel.Application 对象来运行一些测试,并且它按预期工作。我创建了一个隐藏的 Excel 应用程序,并且能够通过在文件资源管理器中双击打开文件之前和之后对其执行操作。

在我的测试中,下次我正常打开 Excel 时,该设置仍然不会切换,但您可能希望在退出应用程序对象之前捕获其值并恢复它,以防该行为不通用。

编辑:这种行为至少从 Excel 2003 起就已经存在,我使用 Excel 2016(32 位)进行了验证。

在 Excel 2013 或更高版本中,Excel 切换到单个文档界面:每个工作簿在其自己的窗口中打开。

至少到 2016 年,Visual Basic 编辑器仍然是一个多文档界面,您可以通过查看 VBE 中的“项目资源管理器”窗格轻松查看应用程序会话中打开了哪些文件。

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

无法打开另一个 Excel 文件(当通过 .net 打开一个 Excel 时) 的相关文章

  • 使用 Excel 2010 通过存储过程读取/写入 SQL Server 2008 数据库

    我们有一个 SQL Server 2008 数据库 它有存储过程来处理读 写等 这些过程由各种应用程序内部使用 需要一个人直接更新数据库中名为 Employee 的表 更新非常简单 更新 VARCHAR 和 INT 外键 字段 问题是 Sh
  • 在适用于 Windows 和 Mac 的 VBA 中指定用户文件夹的路径

    我正在编写一个使用 VBA 从 Excel 生成文件的工具 生成的文件将写入用户的 Documents 文件夹中的文件夹 如果存在 e g C Users
  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 将新行添加到表后如何更新 datagridview 的行列表

    我有一个 datagridview 在表单的加载事件上填充了表集合 我还有一个由用户填写的表单 并将新行添加到表 onclick 事件 我想在向该表添加新行后更新 datagridview表 我使用绑定到绑定数据源的 sqladapter
  • Excel:查找和替换宏 - 仅一列

    我编写了一些宏来将大量数据格式化为相同的可接受格式 我们从中提取的程序拒绝按照我们想要的方式提取数据 但理论上在 Excel 中更改并不难 它设置运行的方式是为修饰符使用单独的宏 然后使用 全部运行 宏来调用所有修饰符 目前我有 Sub R
  • 性能计数器损坏?

    性能计数器是邪恶的 不要使用它们 if PerformanceCounterCategory Exists ILoveYou is true PerformanceCounterCategory Delete ILoveYou throws
  • C# 'out' 或 'ref' 参数的值何时实际返回给调用者?

    当我向某个人分配任务时out or ref参数 是立即分配给调用者提供的引用的值 或者是out and ref当方法返回时分配给引用的参数值 如果方法抛出异常 是否返回值 例如 int callerOutValue 1 int caller
  • 在 C++/CLI 中实现 IEnumerable

    我在实施时遇到问题IEnumerable
  • 使用 Powershell SQL 将数据提取到 Excel

    我想使用 powershell 将数据从 SQL Server 提取到新的 excel 文件 对于小型数据集 我的代码可以工作 但某些表的行数超过 100 000 行 这将需要很长时间 我不在 SQl 服务器中使用该实用程序的原因是因为我想
  • 将 null 投射到某物中?

    今天我和一位同事进行了一次有趣的讨论 我们正在讨论两段 C 代码 代码片段 1 if reader IsDBNull 2 long variable1 reader GetInt64 2 代码片段2 long variable1 reade
  • openpyxl 2.4.2:保存后公式生成的单元格值为空

    我使用 openpyxl 打开文件 编辑一些单元格并保存更改 这是一个例子 import openpyxl book openpyxl load workbook sheet path sheet book active for row i
  • 如何从特定类获取特定链接?

    我想提取这个href从那个特定的class tr class even td a href italy serie a 2015 2016 Serie A 2015 2016 a td 这是我写的 Sub ExtractHrefClass
  • 为什么必须在 C# 中 Close() 文件?

    我知道这可能看起来很愚蠢 但为什么以下代码仅在我 Close 文件时才有效 如果我不关闭文件 则不会写入整个流 Steps 在表单加载时运行此代码 显示后使用鼠标关闭表单 程序终止 当文件对象超出范围时 不应该自动刷新或关闭吗 我是 C 新
  • 具有日期和名称标准的 SUMIFS...仅限月份和年份

    我正在尝试获取 SUMIFS 公式来检查日期列 并仅对与标准日期的匹配年份和月份相对应的值求和 我还希望此 SUMIFS 包含名称标准和日期 IE 单元格 A1 SUMIFS Sheet1 O O Sheet1 D D Sheet2 DAT
  • 如何使用 EPPlus 在单个 Excel 单元格中加载包含逗号的文本

    我正在尝试EPPlus 库 http epplus codeplex com 我被困在这个问题上 我必须在单个单元格中加载文本 但是当该文本包含逗号时 我使用的代码会沿着多个单元格 沿着正确的方向 分割文本 这是我用来加载文本的代码 usi
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 如何连接以逗号分隔的命名范围的返回值

    我花了几个小时试图找出如何连接命名范围中的返回值 但结果是 运行时错误 32 类型不匹配 作为一个新手 我仍在与数组作斗争 所以也许我忽略了一些细节 谢谢你帮助我 示例 B1 苯 B2 柴油 B3 混合动力 gt E1 汽油 E2 柴油 E
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl

随机推荐

  • 在 C# 中解析字符串中“坏”单词的最佳方法是什么?

    我在想这样的事情 foreach var word in paragraph split if badWordArray Contains word do something about it 但我确信有更好的方法 提前致谢 UPDATE我
  • 防止重写和/或隐藏基类函数 (C++ 11)

    自从学习 C 以来 我有一段时间甚至想阻止基类非虚函数的隐藏 我不确定这是否符合道德 但 C 11 功能给了我一个想法 假设我有以下内容 基地 h ifndef baseexample h define baseexample h incl
  • 使用可变参数和泛型时出现 ClassCastException

    我正在使用 java 泛型和可变参数 如果我使用下面的代码 我会得到一个ClassCastException 即使我根本不使用强制转换 更奇怪的是 如果我在 Android dalvik 上运行这个 异常中不会包含堆栈跟踪 如果我将接口更改
  • 检查s3存储桶中是否存在文件夹

    如何使用 Ruby on Rails 检查我的 s3 存储桶中是否存在某个文件夹 我正在使用 AWS S3 官方 gem 初始化全局连接后 AWS S3 Base establish connection access key id gt
  • 替换 MYSQL 中的非 ASCII 字符

    要将非 ASCII 字符转换为 ASCII 我使用了以下查询 UPDATE tablename SET columnToCheck CONVERT columnToCheck USING ASCII WHERE columnToCheck
  • 芹菜异常处理

    假设我有这个任务定义 def some other foo input raise Exception This is not handled return input app task bind True max retries 5 so
  • 专门化静态 constexpr 数据成员

    我有一个类来描述某种类型的一些特征 template
  • Hammer JS 无法与主干一起工作

    我正在尝试让 Hammer JS 事件与主干一起工作 但无法让它响应事件 我已经尝试过以下方法 http cijug ne t tech 2013 01 16 backbone hammer https gist github com kj
  • 如何调整 Google AdWords 跟踪像素以在 AngularJS 应用程序中使用?

    如何调整 AdWords 跟踪像素以使其在 AngularJS 应用程序中按预期运行 典型的跟踪代码如下所示
  • 更改 UIBarButtonItem 的宽度[重复]

    这个问题在这里已经有答案了 我怎样才能改变宽度UIBarButtonItem到 29 像素 属性宽度不起作用 我不想创建一个UIButton并使用initWithCustomView因为我希望方形背景适应导航栏颜色 我正在使用initWit
  • 如何将 graphql-type-json 包与 GraphQl 一起使用

    我无法让 GraphQL 识别 JSON 标量类型 我遵循了 apollo 文档 http dev apollodata com tools graphql tools scalars html Using a package 为我的架构定
  • 有哪些类型的宏/语法扩展/编译器插件?

    我对 Rust 生态系统中用于几个类似宏的事物的许多术语感到非常困惑 有人可以澄清有哪些宏 语法扩展 编译器插件并解释这些术语之间的关系吗 你说得对 它is令人困惑 特别是 因为大多数这些功能都不稳定并且经常变化 但我会尝试总结一下目前的情
  • 全屏视频切换 HTML

    HTML 5 中的视频标签确实令人着迷 我需要知道是否可以让用户切换全屏播放 我不想使用任何其他视频插件 我只需要使用视频标签 那么这可能吗 请帮帮我 您可以使用以下代码创建一个按钮 使视频进入全屏模式 JavaScript 代码
  • GC.SuppressFinalize 是否有保证?

    我在实践中的观察是GC SuppressFinalize并不总是抑制对终结器的调用 尽管如此 终结器仍可能被调用 因此我想知道是否GC SuppressFinalize具有以下性质request而不是一个保证通过系统 更多信息 如果需要 以
  • 如果间接调用sied方法则不会调用Sinon Spy

    Problem 在我们的代码库中 我们遇到了 sinon 的问题 可以使用下面的代码片段来重现该问题 问题是 这似乎是间接的所谓间谍还击力量false the console log明确指出该方法被调用 但spy called遗迹false
  • Jython 不会导入用户定义的类;导入错误:没有名为 ****** 的模块

    这几天我一直在用头撞墙 试图解决这个问题 我已经开始使用 Jython 进行快速原型设计 我遇到了一个看似非常基本的问题 但我似乎无法克服它 我是在JythonBook 的第 10 章当我尝试编写和使用 Beach 类时遇到了问题 从标记为
  • 通过文本转语音朗读时暂停电话铃声,然后恢复

    我正在制作一个来电者语音应用程序 它使用 TTS 说出来电者姓名 我想在 TTS 说话时暂停铃声 然后恢复铃声 根据我的研究 我们可以使用AudioFocus 希望如此 无论如何我正在使用以下代码 Update 我现在正在使用这段代码 pu
  • Java:如何将java.util.logging的语言更改为英语?

    我有 java util logging 将输出打印到文件 效果很好 然而 这些消息包含对应于日志级别以及记录消息的时间 如何让它打印英文而不是中文 这就是当前消息的样子 11月 08 2016 8 28 03 下午 mySamples t
  • 取消 Afnetworking 2.0 中的 Post 请求

    您好 我正在使用 AFnetworking 2 0 发出发布请求 我的请求看起来像这样 AFHTTPRequestOperationManager manager AFHTTPRequestOperationManager manager
  • 无法打开另一个 Excel 文件(当通过 .net 打开一个 Excel 时)

    我设计了一个 net 应用程序 它将在登录时打开 Excel 文件并用它来打印报告 当用户注销时它将被关闭 我将 Excel 文件的可见设置为 false 以便用户不知道后台进程 但是 如果任何人在此期间打开任何其他 Excel 文件 我的