Excel で RTD 関数を設定して使用する方法
概要
注:
Excel M365 バージョン 2002 以降では、RealTimeData (RTD) 関数のパフォーマンスが大幅に強化されました。 詳細については、「 Excel のパフォーマンスと制限の改善」を参照してください。
この記事では、RealTimeData (RTD) 関数が提供する機能について説明します。 Microsoft Office Excel には、ワークシート関数 RealTimeData (RTD) が用意されています。 この関数を使用すると、コンポーネント オブジェクト モデル (COM) Automation サーバーを呼び出して、リアルタイムでデータを取得できます。
財務データや科学データなど、リアルタイムで更新されるデータを含むブックを作成する必要がある場合は、RTD ワークシート関数を使用できるようになりました。 以前のバージョンの Excel では、その目的に動的データ交換 (DDE) が使用されています。 RTD 機能は COM テクノロジに基づいており、堅牢性、信頼性、利便性の利点を提供します。 RTD は、リアルタイム データを Excel で使用できるようにするための RTD サーバーの可用性に依存します。 RTD サーバーを作成する方法の詳細については、「リファレンス」セクションを参照してください。
RTD 関数は、ブックで使用するために RTD サーバーからデータを取得します。 関数の結果は、サーバーから新しいデータが使用可能になり、ブックがそれを受け入れるたびに更新されます。 サーバーは、Excel がアイドル状態になるまで待機してから更新します。 これにより、開発者は、Excel が更新プログラムを受け入れるかどうかを判断する必要が軽減されます。 RTD 関数は、ワークシートが再計算されたときにのみ他の関数が更新されるため、この点で他の関数とは異なります。
RTD 関数はサーバー上のデータへのリンクを提供しますが、他のワークシートやブック内のセルへの参照と同じ種類のリンクではありません。 たとえば、ブックで RTD 関数を使用する場合、ブックを開くときにリンクスタートアップ メッセージが表示されず、[リンクの編集] ダイアログ ボックスで RTD 関数の状態を管理することもできません。
構文
RTD 関数は、次の構文を使用します
=RTD(RealTimeServerProgID,ServerName,Topic1,[Topic2], ...)
関数引数は次のとおりです。
RealTimeServerProgID
ローカル システムにインストールされている RTD サーバーのプログラム ID を表す文字列。 これは通常、設定手順または RegSvr32 を使用して登録される COM アドインです。 RealTimeServerProgID は必須の引数です。
ServerName
RTD サーバーを実行するサーバーの名前を表す文字列。 RTD サーバーがローカルで実行されている場合、ServerName は空の文字列 ("") であるか省略する必要があります。
Topic1,[Topic2], ...
取得されるデータを決定する文字列。 1 つのトピックから 28 個のトピックまでを使用できますが、必要なトピックは 1 つだけです。
RTD の使用
RTD 関数の例として、複数の同時レースでランナーの連続データを提供するサーバーから情報を取得することを検討してください。 サーバーが RaceReport.dll という名前のダイナミック リンク ライブラリ (DLL) として提供されていること、ユーザーのコンピューターにインストールされていること、および独自のセットアップ プロセスによって COM アドインとして登録されていることを前提としています。 このサーバーで使用される RTD 関数の一般的な形式は、次のようになります。
=RTD("MyRTDServerProdID","MyServer","RaceNum","RunnerID","StatType")
ここで、RaceNum、RunnerID、および StatType の各トピックで、関心のある競合、データが必要なランナー、および関数の特定の使用のためのデータの種類がそれぞれ決まります。
ここでは、ユーザーがセルを選択し、そのセルに次の数式を入力する場合があります
=RTD("ExcelRTD.RaceReport",","2","16","Time")
を選択すると、レース番号 2 のランナー番号 16 の現在の経過時間が表示されます。 トピックの数と関連するデータの性質は、COM サーバーの開発者によって決まります。 たとえば、次の RTD 関数を使用すると、レース レポート サーバーによって異なるデータが配信される場合があります。
=RTD("ExcelRTD.RaceReport",","3","25","Position")
この場合、返されるデータは、レース番号 3 のランナー番号 25 の現在位置を示します。
この方法では、同じ関数をブック全体で異なる方法で使用して、同じサーバーから異なるデータを取得できます。そのすべてが自動的に更新されます。
使い方を簡略化するラッパー
RTD 関数は、Microsoft Visual Basic for Applicationsのユーザー定義関数 (UDF) 内で使用できます。 次に、これらは RTD 関数のラッパーになります。 この方法は、RTD サーバー名と ProgID の詳細からユーザーを保護し、ユーザーが重要なデータのみに集中できるようにする場合に役立ちます。
たとえば、前のシナリオでは、GetTime(RunnerID) と GetPosition(RunnerID) の 2 つの関数がユーザーに提供される場合があります。 これらの関数は、ユーザーが常に同じサーバーと競合番号を処理していることを前提としています。 そのため、ユーザーはランナーの経過時間と位置に関する現在のデータをそれぞれ受信するためにランナーの ID を指定するだけで済みます。
計算
RTD は Excel がアイドル状態のときにデータを更新するため、Excel が手動計算モードの場合は引き続き情報を受け取ります。 その場合、新しいデータがキャッシュされ、手動計算が実行されるときに現在の値が使用されます。
セキュリティ
RTD サーバーはデジタル署名する必要があります。 RTD サーバーがデジタル署名されていない場合、サーバーが読み込まれていない可能性があり、RTD サーバーを参照するセルに #N/A が表示されます。
Microsoft Office Excel 2007 の場合は、セキュリティ センターを使用してセキュリティ設定を確認できます。 これは、[Excel のオプション] ダイアログ ボックスの [セキュリティ センター] タブからアクセスできます。
Microsoft Office Excel 2003 および Microsoft Excel 2002 では、Excel のマクロ セキュリティ設定を調整することで、読み込み動作を変更できます。
関連情報
RTD と Excel のセキュリティの詳細については、「 Excel で RTD 関数を設定して使用する方法」を参照してください。
RTD サーバーの作成の詳細については、「 Excel 用 RealTimeData サーバーを作成する方法」を参照してください。