Извлечение имени книги Excel до ее фактического открытия
Я пытаюсь получить название книги до того, как она действительно откроется.
((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 ответа
AFAIK ты не можешь сделать это. Но, как я уже упоминал в своем комментарии, вы можете скрыть книгу, как только она станет видимой. Таким образом, пользователь увидит книгу открытой на долю секунды, а затем станет невидимой. В эту долю секунды вы можете прочитать название рабочей книги, а затем скрыть ее.
На основании ваших расчетов / заключений вы можете при необходимости закрыть / показать рабочую книгу.
Вы можете скрыть книгу, используя
Wb.Windows[1].Visible = false;
Разве Wb.name не совпадает с именем файла? В каком случае, поскольку вы должны знать имя файла / местоположение, чтобы открыть его, вы можете проверить его заранее?
Нет, ты не можешь.
В любом случае вы можете создать макрос в модуле WorkBook с тегом класса Open, как здесь:
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 снова... Может быть, с некоторыми изменениями здесь и там вы могли бы выполнить свою задачу, но это зависит от вас.
Надеюсь, поможет...