12.生成したTcplinkマクロをEXCEL(vba)から直接起動する

By 岡田 - Posted: 2016/08/28 Last updated: 2016/08/29 - Leave a Comment
印刷用ページの表示 印刷用ページの表示
Tcplinkマクロをvbaから起動するのは、WSH(Windows Script Host)を使います
WSHの機能を使って、書き出したマクロを実行します。前回の説明と合わせてvbaを記載しますが、今回の説明部分は28から31行目になります

01|Sub tcplink生成サンプル()
02|Dim buf2 As String
03|’マクロ命令生成
04| buf2 = “;コメント1” & vbNewLine
05| bun2 = buf2 & “;コメント2” & vbNewLine
06| buf2 = buf2 & “change session TCP3270-Ses01” & vbNewLine
07|
08| buf2 = buf2 & “message “”データセット名” & ActiveSheet.Range(“A1”).Value & “で実行します。よろしければOKして下さい””” & vbNewLine
09| buf2 = buf2 & “UNTIL STRING (01,4) “”待ちメッセージ””” & vbNewLine
10| buf2 = buf2 & “message “”後続処理を実行します。よろしければOKして下さい””” & vbNewLine
11|’クリップボード
12|With CB
13| .SetText buf2
14| .PutInClipboard
15|End With
16|’マクロ登録
17| rc = Shell(“notepad.exe C:\TcpLinktest.mac”, vbNormalFocus)
18| If rc <> 0 Then
19| Application.SendKeys “%EA”, True
20| Application.SendKeys “%EP”, True
21| Application.SendKeys “%FS”, True
22| Application.SendKeys “%FX”, True
23| Else
24| MsgBox “起動に失敗しました”
25| End If
26|
27|MsgBox “tcplinkマクロを起動します”
28|’マクロ実行
29| With CreateObject(“Wscript.Shell”)
30| .Run “C:\TcpLinktest.mac”, 5
31| End With

生成されるTcplinkマクロ
01|;コメント1″
02|;コメント2″
03|change session TCP3270-Ses01
04|message “データセット名 EXCELのA1セルの内容 で実行します。よろしければOKして下さい”
05|UNTIL STRING (01,4) “待ちメッセージ”
06|message “後続処理を実行します。よろしければOKして下さい”


Tcplinkマクロの実行方法の違いによる記述方法の違い

TcpLinkマクロを実行する方法は2通りあります
1)開いているセッション画面からマクロを実行する方法
2)エクスプローラにあるファイルを直接実行する方法

今回は、vbaからマクロを実行するため、2)に該当します。

1)と2)でマクロ記述方法に違いがあります。2)で実行する場合、使うセッション画面名をマクロ内に記述しておく必要があります。セッション画面名を記述していない状態で2)の実行を行うと、画面名が指定されていない旨のエラーメッセージでマクロが処理されません
※実機検証の結果、セッション画面を1画面しか設定していない場合でも、2)で実行する場合にはセッション画面名を指定する必要があるようです

マクロの命令文には、どこからマクロが呼び出されたのかを判定するものが無いようです。1)と2)の起動の違いをプログラムで制御できる事が判りましたらお知らせします

2)で実行する場合、上のvbaで以下の記述を入れています
06| buf2 = buf2 & “change session TCP3270-Ses01” & vbNewLine

生成されるTcpLinktest.macでは、以下の所になります
03|change session TCP3270-Ses01


この命令で、TCP3270-Ses01のセッション画面で4行目以降の処理を行う事になります。
このマクロを実行する際、なんらかのセッション画面が開いている事を前提としていますが、全くセッション画面が開いていない場合を想定する場合は、change session を open session に変更する必要があります

次回は、Tcplinkマクロで処理した結果をEXCELに取り込む方法を説明します
Posted in Tcplinkマクロ活用(拡張編) • • Top Of Page