ExcelVBAでオートシェイプ情報を抽出する

みなさん、こんにちは。  今回はExcelに配置したオートシェイプ(図形)オブジェクトから 図形の配置情報や種別情報を取得してみましょう。

 

| オートシェイプ情報を取得する

Excelではテキストでデータを入力する以外に、オートシェイプで図形を配置することができますね。 様々な場面で図形を配置して、いろいろな表現に使いますが、この図形から情報を取得できれば、 自動で情報を読み取って、別の資料を自動生成することなどもできるようになります。

今回はVBAでシートに配置したオートシェイプの情報を取得する方法を見ていきます。

 

シートに配置されたオートシェイプ(図形)の数を取得、 配置されたオートシェイプを走査するには次のように記述します。

   

オートシェイプのオブジェクトは、インデックスや名前を指定して取得することができます。 名前を指定してオートシェイプを取得して、取得したオートシェイプの種別を 判断するには以下のように記述します。 オートシェイプ種別を判断することで、それぞれに対応した処理ができます。

 

| 四角形シェイプ情報を取得する

四角形のオートシェイプに関する情報を取得してみましょう。

上記のように四角形の背景透過状態や、テキスト情報、シート内の位置を取得できます。 他にも塗りつぶしの色や枠線の色、スタイルなども取得できます。

四角形のオートシェイプに対して行番号や列番号を取得したい場合があります。 そうした場合は、下記のようにして四角形の上下に該当する行番号、左右に該当する列番号を取得することができます。

   

| 矢印(直線)シェイプ情報を取得する

Excelでフローチャートやシーケンスなどを作成した際、矢印の図形を使うことがあると思います。 そうした場合に、矢印から発信元、発信先の情報を抽出したりすることができます。

矢印のヘッドスタイルやダッシュスタイルを判断するための方法を見てみましょう。

スタイルを区別して図形の種別を判断することができますね。

 

矢印は始点と終点があるため、それぞれの座標やシート上の位置が取得できれば便利です。 ここでは、オートシェイプから座標(x,y)を取得する例を記述します。

オートシェイプは第1引数で指定します。 始点座標の取得か終点座標の取得かどうかは、第2引数でTrue/Falseで指定します。 戻り値として、(x,y)の形式で文字列を返却します。

   

上記の例で、オートシェイプの座標が取得できたら、次は指定した座標に対する列番号を取得します。 列番号を取得するために、ダミーでオートシェイプを作成して列番号を取得しています。

 

これらを処理を組み合わせると、オートシェイプから始点と終点の列番号が取得できます。

   

今回はオートシェイプ(図形)の情報を取得する方法を紹介しました。 四角形と矢印に関する操作のみを紹介しましたが、他の図形も同じようにして情報を取得することができます。

これらのテクニックを使えば、Excelから様々な図形情報を取得して、別のドキュメントを自動生成するなど、 いろいろな業務効率化につなげることができそうですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です