2

我试图在它实际打开之前获取工作簿的名称。

((Excel.AppEvents_Event)this.Application).WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(App_WorkBookOpen);



private void App_WorkBookOpen(Excel.Workbook Wb)
            {
                System.Windows.Forms.MessageBox.Show("Shakti " + " " + Wb.Name);

            }

使用如上所示的处理程序,Excel 应用程序在完全打开时显示工作簿名称。我的目的是在实际打开它并向用户显示数据之前进行一些正式检查。

在将内容加载到 Excel 并显示给用户之前,是否有任何方法或机制来提取文件名?非常感谢任何形式的帮助。谢谢。

4

3 回答 3

0

AFAIK 你不能那样做。但是就像我在评论中提到的那样,您可以在工作簿可见时将其隐藏。因此,用户将看到工作簿打开一瞬间,然后变得不可见。在那一瞬间,您可以阅读工作簿的名称,然后隐藏工作簿。

根据您的计算/结论,您可以根据需要关闭/取消隐藏工作簿。

您可以使用隐藏工作簿

Wb.Windows[1].Visible = false;
于 2013-11-24T09:43:12.043 回答
0

不,你不能。

无论如何,您都可以在带有 Open 类标签的 WorkBook 模块上创建一个宏,如下所示:

Private Sub Workbook_Open()

Dim ws As Workbooks

For Each ws In ActiveWorkbook.Worksheets

MsgBox ws.Name

Next

ActiveWorkbook.Worksheets.Close

End Sub

然后在打开文件时通过 c# 调用此子程序,此子程序在加载工作簿之前运行,然后将其关闭。它没有那种意义,因为您将永远无法再次访问 wb...也许通过一些调整在这里和那里您可以完成您的任务,但这取决于您。

希望能帮助到你...

于 2013-11-22T18:51:08.273 回答
0

Wb.name 与文件名不一样吗?在这种情况下,由于您必须知道文件名/位置才能打开它,您可以事先检查它吗?

于 2015-09-25T11:33:49.667 回答