Excel: Может ли использование внешних ссылок повысить производительность?

Мне интересно, есть ли прирост производительности при использовании внешних ссылок по сравнению с открытием электронной таблицы и копированием ячеек (с использованием VBA).

Я полагаю, что Excel должен открыть файл точно так же, но когда я тестирую с использованием следующего кода, внешние ссылки появляются быстрее:

Dim t As Double
Dim rng As Range

For Each rng In shtId.Range("A1:A5")
    t = Now
    ThisWorkbook.Names("rngID").RefersToRange = rng
    ThisWorkbook.UpdateLink "H:\manualData.xlsx", xlExcelLinks
    Debug.Print "link: " & Format(Now - t, "######.0000000")

    t = Now
    Workbooks.Open "H:\manualData.xlsx", readonly:=True
    ActiveWorkbook.Close False
    Debug.Print "open: " & Format(Now - t, "######.0000000")
Next


Results:

link: .0000116
open: .0000231
link: .0000116
open: .0000347
link: .0000000
open: .0000347
link: .0000000
open: .0000347
link: .0000000
open: .0000347

В рабочей книге есть несколько ячеек с формулами поиска, введенными в поле идентификатора. Эти формулы имеют внешние ссылки. Чтобы проверить это, я меняю идентификатор и форсирую обновление. Чтобы проверить подход к открытию файла, я просто открываю и закрываю исходный файл.

Я рассчитываю ускорить процесс, в котором возникают проблемы из-за низкой пропускной способности сети. Я уже изучил различные варианты и просто хотел бы понять, является ли это правильным. Я искал эту тему, и некоторые люди говорят, что внешние ссылки могут вызвать проблемы с производительностью, а другие говорят иначе. Я хотел бы получить лучшее представление о механизме внешних ссылок, чтобы я мог понять, чего ожидать при реализации.

Какие-нибудь мысли?

1 ответ

Это намного больше работы, но чтение / запись данных из / в файл XML (с использованием MSXML) решит проблему производительности. Это маршрут, который я был вынужден принять при определенных обстоятельствах, когда пропускная способность была низкой.

Скорость, с которой VBA может извлекать данные и выполнять расчеты, намного быстрее, чем использование нескольких ссылок. В зависимости от обстоятельств; Вы можете сделать это на событии открытия рабочей книги или даже на определенном событии изменения (ComboBox и т. д.), поскольку вы работаете только с килобайтом данных.

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