У меня возникла проблема с Excel 2013 при обновлении QueryTable с BackGroundQuery, установленным на False (для наших целей BackgroundQuery должно быть установлено на false). Когда предоставляется запрос, который не возвращает данных, возникает ошибка времени выполнения 1004, наиболее распространенной причиной отсутствия возвращаемых данных является отсутствие записей для определенного временного интервала или для определенного ресурса.
Я и мои коллеги пытались обойти эту проблему, но пока не нашли решения, и далее мы не нашли ничего, что указывало бы на изменение в том, как Excel обрабатывает обновление таблиц запросов.
Образец кода, чтобы увидеть, что происходит в VBA:
Dim sql As String
sql = "SELECT 1 WHERE 1=0"
Sheet1.QueryTables(1).sql = sql
Sheet1.Activate
Sheet1.Range("b11").Select
Sheet1.QueryTables(1).Refresh BackgroundQuery:=False
При обновлении мы получаем ошибку. Изменение условия Where на 1 = 1 приводит к успешному запуску.
Мы запускаем эти отчеты из среды C # таким образом, что нам нужно дождаться заполнения данных и сохранить отчет. Выявление ошибки и продолжение работы также не является приемлемым решением, поскольку это очень общая ошибка в довольно критическом месте.
Также в Excel 2007 и 2010 нет этой проблемы.
Любая помощь по этому вопросу будет очень признательна.