スプレッドシートを開いてセルをコピーする (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
ワークブックには、ID フィールドをキーとするルックアップ式を含むセル範囲があります。これらの式には外部リンクがあります。それをテストするために、ID を変更して強制的に更新します。ファイルを開く方法をテストするには、ソース ファイルを開いて閉じます。
ネットワークの帯域幅が狭いために問題が発生しているプロセスを高速化したいと考えています。私はすでにさまざまなオプションを検討しており、これが有効なオプションであるかどうかを理解したいと思っています。このトピックについて検索したところ、外部リンクがパフォーマンスの問題を引き起こす可能性があると言う人もいれば、そうでないという人もいます。外部リンクの背後にあるメカニズムをよりよく理解し、実装時に何が期待できるかを理解できるようにしたいと思います。
何かご意見は?