Excel互操作防止显示密码对话框

我正在编写一个程序来清除excel文件中的空行和空列,我从我自己的问题开始,使用Interop从excel文件中删除空行和空列的最快方法,一切都很顺利

问题是,我想阻止excel在工作簿受密码保护时显示密码对话框,并引发异常而不是

我使用以下代码使用interop打开excel文件:

m_XlApp=New Excel.Application
m_XlApp.visible=False
m_XlApp.DisplayAlerts=False
将m_xlWrkbs设置为Excel.Workbooks=m_XlApp.Workbooks
将m_xlWrkb设置为Excel.工作簿
m_xlWrkb=m_xlWrkbs.Open(strFile)
m_xlWrkb.DoNotPromptForConvert=true

正如一些链接所建议的,我试图传递一个空密码

m_xlWrkb=m_xlWrkbs.Open(strFile,密码:=“”)

或使用

m_xlWrkb.Unprotect(“”)

但是没有运气

有什么建议吗

我找到了解决方案,但我会接受其他可行的答案

问题

当将一个空字符串作为密码传递时,Excel将其视为“无”。因此,它要求输入密码并显示对话框

解决方案

解决方案是将单个引用作为密码,Excel将其视为空字符串。如果工作簿没有密码保护,它将打开,否则将引发以下异常

您提供的密码不正确。确认CAPS LOCK(大写锁定)键已关闭,并确保使用正确的大写字母

代码将为:

m_xlWrkb=m_xlWrkbs.Open(strFile,密码:=“”)

注意

在microsoft excel中,值开头的单引号用于强制设置文本格式

示例’0作为值文本读取0

发表评论