2013-04-01 10 views
9

外部リンクを使用してスプレッドシートを開いたり、VBAを使ってセルをコピーしたりするときに、パフォーマンスが向上するかどうかは疑問です。Excel:外部リンクを使用するとパフォーマンスが向上する可能性がありますか?

私は、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を変更して更新を強制します。ファイルオープンアプローチをテストするには、ソースファイルを開いて閉じるだけです。

私は、ネットワーク上で帯域幅が狭いために問題が発生しているプロセスをスピードアップすることを検討しています。私はすでにさまざまなオプションを検討しており、これが有効かどうかを理解したいと思うでしょう。私はこのトピックを検索し、外部リンクがパフォーマンスの問題を引き起こす可能性があると言う人もいます。私は、外部リンクの背後にあるメカニズムをよりよく理解して、実装時に何を期待するのか理解できるようにしたいと考えています。

どのような考えですか?

+0

良い質問です。私は外部リンクではあまり働かないが、単に外部リンクを更新する(つまり、そのコンテンツに直接アクセスする)だけでは、ファイルを開いたり、コンテンツにアクセスしたり、ファイルを閉じるよりも速くなるだろう。しかし、私は、両方のブックが開いているときにリンクを更新する方が速い場合もあることを思い出します。だから、良い質問、あなたのために+1は、他の人がそれについて何を言うのを見ることを切望しています。 –

+0

(1)ScreenUpdatingをfalseで再度測定します。 (2)測定された時間を2または3秒以上駆動するのに十分なデータ量。パフォーマンスの測定値があまりにも多く、あまりにも多くの混乱があり、意味のある比較のために役に立たなくなってしまいます。 –

+3

また、正直言って、私は外部リンクを持つスプレッドシートを「壊れた」スプレッドシートとみなしています。誤った結果が公表されるまでには時間の問題であり、場合によっては致命的な結果が生じる可能性があります。適切なデータ管理をサポートしていない分析ツールの代わりに、適切に管理できるデータベースにデータを格納します。 –

答えて

1

多くの作業がありますが、XMLファイル(MSXMLを使用)との間でデータを読み書きすると、パフォーマンスの問題が解決されます。帯域幅が低い特定の状況下で私が採用しなければならなかったルートです。

VBAがデータを取得して計算を実行する速度は、複数のリンクを使用するよりもずっと速くなります。状況に応じて。あなたはkBのデータだけで作業しているので、Workbook Open Eventや特定のChange Event(ComboBoxなど)でもこれを行うことができます。

関連する問題