ExcelからVFD2002Eに文字を出力する例
表計算シートのExcelから、カスタマディスプレイVFD2002Eに文字の表示を行う例を示します。
また、基本的な送信方法として、キャッシュドロワDWS48MRSでも同様に操作できます。
以下はExcel2003での実行例です。
Excelは表計算なので、表そのままでは外部周辺機器を制御することはできませんが、ExcelやAccessなどのOfficeアプリケーションには
VBA(Visual Basic for Applications)と呼ばれるBASIC言語が組み込まれています。
それを用いることにより、接続した表示装置をExcelから制御をすることができます。
( この例ではVBAを使用していますので、Excel以外のVBAでも参考になると思います。)
これは、呼び出し方法を説明するため添付の簡易表示ユーティリティを使用した例です。
簡易表示ユーティリティを利用するとシリアル通信を意識せずに表示を行うことができます。
実際にご使用されるためはVBAにエラー処理ルーチンなど、もっといろいろ工夫が必要ですが、基本となる部分を説明します。
また、以下では開発者の固有のフォルダやPC名などを例として用いていますので、ご使用いただくPCの環境に合わせて変更ください。
Excelに配置したボタンを押す。(ボタンイベント発生)
↓
ボタンイベントにより、ExcelのVBAを起動する。
VBAで記述したサブルーチンは、表示する内容を表内のデータから取得する。
↓
ExcelのVBAから、表示する内容を Excel外部のプログラムである VFD2002E簡易表示ユーティリティに引き渡す。
↓
VFD2002E簡易表示ユーティリティはExcel VBAから受け取った表示データを、シリアル通信でVFD2002Eに表示する。
プログラムを実行する前に、VFD2002Eに付属している簡易表示ユーティリティをあらかじめインストールしておいてください。
また、サンプルプログラムのShellを含む行は実行するプログラムファイルを示す必要があるため、インストールしたフォルダ位置にプログラムを変更してください。
以下は通常のExcelのワークシートです。
E4セルには=C4*D4が入っていますので、個数*単価の合計が自動的に計算されます。
ExcelにはVBAと呼ばれる言語が標準で備わっています。
もし、Excelをインストールした際に、VBAのインストールをされていない場合、お手持ちのExcel(Microsoft Office 2003)のCD-ROMからインストールしてください。
また、標準のExcel設定ではVBAツール類は表示されていません。
いくつか方法がありますが、以下でVBAのツールバーが表示可能です。
Excelのメニュー表示から ツールバー→VisualBasic これを選択するとVisualBasicツールを表示する。
スパナとかなづちのアイコンがVisualBasicツールの表示アイコンです。
VisualBasicツールの表示を行う。
以下のようなVisualBasicコントロールが表示されます。
VisualBasicツールのコマンドボタン(四角いボタン)をクリックし、その後ワークシート上でドラッグ動作 (マウス左ボタンを押したまま移動、移動後右ボタンを離す)を行うと
ドラッグした範囲にコマンドボタンが生成されます。
今作成したコマンドボタンを選択したまま、プロパティを変更します。
プロパティ変更は、VisualBasicツール右上の指マークをクリックするか、配置したボタンを右クリックした際に表示されるメニューの中からプロパティを選択
します。
プロパティダイアログにより、このボタンの設定を変更できるようになります。
プロパティダイアログの中にある、Captionプロパティを変更することで、ボタン表面に表示される文字列を変更できます。
ここでは「VFD2002E表示」という表示に変更してみます。
出来上がったコマンドボタンをダブルクリックすると、Excelシートとは別のウィンドウでVisualBasicEditorが開きます。
ボタンに名称を付けていないので、最初に配置したボタンの初期値名称であるCommandButton1のクリックイベントに対するプログラムを記述できる状態(ひな型)でエディタが開いています。
プロパティにより、ボタンに名称を設定してから、ボタンダブルクリックするとプロパティで設定した名称にてひな型が作られます。
ここで上記のサンプルのようにプログラムを入力します。
ボタンを押した際に呼び出されるサブルーチン名は自由につけることはできます。
VB自体の解説を行うと分厚い本になってしまいますので、それはそちらにお任せするとして要件のみ簡単に解説します。
実際にご使用される場合、文字コードなどエラーチェックを必ず行ってください。
Private Sub CommandButton1_Click()
' Variant型で起動処理を指定する
Dim VFDEXE As Variant
←Shell関数の引数はVariant型を用いる
Dim DISPLINES As String
' 解説のために分けて書いてあります。 VFD2002Eに表示するための文字列(20桁×2行分を作成します。)
DISPLINES = Left(Range("b4").Value & Space(10), 10) ' 商品名を上段10桁
←表示のために文字列をフォーマットして出力しています。
DISPLINES = DISPLINES & Right(Space(10) & Format(Range("d4").Value,
"Currency"), 10)
DISPLINES = DISPLINES & Right(Space(7) & "X " & Range("c4").Value & "コ",
10) ' 商品名を下段10桁
DISPLINES = DISPLINES & Right(Space(10) & Format(Range("e4").Value, "Currency"),
10)
' 引数を""で囲んでVFD2002Eに渡す。
' VFDDISP.EXEはインストールした位置にあわせる。
VFDEXE = "C:\Program Files\**\vfddisp.exe """ & DISPLINES & """"
←OSによってもVFDDISP.EXEのインストール位置が変わりますのでインストール位置を記入してください。
←スタートボタンに入ったVFDDISP.EXEのアイコンを右クリックするとリンクは簡単に探せます。
←Windows98やMeなどではProgram filesの下のフォルダに、Windows2000やXPなどユーザー管理されている場合、Document
and Settingフォルダ下に入ります。
' 表示なし(vbHide)でVFDDISPを実行する。
Shell VFDEXE, vbHide
←VFD2002Eへの表示を呼び出します。Shellが外部プログラムの呼び出しコマンドです。
End Sub
この例ではチェックしていませんが、VFD2002Eは半角ANK表示ですので、漢字や全角文字を与えないようにする必要があります。
全角文字を送ると表示やフォーマットがおかしくなります。
画面下のツールバーでExcelの画面に戻ります。
デザインモードの間はボタンをクリックするとVBの編集画面に移ります。
三角定規のアイコンが反転している間はデザインモードですので、もう一度クリックしてデザインモードを終了します。
また、不要なコントロールツールボックスやVB編集画面も必要ありませんから閉じます。
→
先ほど作成したボタンがボタンとして機能します。
[VFD2002E表示]ボタンを押すと、現在のセル内容が先ほど作成した書式に従い下記のようにVFD2002Eに表示されます。
ス |
イ |
カ |
|
|
|
|
|
|
|
|
|
|
|
\ |
1 |
, |
3 |
5 |
0 |
|
|
|
|
|
|
X |
|
2 |
コ |
|
|
|
|
\ |
2 |
, |
7 |
0 |
0 |
VFD2002Eでの表示の雰囲気
基本的にセル内容をVFD2002E簡易表示ユーティリティを用いて表示する方法を示しました。
実際にはどのように表示のイベントを発生させるかなど、いろいろな考慮する必要があります。
この例ではボタンを押すことで表示を行いましたが、内容が変更された際に自動的に
この例のように簡易ユーティリティを使用すると表示自体は簡単に行うことができます。
ぜひいろいろな分野で応用ください。
本説明はExcel2000/2003にて作成しました。
OS環境やバージョンなどにより上記と異なる動作となる場合がございます。
近年Excelのプログラムやマクロにコンピュータウィルスなどに感染し、被害の報告があるために、セキュリティが厳しくなってきています。
そのため、自分で作製したプログラムまでその制限を受けることがあります。
Excelのセキュリティレベルが高く設定していると、すべてのプログラムやマクロが動作しないようになってしまうために、自分のプログラムが動作するレベルまでセキュリティレベルを調整する必要があります。
以下のようなダイアログが表示された場合、セキュリティでブロックされている可能性が高いです。
表示では「マクロ」しか書かれていませんが、VBAとマクロは同様に取り扱われます。
セキュリティは、Excelメニューのツール→マクロ→セキュリティで設定します。
セキュリティ設定を変更した後は保存し、Excelをいったん終了し、Excelを再起動した後に、設定した条件が有効となります。
簡易的に試すのであれば、セキュリティを「中」に設定するとプログラムの実行が行えます。
セキュリティを「中」に設定した場合、以下のダイアログが毎回確認されます。(マクロを実行するので、この場合マクロ有効を選択します。)
セキュリティを「高」に設定した場合、このマクロが安全であることをExcelに認識させるためのデジタル署名が必要となります。
認証機関で発行されたデジタル署名IDや社内の管理部署で発行されたデジタル署名を持っている場合は、そのコードを設定します。
それがない場合は、ユーティリティを用いて使用するPCに自分でデジタル署名を設定し、マクロに署名を付けることができます。
これは、自己署名と呼ばれ、そのPCを使用する人であれば誰でもユーティリティにて署名を作成ができるために、セキュリティ的には少し低くなりますが、する自己署名にて行うことができます。
最初に、PCに自己署名のコードを作成する必要があります。
これはOfficeのツールに含まれている「SelftCert.exe」により作成することができます。
Excelの自己署名の詳しい作成方法は、「Office
XP Visual Basic for Applications マクロ プロジェクトのコード署名」を参照してください。
署名を作成したら、VBAのVisualBasicEditorのメニューから、ツール→デジタル署名でデジタル署名ダイアログを表示します。
選択ボタンにて、先に設定した署名を選択します。
ワークシートに含まれるマクロが署名付きとなることで、次回起動時に「セキュリティの警告」ダイアログが表示されます。
セキュリティの警告ダイアログには、実行するマクロ名およびマクロの発行者(自己署名の場合、自分のPCの名称)が表示されます。
マクロを実行するので、 「この発行者のマクロを常に確認する」にチェックし、「マクロを有効にする」を選択します。
期待した動作が確認できない場合、以下のようにブレークポイントとトレースによりプログラムの問題点を探す作業を行うことができます。
虫(バグ)と呼ばれるプログラムの悪い箇所を見つけてつぶす作業をDebug(デバッグ)と呼びます。
実行する前に、プログラムに、ブレークポイントと呼ばれる罠(トラップ)を仕掛けます。
プログラム編集画面の左端を左クリックすると丸印が付きます。
もう一度クリックすると解除されます。
これがブレークポイントを示し、プログラム実行したとき、実行行がここに到達した際、その行を実行する直前に一旦停止します。
ブレークポイントは複数配置できるので、必要な個所でブレークさせることができます。
この状態で、シートに配置したボタンを実行モードでクリックするとボタンクリックイベントが発生し、VBAが開始され、先ほどのブレークポイントを通過する際にそこで一旦停止し、トレースモードに入ります。
その際は、下記のように実行停止した行が黄色に反転し左端に矢印が表示されます。
デバッグツールバーを表示するか、メニューのデバッグから1行づつ実行するステップ実行を選択できます。
また、トレースモードの状態の場合、カーソルをプログラム中の変数に合わせることで、途中まで実行され、その時点で入っている変数のデータが表示されます。
(黄色の反転行は次にステップ実行される場所を示しているので、ステップ実行すると反映されます。)
シートから表示データがうまく拾えていない場合は、DISPLINESをトレースの際にチェックすることでわかります。
また、プログラムの変数を右クリックした際のメニューにより、ウォッチ式の追加を行うことで変数の内容を表示することができます。
VFDEXEの内容をウォッチした場合、
VFDEXE = "D:\Develop\VFD2002E\配布FD\vfddisp.exe """ & DISPLINES & """" の行を実行した後は、以下のように式の値がウォッチビューに表示されます。
※上記例は、開発時のテストパスですので、D:\Develop\VFD2002E\配布FD\ 部分を、インストールしたパスに変更する必要があります。
一般的には C:\program files\ の下のフォルダにインストールされていると思います。
この例では、外部のプログラムを呼び出して実行を行うShell関数に対して VFDEXE変数の内容(赤文字の部分)が渡されます。
"D:\Develop\VFD2002E\配布FD\vfddisp.exe "スイカ ¥1,350 X 2コ
¥2,700""
Shellに渡す引数を、Shellで実行する代わりにWindowsのスタートボタンの「ファイル名を指定して実行」に与えることで、同様の動作が行えます。
この例では、Shellに渡す引数としてVFD簡易表示ユーティリティのインストールされたパスを記述する必要があります。
インストールされたプログラムのパスは、スタートボタンからプログラムのプロパティダイアログを表示し、その「リンク先」を確認すると簡単にわかります。
D:\Develop\VFD2002E\配布FD\vfddisp.exe "スイカ ¥1,350 X 2コ ¥2,700" を名前に書いて実行しています。
Excelからうまく動作ができない場合、プログラムを用いないで、Windowsの「ファイル名を指定して実行」に記述してみて試すと状態がわかります。
プログラムが正しく動かない場合、部分部分に切り分けて、問題点がどこなのかを探し出す必要があります。
これまでWindows3.1, Me, XP などのバージョンにより、Windowsからプログラムに引数を渡す際の区切りについて仕様が何度か変更されました。
Program Filesのように、途中にスペースを含む場合などで動作が変わってくることがあるようです。
上記でうまくいかない場合、"D:\Develop\VFD2002E\配布FD\vfddisp.exe" "スイカ ¥1,350 X 2コ ¥2,700"
など、区切り方法を変えてみることも試してください。
- プログラムで実行する前に、VFDDISP.EXEのインストールパスを確認する。
エクスプローラで確認してください。 ショートカットを右クリックでプロパティを見ると、リンク先に表示されます。
- 実行パスの確認方法として実際にスタートボタンの中の
「ファイル名を指定して実行」の名前に実行パスと引数を渡し、VFDDISPが起動し、 表示が行われるかチェックする。
例 C:\Program Files\VFD2002E\vfddisp.exe "スイカ ¥1,350 X 2コ ¥2,700"
インストールパスはインストールした際指定した場所となりますので、インストールにより異なりますので、 インストールしたパスを指定してください。 C:\Program Files\VFD2002E\ が書き換える部分となります。
- VBプログラムのShellで呼び出しを行っている場所のパスを、上記パスに書き換える。
上記例の場合、下記のようになる。
VFDEXE = "C:\Program Files\VFD2002E\vfddisp.exe """ & DISPLINES & """" 呼び出し動作を確かめる場合、引数を与えない場合ダイアログを表示するため、 最初は引数を与えずに実行してみると、呼び出しされたことを確認できる。
' VFDEXE = "C:\Program Files\VFD2002E\vfddisp.exe """ & DISPLINES & """"
←一旦コメント化した VFDEXE = "C:\Program Files\VFD2002E\vfddisp.exe"
ボタンを押して、Windowsからvfddispと同じように実行されるのを確認する。
- 変数を使用せずに、直接引数を与えて実行を確かめる。
VFDEXE = "C:\Program Files\VFD2002E\vfddisp.exe ""スイカ ¥1,350 X 2コ ¥2,700"""
- 変数を使用して、変数でパラメータを渡す
VFDEXE = "C:\Program Files\VFD2002E\vfddisp.exe """ & DISPLINES & """"
呼び出し参考のためにAccess2003のVBAコードからVFDDISPを呼び出す参考
SHELL関数を用いて、ディスプレイ表示するVFDDISPを呼び出すとともに、半角英数カナ文字の表示メッセージパラメータを受け渡しています。
サンプルですので、ボタンクリックのイベントの中で表示用固定文字列を受け渡しています。
VB/.Netframework開発関連 参考情報
Visual Basic 2013 [VB2013]による開発情報
Visual Basic 2008 [VB2008]による開発情報
Visual Basic 2005 [VB2005]による開発情報
Visual Basic 6 [VB6]による開発情報
VBA [Excel2000/2003, Access]による開発情報
.Netframework開発情報
Windows は米国 Microsoft Corporation の米国およびその他の国における登録商標です。Microsoft
Corporationのガイドラインに従って画面写真を使用しています。
技術情報Index
Last update:
2011/09/12
|