使用VB 2010从Excel中捕获popup窗口,警报和例外

这是我第一次发布在计算器上。 我昨天开始学习VB 2010(虽然我知道一些Ruby),并且已经使用了这个问题了很多,但没有发现太多。

我已经编写了一个程序,它接收一个CSV列表的文件path(所有的.XLS文件)并尝试打开它们。 这些优秀的工作簿被另一个程序标记为不可读取; 我的程序试图捕获导致错误的警告,popup或exception。 它适用于大多数例外(密码保护,无法读取的内容,危险文件等),但一些popup窗口,要求你点击“确定”button继续不被捕获。 也许他们没有被归类为例外或者什么,我很想知道。 至less能得到他们的文本forms是很好的。 这是我的脚本:

Private Sub runReportButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles runReportButton.Click Dim Exl As New Excel.Application() Exl.Visible = False Exl.DisplayAlerts = False For Each row As DataGridViewRow In dgvReport.Rows If Not IsNothing(row.Cells(0).Value) Then If row.Cells(0).Value.ToString.Contains(".xls") Then Try 'Open the workbook and attempt to catch the error!' 'Use bogus passwords to cause Password Protected Error, Readonly disabled so the Password popup shows. Update links disabled because it wasn't being caught anyways' Dim wb As Excel.Workbook = Exl.Workbooks.Open(row.Cells(0).Value.ToString, [ReadOnly]:=False, [WriteResPassword]:="WWWWWWWWWWW", [Password]:="WWWXWXWWWXW", [UpdateLinks]:=False) row.Cells(4).Value = "Could not catch an error :(" wb.Close(0) dgvReport.Refresh() Catch ex As Exception 'Writes the Exception Message to the data grid view' row.Cells(4).Value = ex.Message End Try ProgressBar1.Value += 1 End If End If Exl.Quit() Next row dgvReport.Refresh() End Sub 

我遇到问题的原因是某些popup式窗口只有在手动打开文件时才会出现。 即使将Excel设置为可见并显示警报,也可以通过编程方式打开和closures文件而不popup任何popup窗口。 一个特别的警告是:

“此工作簿中的一个或多个工作表的名称中包含方括号:[]。为了避免在引用这些工作表时出现意外的结果,请从名称中删除任何方括号”。

这似乎不是一个致命的错误,但它导致其他程序将其标记为不可读,因为我们不能确定内容的完整性(即意外的结果)。 所以我的需求是不要忽略这些popup窗口或改善其他程序,它是捕获这个讨厌的popup消息。 如果任何人可以摆脱这个popup窗口的行为的二重性或提供一个不同的方法来捕获警报,将不胜感激!