У меня есть sub, который вызывает ActiveWorkbook.RefreshAll, чтобы вносить новые данные из источника XML, а затем выполняет несколько модификаций. Проблема в том, что для завершения команды RefreshAll недостаточно времени, поэтому следующие подсистемы и функции не выполняются правильно, что приводит к тому, что повторяющиеся строки не будут правильно стерты.
Я попытался использовать Application.Wait и функцию Сон, но они также приостанавливают процесс обновления. Я просто хочу, чтобы остальная часть кода дождалась завершения процесса обновления до выполнения остальной части кода.
Любые идеи о том, как это реализовать? Прямо сейчас я смог исправить это, не вызвав RefreshAll, что дает мне идею реализовать второй поток, который будет выполнен после этого, но это не является хорошим обходным путем.
Пожалуйста, дайте мне знать, если это не ясно. Благодаря
ИЗМЕНИТЬ Поэтому я попробовал несколько предложений из приведенных ниже сообщений, и именно это я смог придумать. Выполнение "макроса записи", а затем UNCHECKING "Включить обновление фона" в свойствах таблицы не привело ни к чему. После этого я тоже обновился. Это было результатом записанного макроса:
With ActiveWorkbook.Connections("XMLTable")
.Name = "XMLTable"
.Description = ""
End With
ActiveWorkbook.Connections("XMLTable").refresh
В классе ActiveWorkbook.Connections нет опции BackgroundQuery, чтобы я мог установить ее в False. Любые идеи?
Просто, чтобы быть ясным. Это XML файл, размещенный на веб-сайте, который Excel отправляет и импортирует в таблицу. Затем я называю эти данные стержнем и другими вещами. Цель здесь состоит в том, чтобы разрешить процесс импорта с веб-сайта в таблицу закончить ПЕРЕД выполнением любых других команд. Благодаря
EDIT2: После небольшого исследования я нашел эту страницу: http://www.mrexcel.com/forum/excel-questions/564959-execute-code-after-data-connection-refresh-finished.html Похоже, что тип соединения XML не имеет булева логика BackgroundQuery. Этот параметр доступен только для соединений ODBC и OLEDB, которые являются типами xlConnectionTypeODBC и xlConnectionTypeOLEDB, соответственно. Используемое мной соединение XML имеет тип xlConnectionTypeXMLMAP, который не имеет опции BackgroundQuery. Кто-нибудь знает, куда идти? Единственное решение, которое я имею в виду сейчас, - сделать две отдельные макро кнопки на листе excel, один для обновления и один для модификации данных, но я предпочел бы сохранить этот параметр до последнего.