スポンサーリンク

UWSC で マクロ(Excel VBA) を実行する方法


UWSC という Windows マクロを作成するプログラミング言語を使うことがあります。

UWSC は会計事務所の業務にけっこう使えるツールなのです。

Excel VBA と UWSC、両者を組み合わせて使うことで様々な操作ができるようになります。

「UWSC で Excel VBA マクロを実行する」

あるいは

「Excel VBA で UWSC マクロを実行する」

ことで、両者を相互に上手に組み合わせて使うことができるようになるのです。

Excel VBA で UWSC マクロを実行するイメージ図

Image

UWSC で Excel VBA マクロを実行するイメージ図

Image

さて、今日は上記のうち「UWSC で Excel VBA マクロを実行する」方法について説明します。

スポンサーリンク

1、今回取り上げる Excel シートとマクロ(Excel VBA)

今回、実例として以下のような Excel シートを取り上げます。

シートの内容

Excel のファイル名を「UWSC で Excel VBA 実行.xlsm」としておきます。

以下のシートで、4月~3月の毎月の売上高(D列)と売上原価(E列)をランダムで入れ込むようなマクロ(Excel VBA)を作ります。

Image

なお、F列には売上総利益を計算する式をあらかじめ入れ込んであります。

セル「F6」であれば「=D6-F6」

Image

Excel VBA 全コード

VBE(エディタ)を開き、標準モジュールにコードを書きます。

プロシージャ名は「Test」です。

Rnd 関数は0以上1未満の乱数を返す関数です。

今回は、ここをメインに説明したいわけではないので詳細は割愛しますが、上記コードは For 文を使って i を 1~12 まで変化させて 4月~3月の12ヶ月分の処理(売上高、売上原価の計算と表示)を行っています。

Cells(5 + i, 4) = Application.RoundDown(Rnd * 100000, 0) + 100000

の部分では、Rnd 関数を使って i番目の月の売上髙を 100,000 以上 200,000 未満の間のランダムな数値で作ってセルに書き出しています。

また、

Cells(5 + i, 5) = Application.RoundDown(Cells(5 + i, 4) * 0.7 + Rnd * 1000, 0)

の部分では、Rnd 関数を使って i番目の月の売上原価を計算してセルに書き出しています。

具体的には、売上原価は売上髙に 0.7 を掛けた数値に 0以上 1,000 未満のランダムの数値を足すことで作り出しています。

2、現在アクティブになっている Excel シート内の VBA マクロを実行する方法

さて、次は Excel VBA マクロを実行する UWSC のコードを紹介します。

なお、既に起動している Excel ファイルのマクロ(Excel VB)を実行する方法と、Excel ファイルを開いてその Excel シート内の VBA マクロを実行する方法の2つのやり方があるので順に説明しますね。

先に、「既に起動している Excel ファイルのマクロ(Excel VB)を実行する方法」を説明します。

UWSC コード

メモ帳を開き拡張子を「.UWS」としたファイルに以下のコードを書き込みましょう。

コード説明

上記コードの内容を説明します。

GETACTIVEOLEOBJ 関数

GETACTIVEOLEOBJ 関数は既に起動しているオブジェクトを操作するために使います。

以下のように記述して使います。

GETACTIVEOLEOBJ(”オブジェクト名”)

*オブジェクトは厳密には COMオブジェクトと言います。

今回の場合は、オブジェクト名を「Excel.Application」とすることで既に起動している Excel オブジェクトを操作対象にして、変数「ExcelObj」に入れているのですね。

Run メソッドを使ってマクロの実行

Run メソッドは以下のように記述します。

オブジェクト.Run (“マクロ名”)

今回は以下のようにしています。

・オブジェクトを「ExcelObj」
・マクロ名を「Test」

これにより、既に起動している Excel ファイルの中の「Test」というマクロを実行するように指示しています。

なお、マクロ名は先に説明した「プロシージャ名」だと思ってください。

標準モジュールの中の「Test」プロシージャを実行していることになります。

動画を確認下さい。Excel ファイルを開いた状態で UWSC マクロを実行します。動画は、UWSC の操作画面に実行ファイル(拡張子は .uws)を既に読み込んである状態で「再生ボタン」を押すところからスタートします。

3回続けて実行してみますね。再生ボタンを押して実行するたびに売上高、売上原価の値が変わります。

なお、UWSC の再生方法などについてはこちらの記事を参考にして下さい⇃

3、Excel ファイルを開いてその Excel シート内の VBA マクロを実行する方法

次に、Excel ファイルを開いてその Excel シート内の VBA マクロを実行する方法を説明します。

UWSC コード

メモ帳を開き拡張子を「.UWS」としたファイルに以下のコードを書き込みましょう。

(Open メソッドで開くExcel ファイルのパスはPCによって異なります。)

コード説明

上記コードの内容を説明します。

CREATEOLEOBJ 関数

CREATEOLEOBJ 関数は、オブジェクトを作成する関数です。

以下のように記述して使います。

CREATEOLEOBJ(”オブジェクト名”)

*オブジェクトは厳密には COMオブジェクトと言います。

今回の場合は、オブジェクト名を「Excel.Application」とすることで新たに Excel オブジェクトを作成して、変数「ExcelObj」に入れているのですね。

Visible プロパティ

Visible プロパティはオブジェクトの表示・非表示を表すプロパティです。

「表示」は画面上で目に見えることを言い、「非表示」は目に見えないことを言います。

オブジェクトを表示する場合、以下のように記述します。

オブジェクト.Visible = True

オブジェクトを非表示にする場合、以下のように記述します。

オブジェクト.Visible = False

今回は以下のようにしています。

・オブジェクトを「ExcelObj」
・Visibleプロパティを「True」

これにより、作成した Excel オブジェクトを表示して、画面上で目に見えるようにしているのです。

Workbooks.Open メソッド

Workbooks.Open メソッドは Excel ファイルを開くことができます。

以下のように記述して使います。

Excel オブジェクト.Workbooks.Open(”ファイル名”)

ファイル名はフルパスで指定する必要があります。

今回の場合は、先に生成した Excel オブジェクト「ExcelObj」を使ってデスクトップにあるファイル名「UWSC で Excel VBA 実行.xlsm」の Excel ファイルを開いています。

ファイル名はフルパスで次のように指定してますね。

「C:\Users\aaa\Desktop\UWSC で Excel VBA 実行.xlsm」

先にも書いたとおり、 このExcel ファイルのパスはPCによって異なります。

この部分は自分の PC のパスを確認して書きなおして下さい。

Run 関数を使ってマクロの実行

先に説明した既に起動している Excel オブジェクトを操作対象にする場合と同じ内容なので割愛致します。

動画を確認下さい。UWSC を使ってデスクトップ上(左上)にあるExcel ファイル「UWSC で Excel VBA 実行.xlsm」を開きマクロ(Excel VBA)を実行します。

動画は、UWSC の操作画面に実行ファイル(拡張子は .uws)を既に読み込んである状態で「再生ボタン」を押すところからスタートします。

処理が早く、Excel ファイルを開いた瞬間に「Test」プロシージャが実行され、シート上に売上高、売上原価の値が入ってきます。

4、まとめ

Excel VBA と UWSC は合わせ技で使うことでできることの幅が広がります。

そのためには、両者を相互に実行させる方法を覚えなければなりません。

今日の「Excel VBA で UWSC マクロを実行する」方法は後々応用を効かせるために有効なので是非身に付けて頂きたいです!