PythonからVisioを操作!アプリ連携にも広がる自動化の第一歩

PythonからVisioを操作!アプリ連携にも広がる自動化の第一歩 VBA

前回は、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!」を表示する方法に挑戦します。

さて、どちらが使いやすいかな?( ̄ー ̄)ニヤリ

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