Как я могу вызвать функцию RefreshAll при использовании функции GetObject в VBA

#excel #vba

#excel #vba

Вопрос:

Я использую функцию GetObject для открытия одного файла Excel в фоновом режиме без открытия.

    Dim exWb As Object
   Set exWb = GetObject("#.xls")
   exWb.RefreshAll
  

Но, похоже, exwb он не может обновить свой источник данных.
Есть ли у нас какой-либо другой способ обновить фоновый открытый файл Excel?

Комментарии:

1. Есть один способ, который открывает Excel визуально. Но это повлияет на пользовательский интерфейс.

Ответ №1:

Нет, вы не можете применить метод RefreshAll к рабочим книгам, не открывая их.

RefreshAll это метод Workbook object, поэтому вам нужно сначала открыть книгу.

Кроме того, GetObject() возвращает ссылку на объект, предоставленный компонентом ActiveX, поэтому этот пример не будет работать.

Комментарии:

1. Спасибо за ваш ответ, и есть ли у нас какой-либо другой способ обновить данные, не открывая файл Excel?

2. Я должен спросить, почему вы хотели бы обновить данные, не открывая их? Это просто для того, чтобы избежать задержки при открытии?

3. @Jonathan да, чтобы сократить временные затраты и улучшить пользовательский интерфейс.