Microsoft 365の web ExcelはVBのマクロではなく、TypeScriptのプログラムが動く。
TypeScriptはJavaScriptの上位互換で、変数のTypeが厳格になっているだけで、大きく変わるところはない。
そこで練習がてら、逐次反応をオイラー法で解くプログラムをJavaScriptからTypeScriptに変換してみた。
最も簡単な逐次反応は,
A→B, r1=k1Ca
B→C, r2=k2Cb
と書くことができる。
k1, k2は反応速度定数だ。Ca,Cb,Ccは各成分の濃度だ。
各成分の濃度を表わす微分方程式は次のようになる。
dCa/dt = -k1Ca
dCb/dt =k1Ca – k2Cb
dCc/dt = k2Cb
これをオイラー法を使って解く。
初期条件をセルから読み込み、各時間での濃度をセルに出力し、グラフを書く。
セルの値の取り出し方、出力の仕方が解れば、1時間もあれば作れる。
TypeScriptと言うからには、変数のTypeにはうるさい。
セルには、どんなタイプ(文字、数字、真偽値)が入っているかわからない。
そこでScript的には赤波線が置かれエラー表示なる。
そこで、解決方法がわからず1時間もかかってしまったのだけど、結局実行してみたらすぐに動いた。
エクセルのVBマクロは、どうも怖くて使う気になれない。
そこで、エクセルからコピーして、Webアプリで計算して、またエクセルに戻すようなことをやって来た。
でも、エクセルの表中のSmiles構造式を読み込んで、Y-MBで物性推算して結果を書き込むとかが簡単にできるようになる。
これは、色々と夢は広がる。
Excelの上でTypeScriptを動かすにも紆余曲折があった。
Cromeでは動くのにSafariで動かない問題は、どうもOneDriveの問題だったようだ。
自分は個人的には昔からOneDriveを使っている。
Pirika.comを始めて最近Microsoft 365に変えた。
そこで2種類のOneDriveがコンフリクトを起こしていたようだ。
まー、ユーザーの少ないMacではどうしても情報が少ないのだろう。
前のonedriveを消去して、Microsoft 365からインストールし直したら、Safariでも動くようになった。