PythonからActive Xを使用してDIAdemを起動し、VBスクリプトを実行する

更新しました Feb 16, 2021

環境

ソフトウェア

  • DIAdem

その他

  • Visual Studio Code

DIAdemはActive Xを介して別のアプリケーションから操作する事ができます。ここではPython環境を用意し、Visual Studio CodeにてPythonコードを作成・実行し、DIAdemの起動・スクリプト実行の手順を確認します。こちらの手順を実行するには有効なライセンスの存在するDIAdemが必要となります。

Python環境のインストール

1. PythonにはPyCharm、Visual Studio Code、Visual Studio Communityなどの複数種類のIDE(統合開発環境)が存在します。ここではVisual Studio Codeを使用します。Visual Studio Codeとは、マイクロソフト社によって開発されたソースコードエディタです。インストール完了後、Visual Studio Codeを起動し、Python, Pylanceのインストールを行います。インストールの際に重要なのはPython, pip, Pylanceがインストールされている事です。Python, Pylanceは下記の手順でインストールする必要がありますが、Python 3.4以降の場合、pipは自動的にインストールされます。
 
1installPylance2.png

2. pipを使用し、Pywin32をインストールします。Pywin32とはPythonからWindowsのAPIを呼び出す事のできる追加ライブラリです。ここではPywin32に含まれているwin32com.clientというライブラリを使用して、COM(Component Object Model)のクライアントやサーバーを作成します。Active Xを使用してExcelやWordを制御する際にも必要となるライブラリであり、頻繁に使用されます。Pywin32のインストールを行う際はコマンドプロンプトを管理者権限で起動し、下記のコマンドでインストールを開始します。
py -m pip install pywin32
 
2InstallPyWin32.png


 

Python環境のテスト

まず簡単な*.pyファイルを作成し、pythonを正常に実行する事が出来る事を確認します。

1. Visual Studio Codeを起動後、FileからNew Fileを選択し、新規のファイルを作成します。Explorerでは現在開いているファイルやデスクトップ上のファイルを確認できます。Visual Studio Code上で使用可能なプログラミング言語は複数存在するので、まずはこのファイルを*.pyとして保存します。ここではhello.pyとして保存します。
 
3New.png

2. hello.pyに下記のコードを入力します。右上の実行ボタンを押すと下記の様にhello, pythonという応答が得られます。
print("hello, python")

4writeandrun2.png

3. (オプション)ライセンスが有効かつActive Xによる制御が可能なExcelが存在する場合、下記のPythonコードを作成する事でPythonからExcelを起動し、*.xlsファイルの作成とセルへの書き込みが可能です
import win32com.client
Excel = win32com.client.Dispatch("Excel.Application")
Excel.Visible=True
ExcelWorkbook = Excel.Workbooks.Add()
ExcelWorkbook.SaveAs(r"C:\Users\tmiki\Desktop\test.xls")
ExcelWorkbook.ActiveSheet.Cells(1, 1).Value = "hello, excel"   
print(str(ExcelWorkbook.ActiveSheet.Cells(1,1)))
ExcelWorkbook.Close(SaveChanges=True) 
Excel.Quit()

OpenExcel.png

このスクリプトが正常に動作する場合、現在、pythonを使用している環境にはPywin32が正常にインストールされている事とActive Xが使用可能であると考えられます。


 

DIAdemをPythonから起動する

1. Pywin32のwin32com.clientを使用してDIAdemのCOMを作成し、Active X経由でPythonからDIAdemを制御します。新規に*.pyファイルを作成し、下記のコードを入力します。

import win32com.client
DIAdem = win32com.client.Dispatch("DIAdem.ToCommand")
DIAdem.bDontCloseApplication = True
DIAdem.CmdExecuteSync("wndshow('shell','Minimize')")
DIAdem.CmdExecuteSync(r"Scriptstart('C:\Users\username\Desktop\Msgbox.vbs')")

 

2. 上記のpythonコードではDIAdem上で実行するVBScriptファイルをパスを指定する事で呼び出している為、このコードの実行には下記の*.vbsファイルが必要となります。下記の内容をメモ帳でMsgbox.vbsとして保存します。このMsgbox.vbsを実行するとThis is DIAdem Script.というメッセージボックスが表示されます。

MsgBox("This is DIAdem Script.")


3. 上記のMsgbox.vbsをデスクトップに保存し、PythonコードのC:\Users\username\Desktop\Msgbox.vbsの部分のパスを使用している環境に合わせて変更します。

4. 上記内容の変更を行い、Pythonを実行すると、DIAdemを起動し、Msgbox.vbsを実行され、メッセージボックスが表示されます。
 

5RunDIAdemScript2.png