- 締切済み
Excel:アドイン(ThisWorkbook)内のプロシージャからシートの操作は可能なのでしょうか?
アドインとして登録して、 そのThisWorkbook内のプロシージャからシートの操作(削除、追加、コピーなど)を行おうとしています。 これを行うにはどうすればいいのでしょうか? まだXLSファイルの状態の時はうまく動作しましたが、 アドインとして登録すると、 >実行時エラー'91' >オブジェクト変数またはWithブロック変数が設定されていません。 という旨のエラーメッセージが出て終了してしまいます。 (ActiveSheet.Delete の処理でエラーが起こっています) 昨日質問させていただいたとき、 >また、ThisWorkBook などの記述があるとアドインのブックになってしまうので、 >処理上の不都合が起きないようにする事が大切かと思います。 ということをお聞きしました。 おそらく、今回の問題となっている点にあたるものだと思います。 回避する方法はあるのでしょうか?
お礼
何度も回答ありがとうございます。 >アドインというのは、プロシージャのグローバル化ということです。 >だから、標準的な書き方にするのと、あらゆる対応が必要です。 「プロシージャのグローバル化」、まったくそのとおりなのですね。 気になってテストをしてみました。 ブックを複数用意している場合や、ブックを新たに作った場合に 今回の処理がうまくいっていないようです^^; >変数は、省略しないで、読みやすいものにしてください。 >ローカル変数の時は、私は、my をつけています。 >例、mySheet /mySheets とする場合は、配列やコレクションの場合に使います。 急ぎ過ぎているのか、面倒に感じているのか。 さらに昔のクセもでているようです。 >SheetをDeleteする場合は、On Error トラップが必要です。 これも同じようです。 自分で使う分にはいいですが、公開した場合・・・--; >掲示板では、ほとんど、アドインについて詳しく教えてくれる人はいないような気がします。 (教えて!gooについて)そのようですね。 回答者様はだいぶお詳しいようなので嬉しい限りです。 ほんとのところ、 VBAについて頻繁にやりとりのある掲示板を探した方がいいのかな、と思っていました。 >諦めなければ、私の知っていることは、継続的にお教えすることはできると思っています。 ありがとうございます。 今の段階では別アプリで実現した方がいいのでは?と考えています(可能か調査中です) しかし、本音ではせっかくなので「使える」段階までいきたいとも思っています。 平行しながら、このマクロももう少し調べてみて、 (少しでも?大まかな?)原因を特定してから質問させて頂きたいと思います。 ここの質問はとりあえず締め切らないでおきます。 ここで再度質問させて頂くか、もしかすると新たに質問させて頂くかもしれません。 勝手でスミマセン^^; 本当にご親切にありがとうございます。
補足
「回答に対するお礼」への訂正です >(教えて!gooについて)そのようですね。 勉強不足でした。 別カテゴリでも(VBAについては)詳しい方はいらっしゃるようですね。