前回は、PythonからVisioを操作する仕組み「COM」と「pywin32」について紹介しました。

今回はいよいよ実践!

おおお!
どうやる?
PythonからVisioを起動して、ページに「Hello Python!」を表示してみます。
① pywin32をインストール
まずはコマンドプロンプト(cmd)を開いて、次を入力します。
py -m pip install pywin32
これでPythonからVisioを操作する準備はOK!

このコマンドを実行すると、pipがインターネット上のパッケージ配布サイト「PyPI」からpywin32を自動でダウンロード・インストールします。基本的にインストールは初回だけでOKです♪

② Pythonのコードを書く
メモ帳に次のコードを入力します。
import win32com.client
# Visioに接続
visio = win32com.client.Dispatch("Visio.Application")
visio.Visible = True
# 新しい図面を作成
doc = visio.Documents.Add("")
page = visio.ActivePage
# 四角形を描いて文字を設定
shape = page.DrawRectangle(1, 1, 4, 2)
shape.Text = "Hello Python!"
# 枠線を消す
shape.CellsU("LinePattern").FormulaU = "0"
visio_open.py という名前で保存します。
※すでにVisioが起動している場合は、そのVisioに接続することもあります。
③ 実行してみよう!
コマンドプロンプトで保存先のフォルダに移動し、次を入力します。
py visio_open.py
すると、Visioが表示され、新しいページに「Hello Python!」が登場!


やったー!PythonからVisioが動いたぞい!
コードのポイント
今回のポイント
Dispatch:Visioに接続するDocuments.Add(""):新しい図面を作成するDrawRectangle:四角形を描く
さらに shape.Text で文字を設定しています。

ところでこのコードVBAと似てるけど、
PythonとVBAって書き方は違うの?

Pythonの文法で書く必要はあるけど、
同じオブジェクトモデルを使ってるから、
VBAを使ったことがある民は分かりやすいはず!
実は、PythonからVisioに接続した後は、VBAでもおなじみの「オブジェクトモデル」を使って操作しています。
例えば、四角形を描いて文字を入れる場合。
Visio VBAなら
Set page = ActivePage
Set shape = page.DrawRectangle(1, 1, 4, 2)
shape.Text = "Hello Python!"
Pythonなら
page = visio.ActivePage
shape = page.DrawRectangle(1, 1, 4, 2)
shape.Text = "Hello Python!"
同じDrawRectangleなんかのオブジェクトを使ってますっ(゚∀゚)
ただし、文法はPythonので書く必要があります。
次回は逆方向から!
今回はPythonからVisioを操作しましたが、反対にVisioのVBAからPythonを呼び出すこともできます。
次回は、今開いているVisioのページに「Hello Python!」を表示する方法に挑戦します。
さて、どちらが使いやすいかな?( ̄ー ̄)ニヤリ


