QXマクロ情報

前のページに戻る




VB4→QXマクロに移行する際の参考情報

VB4からQXマクロに移行する際に躓かないよう、移行の際に知っておくと便利な要点をまとめておきました。こちらで解説した機能に興味を持った場合は、QXエディタ付属のヘルプファイルの『キーワード』でKeyWord欄の文字列を打ち込み検索すればOKです。

機能名 解説 KeyWord 
sub/function QXマクロではByRef指定、Optional指定などは使えません。そのほか、再帰呼び出し不可、function内でのend命令不可など特有の仕様があります。 function 
dim QXマクロでは宣言しない変数の使用は許されません。要するに常にOption Explicit(←VB4の場合)状態ということですな。 dim 
変数型 QXマクロで使用できる変数型はstring、integer、long、HWNDなどです。実数(小数点以下の数)を扱える変数型はありません。 変数 
stringのサイズ string型に格納できる文字列は最大で10Kバイトまでです(ちなみにVB4は2G)。 変数 
変数型の省略 dim命令で as キーワードを省略した場合、変数名の末尾が$のものは文字列型、それ以外はlongを指定したことになります dim 
デバッグウィンドウ VB4ではdebug.printでデバッグウィンドウに文字列を出力できましたが、QXマクロではdprint命令を使用します。 dprint 
command$ VB4ではコマンドラインの引数を返しますが、QXマクロではマクロ実行時の引数を返します。…言葉ではちょっと説明しにくいので詳しくはヘルプ見てプリーズ→ command$ 
文字列変数を表す$ 変数名の後ろにドルマークを付加すると文字列変数という意味になります。QXマクロの文字列を返す組み込み関数は全て末尾に$が付く(left$とかmid$とか)ので、VB4の末尾に$を付けない組み込み関数に慣れている人は注意しましょう。 

↓QXマクロには存在するがVB4には存在しない注目の機能です。

機能名 解説 KeyWord 
++、-- C言語などでお馴染みの++、--がQXマクロでも使えます。例えば『a++』は『a=a+1』を意味します。 ++ 
| or演算子は|で代用することもできます。例えば『10 or 2』という部分は『10 | 2』と表記することが出来ます。msgboxの引数を指定する場合などに威力を発揮するでしょう。  
popupmenu 右クリック時に表示されるようなポップアップメニューを表示しユーザーの選択結果を返します。項目は配列で設定します。階層化、セパレータ(区切り)、チェックマークの付加などの機能があります。ヘルプでpopupmenuの下の項にあるpopupmenuf$も要チェック! popupmenu 
getfilename$ コモンダイアログをコマンド1発で呼び出せます! VB4でもコモンコントロールやAPIを使えばコモンダイアログを呼び出せますが、QXマクロのgetfilename$の簡易さには足元には及びません。getfolder$、getcolor$にも注目。 getfilename$ 
getprofile$ getprofile$とwriteprofile$は、95以前からWinを使っている方には御馴染みのiniファイルを読み書きする命令です。楽ちんなのでお勧め。 getprofile$ 
inrstr instrではありません。inrstrです。inrstr命令を使うと最後に現れる文字位置を取得できます。フルパス名からファイル名や拡張子名を抽出する際に便利。 instr 
配列の[] QXマクロでは配列をBasic系言語で御馴染みの()のほか、C系の言語で御馴染みの[]も使用できます。関数や計算式を規定する括弧と視覚的な区別が出来るので[]の使用はお勧めです。(例)a$[10] dim 
fullpath$ 相対パスをカレントフォルダに基づいてフルパスに変換します。地味だけどとっても便利! fullpath$ 
searchexe$ レジストリを検索して実行ファイルのフルパスを取得。管理人もまだ使ったことが無いが使いこなせれば便利な予感。 searchexe$ 
date0$ QXマクロのdate$命令は"2002/ 8/ 3"といったように、月/日が1桁のときはスペースで埋められます。date0$を使えば"2002/08/03"といったように、スペースではなく数値のゼロで埋めることが出来ます。似たような命令にtime0$があります。 date0$ 
listbox リストボックスを表示しユーザーに項目を選択させることが出来ます。御手軽な分岐を作れるのでお勧め! listbox  
_GetTickCount Windowsの起動してからの時間をミリ秒単位で返します。擬似乱数を取得する際などに便利。 _GetTickCount 
_sleep 一定時間マクロの実行を一時停止します。引数にはミリ秒単位で待ち時間を指定します。 _sleep 
_sndplaysound wavファイルを演奏します。 _sndplaysound 
#comment 次の#comment行までを注釈と見なす。マクロ内にドキュメントを載せるときなどに便利かも。 #comment 

