Извлечение имени книги 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 снова... Может быть, с некоторыми изменениями здесь и там вы могли бы выполнить свою задачу, но это зависит от вас.

Надеюсь, поможет...

Другие вопросы по тегам