我试图在实际打开之前获取工作簿的名称。
((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并向用户显示之前,是否有任何方法或机制来提取文件名?任何形式的帮助都非常感谢。谢谢。
答案 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与文件名相同吗?在这种情况下,既然您必须知道文件名/位置才能打开它,您可以事先检查它吗?