↓VB4には存在するがQXマクロには存在しない注目の機能です。

機能名 解説 KeyWord 
while文 QXマクロにはwhile〜wend命令は存在しません! ループ処理を行うにはdo〜loop命令を御利用ください。do〜loop命令はもちろん『do』で検索できます。 do 
select文 QXマクロにはselect命令は存在しません。代用命令もないので、select分岐はif分岐などに変更する必要があります。 
rnd/randomize QXマクロには乱数を出力するrnd命令が存在しません! もし乱数が必要な場合は自分で乱数育成ルーチンを組み込まないといけないので注意してください。…まあ、エディタのマクロ言語なので乱数が必要な場面はそう多くないと思いますが。 

↓VB4とQXマクロの細かい差異です。

string$細かい点ですが、QXマクロのstring$ではシフトJISコードを渡すことで2バイト文字を出力することも出来ます(VB4のString$は1バイト文字のみ対応です)。 string$ 
lineinputVB4のline input命令はQXマクロではlineinputと表記します。 lineinput 
ファイル番号open〜closeで使用するファイル番号は1〜5です。つまり、5つ以上のファイルは同時に開くことが出来ないので注意してください。 freefile 
killVB4ではkill命令の対象のファイルが存在しない場合はエラーになりますが、QXマクロではエラーになりません。 kill 

昔からのBASICユーザーが引っ掛かり易い点

文字定数内の文字コード0x22(ダブルクォーテーション) 
文字定数内では0x22を2つ連ねることで0x22を指定したことになります。例えば、a$="abc""def"とすれば、変数a$にabc"defの7文字が代入されます。 これはQXマクロのほか、VB4でも使用できる表記方法です。

QXヘルプ補足

ヘルプに載っていない細かな仕様に気づいたら、こちらに追加していきます。

left$補足left$の第2引数に0を指定した場合はエラーにならずヌル文字を返します。第2引数にマイナスを指定した場合は全ての文字を返します。 
trim$補足trim$が削除するのは半角空白のみです。全角空白は削除しません。rtrim$、ltrim$も同様です。VB4とは仕様が異なるので、双方を利用している人は要注意。 
mid$補足left$の第1引数に0を指定した場合は1を指定したことになります。第1引数にマイナスを指定した場合は空文字列を返します。 

QXマクロのエラー回避処理研究

 

エラー回避関係の処理はひな型を作っておけば便利だと思った。まずはその下準備として、便利そうな命令を集めています。

select範囲選択状態を取得。
CanEdit@input命令などが使用できるときTRUE。読み込み専用や範囲選択中のときFALSE
CanEditSel内容に変更を加えることが出来ない(読み込み専用など)ときFALSE
@PrintStatusBarスタータスバーの有無の調査と設定。print命令はお手軽な出力命令だがスタータスバーが表示されていないと意味が無いので、print命令のメッセージが重要な意味を持つツールでは有無を調べたほうがよいのかも?
@ParametersInfo引数に1を指定すると同時に編集可能な文書の最大数(v6.7時点では40)を返します。
freefileファイル番号の空きを調べる。
macrofilename$実行中のマクロファイルのファイル名をフルパス付きで出力

QXマクロを組む際の注意点と落とし穴 

ヘルプに書かれている内容でも、重要そうだと思ったことは、ここでも書いています。


前のページに戻る
トップページに飛ぶ