Visio VBAからPythonを操作!データ処理や画像処理にも

Visio VBAからPythonを操作!データ処理や画像処理にも VBA

前回はPythonからVisioを起動しました。

今回はその逆!

VisioのVBAからPythonを呼び出して、今開いているページに「Hello Python!」を表示します。

どっちからどっちを呼ぶって?

Visioを開いて、そこからPythonを呼ぶイメージだよ!

① Pythonのコードを準備する

まずはメモ帳に次のコードを入力します。

import win32com.client

# 起動中のVisioに接続
visio = win32com.client.GetActiveObject("Visio.Application")

# 現在のページを取得
page = visio.ActivePage

# 四角形を描いて文字を設定
shape = page.DrawRectangle(1, 1, 4, 2)
shape.Text = "Hello Python!"

# 枠線を消す
shape.CellsU("LinePattern").FormulaU = "0"

hello.py という名前で保存します。

※前回インストールしたpywin32を使用します。

VisioのVBAからPythonを呼び出す

Visioで図面を開き、VBAの画面を表示します。

  1. Visioの図面から開発タブを選択します。
  2. Visual Basicエディタを開きます。
  3. 開いている図面を選択、右クリックして標準モジュールを挿入します
  4. エディタに以下のコードを入力します。
Sub RunPython()

    Shell "py ""C:\PythonTest\hello.py""", vbNormalFocus

End Sub

※C:\PythonTest\hello.py は実際の保存先に変更してください。

実行してみよう!

VisioのVBAで RunPython を実行します。

すると……

今開いているVisioのページに「Hello Python!」が登場!

成功です!ヽ(´▽`)/

どんな仕組みで動いているの?

今回の流れはこんな感じです。

Visio VBA → Shell → Python → pywin32 → COM → Visio

VBAの Shell でPythonを起動し、PythonからCOMを使ってVisioに接続しています。

つまり、VisioからPythonを呼び出して、そのPythonがVisioを操作しているんですね。

ちょっと遠回りに見えますが、これならPythonの豊富なライブラリをVisioの自動化に活用できそうです!

さて、次は何を作ろうかな?( ̄ー ̄)ニヤリ

タイトルとURLをコピーしました