在实际打开之前提取Excel工作簿名称

时间:2013-11-22 18:36:58

标签: c# vba excel-vba vsto shared-addin

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

((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并向用户显示之前,是否有任何方法或机制来提取文件名?任何形式的帮助都非常感谢。谢谢。

3 个答案:

答案 0 :(得分:0)

不,你不能。

你无论如何都可以在OpenBook标签的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了...... 也许在这里和那里进行一些调整你可以完成你的任务,但这取决于你。

希望它有所帮助...

答案 1 :(得分:0)

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

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

您可以使用

隐藏工作簿
Wb.Windows[1].Visible = false;

答案 2 :(得分:0)

Isn&#t; Wb.name与文件名相同吗?在这种情况下,既然您必须知道文件名/位置才能打开它,您可以事先检查它吗?