4

私の Excel アプリケーションは、他の Excel ファイルへのリンクを作成します。1セルのリンクを作成するのに約1秒かかりますが、リンクするセルが数百あるので、非常に遅いです。ソースファイルを開いても閉じても速度に違いはありません。ただし、リンクを手動で作成する (たとえば、リンクを含む数式を他のセルに手動でコピー アンド ペーストする) と、ソース ファイルが開いている間ははるかに高速であることに気付きました。

私のプログラムでは、Application.Calculation を自動ではなく手動に設定しました。

私は 2 つの方法でリンクを達成しようとしました (これは実際のコードではないことに注意してください。

1.範囲内のRange("A1")すべての foreach ループを使用して、数式リンクを外部ソースにコピーします。Cell

Cell.FormulaR1C1 = Range("A1").FormulaR1C1

Range("A1")2. foreach ループを使用せずに、式を別の範囲にコピーします。

Range("thisIsMyTargetRange").FormulaR1C1 = Range("A1").FormulaR1C1

どちらの方法も同じように遅く、先に述べたように、ソース ファイルを開いたり閉じたりして、上記の両方の方法を確認しました。

これをスピードアップする方法はありますか?Excel 2003 のリンク メカニズムについて、リンク パフォーマンスを改善する方法についてアドバイスを提供できるほど詳しい人はいますか?

4

2 に答える 2

1

公式を持っていることは適切ですか?.valueの代わりに使用しない場合.formular1c1

また、範囲が同じサイズの場合は、ループの代わりに範囲コピーを使用します。例えば

range(a1:a500).value = range(a1:a500)

追加された代替方法:

また、別の方法は、ファイルが開いたときに更新されるデータインポート機能を使用してテーブルを作成することです(シートが必要な場合)。次に、そのシートの一部が必要な場合は、インポートシート/テーブルのデータを使用します。これにより、ファイルを開いたときに1つの大きなインポートのみへの更新またはリンクが維持されます。

于 2013-02-16T00:15:25.940 に答える
0

私はこれを、1秒に1回程度のデータを何ヶ月も取得するために行わなければなりませんでした。

データのコピー元のドキュメントを開きます。次に、そのデータを保持しているシートを、使用しているブックにコピーします。それらからデータを取得し、ワークブックからそれらのシートを削除します。これをマクロで実行すると、すばやく繰り返し実行できます。

于 2013-03-07T19:46:51.960 に答える