Excel
オートシェイプ図形内文字列検索置換ツール
2010
エクセル フリーソフト VBA アドイン
(テキストボックス内図形文字含)
※Excelでは図形内の文字列検索や置換ができないため
VBAマクロで作成しました。
グループ化した図形も再帰関数を定義し、
無限のグループ処理を実現可能にしました。
(VBA内でグループ解除して検索後グループ復元)
最初はフリーソフト・フリーウエア(無料・無償)でアドインで色が変えれるものをさがしてくれ!
と頼まれたのですが意外とフリーでは見つからず、あってもアドインでなかったりで
結局自分で作ることになりました。
よってフリーソフト・フリーウエア(無料・無償)で全機能制限なし期限なしでご利用ください。
ダウンロードは下記からお願いします。
Excel2007、2010版です
Excel 2000 , 2002or2003 はこちら
※例えばExcel 2000専用とはExcel2000で動かすというだけでなく検索・置換する図形のBook自身もExcel2000で作成したものを推奨。
図形内文字検索置換ツール2010説明書
メインフォームの説明
1.【検索】ボタンの動き
対象図形を順に検索し、検索文字列が見つかったらメッセージを出し、一時停止します
検索続行なら【はい】、中断なら【いいえ】を選択します
※【いいえ】を選択した場合に、もしグループ化した図形の処理中であれば
本当に中断するのかメッセージを表示します
中断なら【はい】、検索続行なら【いいえ】を選択します
※グループ化した図形の処理中に中断した場合
図形の文字はグループ化した図形の場合、グループを解除しないと操作できません
よってグループ化した図形の処理中に中断した場合はグループ化が復元されないまま
終了することになります
対象図形をすべて検索し終わったら見つかった図形の数と文字列の数を表示します
(中断した場合は正しい数は表示されません)
2.【全検索】ボタンの動き
対象図形を順に検索し、
対象図形をすべて検索し終わったら見つかった図形の数と文字列の数を表示します
3.【置換】ボタンの動き
対象図形を順に検索し、検索文字列が見つかったらメッセージを出し、一時停止します
置換て続行なら【はい】、中断または置換せず次を検索なら【いいえ】を選択します
※【いいえ】を選択した場合に、置換はせず検索を続行するのかどうかメッセージを表示します
検索続行なら【はい】、中断なら【いいえ】を選択します
※【いいえ】を選択した場合に、もしグループ化した図形の処理中であれば
本当に中断するのかメッセージを表示します
中断なら【はい】、検索続行なら【いいえ】を選択します
※グループ化した図形の処理中に中断した場合
図形の文字はグループ化した図形の場合、グループを解除しないと操作できません
よってグループ化した図形の処理中に中断した場合はグループ化が復元されないまま
終了することになります
対象図形をすべて置換し終わったら見つかった図形の数と文字列の数を表示します
(置換を1つでも中断した場合は正しい数は表示されません)
4.【全置換】ボタンの動き
対象図形を順に検索・置換し、
対象図形をすべて検索し終わったら見つかった(置き換えた)図形の数と文字列の数を表示します
使用上の注意:検索中はメインフォームの位置を変更できませんので下記の用にExcelの表示外にして実行するとよいでしょう。
※アドインについては同梱のReadMeを参照してください
《 注意事項 》
・本ツールで発生した、いかなる問題も作者はその責任を負いかねます。
・Excelの図形内文字の操作では文字の飾りが初期化される場合があります。
・本ツールでの色の操作は基調を黒(自動)とした文書に対して有効です。
また本ツールでのスタイルの操作は基調を標準とした文書に対して有効です。
それ以外の文書では置換および色とスタイルの機能を使用しないでください。
また置換および色とスタイルの操作を行う場合はExcel自身のスタイルボタンはオフにして使用してください。
・グループ化した図形内の文字はグループ解除しないと操作できません。
本ツールでは再帰関数定義にて無限のグループ化の図形を処理可能ですが
再グループ化を行うことによりグループ図形の名前のID番号がExcelにより振り直されます。
またグループ化された図形の処理中に、検索や置換処理を中断するとグループ化が復元できません。
上記事項をご了承のうえ、ご利用ください。
●Excelの図形には下記の既知の問題があります。
http://support.microsoft.com/kb/959558/ja
本ツールの下線機能はこの既知の問題を逆手にとったロジックを組み込んでいます。
よってマイクロソフトがこの問題を解決した場合、本ツールもヴァージョンアップが必要になります
●実行時エラー'438'について
Excel2000で作成したBookでグループ化した図形をExcel2003上で本ソフトを利用した場合に発生します
一度「全検索」でエラーを出し尽くして保存していただければそのシートではこのエラーはでなくなります
2012/08/02追記
●実行時エラー'7'について
----------------------------------------------------
実行時エラー '7':
メモリが不足しています。
----------------------------------------------------
コメントが挿入されたシート上で実行すると上記のエラーが表示されることを確認しました。
原因を調査したところ、実際にはメモリが不足しているわけではなく
Microsoft のBugによるものと判明しました。
コメントを挿入した場合、通常は目に見えない図形が存在し
コメントを挿入したセルの右上の赤い三角コーナーの部分に
マウスポインタをかざした時に自動的に目にみえるように制御している
図形があります。
このような通常目に見えない図形(Visible=False)が存在するシート上で
Microsoft Visual Basicの図形を全選択する命令の
Shapes.SelectAll
を実行すると該当の事象が必ず発生します。
これは起動した直後のPCで図形が1つしかないような小さなExcelファイルで1度実行しても
その事象が再現しますので、あきらかにメモリが不足しているわけではありません。
対処策
Microsoft のBugによるもののため、私の「オートシェイプ図形内文字列検索置換ツール」では
修正による回避ができません。
(あるいはShapes.SelectAllを使用しないように全面的にシステムを変更する必要があります。)
ただし、ちょっと面倒ですが下記の方法で回避が可能です。
----------------------------------------------------------------------------
Excel上で図形描画のツールバーを表示する。
「オブジェクトの選択(白抜きの矢印)」をクリックし
マウスをドラッグしてそのシートの全図形を選択した状態にする。
----------------------------------------------------------------------------
「オートシェイプ図形内文字列検索置換ツール」で
対象のラジオボタンを「選択したシートの選択した図形」にする。
「オートシェイプ図形内文字列検索置換ツール」で
検索または置換を実行する。
----------------------------------------------------------------------------
大変申し訳ありませんが上記にて回避をお願いいたします。
本内容に関してのいっさいの保証をいたしません。
また、本内容の使用により、直接または間接的な損害が生じても
いかなる責任をも負わないものとし、一切の賠償等は行わないものとします。