Excel VBAをJavaScriptに翻訳 その3

Excel VBAをJavaScriptに翻訳 その3:


はじめに

前回では、VBAをJavaScriptに翻訳する簡単な翻訳機を作成しました。

今回は、VBAのMsgBoxとDate()をJavaScriptで定義します。

npm(Notable Pseudocode Mashups)はこれを実現するためのNode.jsのためのパッケージがたくさんあります。世界中のプログラマーが作ったパッケージをそのまま使うことができます。

必要なパッケージをローカルにインストールして、JavaScriptを作ります。


前提

  • OS : Windows7以上
  • PoweShellのターミナルで実行
  • VSCodeでコード編集
  • node.js環境構築済み


tomtest.vb

JavaScriptへ翻訳する元VBAファイルです。

Debug.Print("Hello World")  ' Debug.Print 
MsgBox("Hello World")       ' MsgBox 
Debug.Print(Date)           ' Date() 


npmパッケージのインストール


dialog

MsgBoxの機能を実現するために、npmからdialogをローカルにインストールします。
dialog:https://www.npmjs.com/package/dialog

※ tomtest.vbと同じディレクトリの直下にインストールします。

npm install --save dialog 


date-time

Dateの機能を実現するために、npmからdate-timeをローカルにインストールします。
date-time:https://www.npmjs.com/package/date-time

npm install --save date-time 


tomdef.js

今回の本題のJavaScriptになります。

function Print(s) { console.log(s); }; 
function MsgBox(s) { 
    var dialog = require('dialog'); 
    dialog.info(s); 
} 
function Date() { 
    const DateTime = require("date-time"); 
    return DateTime(); 
} 
module.exports.Print = Print; 
module.exports.MsgBox = MsgBox; 
module.exports.Date = Date; 
3つの関数を定義しています。

* Print : 引数 sconsole.logでターミナルに出力します。

* MsgBox : 引数 sdialog.infoでダイアログボックスに出力します。

* Date : date-timeの戻り値を返却する関数を定義します。


tomtest.js

tomtest.vbを翻訳すると下記のJavaScriptを自動作成することになります。

var f = require('./tomdef.js'); 
 
f.Print("Hello, world");    // Debug.Print 
f.MsgBox("Hello, world");   // MsgBox 
f.Print(f.Date());          // Date() 
※VBAではDate()の'()'は省略されるが、JavaScriptでは'()'は明示する。


実行

ターミナルにて以下のコマンドを実行。

node tomtest.js 


tomtest.png


JavaScripの記述内容がそれぞれ実行されています。


まとめ

npmのパッケージを利用して実現したい機能の関数を定義しました。

npmには他にもたくさんのすばらしいパッケージが用意されています。

これらのパッケージを流用または拡張して新たな機能を実現することも可能です。

次回は、tmotest.vbをtomtest.jsへ翻訳するJavaScriptを作成します。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)