Cache'とExcelを連携させたいということがよくあります。ここでは以下の様な方法を紹介します。

 

Webクエリで表データを取り込む

ExceにはWebクエリという機能があります。
Webクエリでは指定されたWebページ上の表をExcelのワークシート上に取り込むことができます。

ということは、CSPで好きな表を作って、それをWebクエリで取り込むことができそうです。

 

以下の様なダミーデータを用意して

S ^Product("281500")="豆腐12連パック^420^60"
S ^Product("382019")="おにぎり梅鮭^150^13"
S ^Product("301983")="牛乳コーヒー^98^6"
S ^Product("893210")="ライスパック^132^3"
S ^Product("928457")="おーい麦茶^128^21"
S ^Product("210931")="焼肉丼^520^4"
S ^Product("210991")="親子丼^520^6"
S ^Product("918435")="ツナカレー^380^2"
S ^Product("918416")="グリーンカレー^410^3"

次のようなcspページを作成します。

<body>
<table class="table">
<tr><th>製品コード<th>製品名<th>価格<th>在庫数
<server>
  S id=""
  for id=$o(^Product(id),1,dat) Q:id=""
    &html<
    <tr><td>#(id)#
    <td>#($P(dat,"^",1))#
    <td>#($P(dat,"^",2))#
    <td>#($P(dat,"^",3))#
    >
  }
</server>
</table>
</body>

ブラウザで表示すると、次のように表示されます。



このCSPページをExcelから読み込んでみます。
データ タブの Webクエリ をクリックします。


新しいWebクエリ 画面で アドレス にcspページのUrlを入力し、移動 ボタンを押すとそのページが表示されます。
表の左上に黄色いマークが表示されるので、それをクリックするとマークが緑色になります。
画面下部の 取り込み ボタンを押します。


エクセルのシートに、cspページの表が取り込まれました。




Excelに表の内容を持ってくるならコピペすればいいんですが、上のような手順を踏むからにはページの内容が変わったときに、自動的にExcelに反映して欲しいですよね。
次の一手間を加える事で、ページの内容がExcelに自動的に反映されるようになります。

表の一番上を右クリックして データ範囲プロパティ をクリックします。


ファイルを開くときにデータを更新する にチェックします。

OKを押してこの画面を閉じます。

Excelブックを保存して終了します。


表の部分を変化させるため、グローバルの内容を書き換えてみます。

// 豆腐12連パックの在庫を60→55に
S ^Product("281500")="豆腐12連パック^420^55"
// 親子丼を削除
K ^Product("210991")


この状態で先程のExcelブックを開くと、表の部分が更新されていることが確認できます。


分かりにくいので並べてみました。


あまり表が大きくなると更新処理が重くなりますが、数千行程度までならばこの方法でCache'のデータを持ってくることができます。
データ量がもっと大きい場合は、次回の XMLリクエストで動的に問い合わせる 方法を検討して下さい。

2016/08/27 Update