Excelで共通の機能を追加する方法

このQ&Aのポイント
  • Excelでどのシート、ブックにも共通の機能を追加する方法を探しています。現在はマクロを使用して特定の文字列を検索し、ポップアップを表示する機能を考えています。しかし、他の人と共有する際には邪魔になるため、自分のPC内だけの機能として実装したいと思っています。Personal.xlsにAuto_Close()を追加し、アドインを読み込む方法も考えましたが、Excel全体を閉じる場合にしか呼び出されないため、Excel内のxボタンで閉じるときには使えません。Excelで共通の機能を追加するための他の方法を教えていただけないでしょうか?
  • Excel2002を使用していますが、どのシートやブックでも共通の機能を追加したいです。具体的には、シートやブックを閉じる際に特定の文字列を検索し、ポップアップを表示する機能を実装したいと考えています。ただし、他の人と共有する際にはこの機能が邪魔になるので、自分のPC内だけで使用したいと思っています。Personal.xlsにAuto_Close()を追加してアドインとして読み込む方法も考えましたが、Excel全体を閉じる場合にしか呼び出されません。Excelで共通の機能を追加するには、他の方法はありますか?
  • Excelのどのシートやブックでも共通の機能を追加する方法を探しています。現在はマクロを使用して特定の文字列を検索し、ポップアップを表示する機能を実装しようと考えています。ただし、他の人と共有する際にはこの機能が邪魔になるため、自分のPC内だけで使用したいと思っています。Personal.xlsにAuto_Close()を追加してアドインとして読み込む方法も考えましたが、Excel全体を閉じる場合にしか呼び出されないため、Excel内のxボタンで閉じるときには使えません。Excelのどのシートやブックでも共通の機能を追加するための他の方法を教えていただけますか?
回答を見る
  • ベストアンサー

Excelでどのシート、ブックにも共通の機能を追加したい

Windows2000とXPでExcel2002を使っています。 次のような機能を追加したいと思い、マクロを考えています。 (機能) シート(ブック)を閉じるときに特定の文字列を検索する。 文字列が発見されれば、ポップアップを表示する。 なければそのまま、セーブされる。(通常のクローズ処理) シートごとにマクロを書いてしまえば楽ですが、ほかの人と共有する場合は邪魔になるので、自分のPC内だけの機能として実装したいと思います。 困っている点は以下の点です。 Personal.xlsにAuto_Close()を追加し、アドインを読み出す方法も考えましたが、Auto_Close()がExcel全体を閉じるとき(タイトルバーの×ボタンで閉じるとき)にしか呼ばれないため、Excel内のxボタンで閉じるときにはAuto_Close()の方法が使えません。 Excelでどのシート、ブックにも共通の機能を追加する場合にはどのようにするのがいいのでしょうか? アドインを登録してボタンを追加する以外の方法を教えていただけるとうれしいです。 (元々チェックを忘れるのを避けるため、自動チェックにしたいと考えているからです。)

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんばんは。 やはりプログラム経験のある方だったんですねぇ。 質問を読みそう思いました。 Applicationオブジェクトは通常のオブジェクトとは違い、最初にちょっと準備がいります。 ●●以下は全て、Personal.xls のコードです●● 先ず、VBE画面の「挿入」>「クラスモジュール」からクラスモジュールを挿入し、そこに以下のコードを書いてください。 ---------------------------------------------- Public WithEvents App As Application Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)  If Wb.Name <> "Personal.xls" Then   ▲ここにブックの共通処理コード▲  End If End Sub ------------------------------------------------- それから、標準モジュールを挿入し以下のコードを書いてください。 ------------------------------------------------- Dim PersonalApp As New Class1 Sub Auto_Open()   Set PersonalApp.App = Application End Sub ------------------------------------------------ Personal.xlsのAuto_Openで Set PersonalApp.App = Application を実行することによりApplicationオブジェクトが使えるようになります。 そしてApplicationにイベントが発生すると、クラスモジュールのイベントが実行されます。 尚、詳しくはVBAのヘルプをご覧ください。 以上です。  

naozou
質問者

お礼

わかりやすい回答ありがとうございます。 早速やってみて動きました。 イベント部分だけ変えれば汎用的につかえそうな、よい方法で勉強になりました。あとはVBAのヘルプで何とかなりそうです。 たいへん助かりました。

その他の回答 (1)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.1

こんばんは。 Personal.xlsの方で Applicationオブジェクトの WorkbookBeforeCloseイベントを使ってみて下さい。

naozou
質問者

補足

回答ありがとうございます。 いただいたヒントを手がかりにいじってみたのですが、自分の方法があっているか、そもそもヒントもすべて理解できませんでした。 ApplicationのWorkbookBeforeCloseイベントプロシージャーにひっかければOK、と理解しているのですが具体的なコード(というか、Excel VBAでの書き方)が思いつきません。 もしよろしければ、もう少し具体的なコードまで教えていただけないでしょうか。 (プログラムの経験はあるのでマクロ、処理記述はできますが、Excelのオブジェクトやマクロをどこに書くのか、といったお作法がわかりません。)

関連するQ&A

  • EXCELのシート、ブックって何ですか?

    文字列を検索するときに検索場所をシートかブックか選びます。 シートというのはエクセルの画面のことだと思っていたのですが違いますか? ブックって何ですか? シートとどう違うのですか?

  • 特定のエクセルブックでしか機能しないアドイン

    VBAでエクセルのアドインを作っております。 特定のエクセルブックでしか機能しないアドインの作り方はあるでしょうか? たとえばファイル名「対象ブック」というのがあったとして、 このブックでしかアドインが機能しないようにするにはどうしたらいいでしょうか? アドインのコード中に機能するブック名を直接書きこむことで指定するのが 手っ取り早いのでしょうか?

  • Excel シート上に配置したボタンを無効にするに

    Excelブックのワークシート上には いくつかのボタンが配置されていて 各ボタンをクリックすると 対応するマクロが呼び出されるようになっているのですが、 Excelブックを配布するユーザー毎に 使用するボタンと使用しないボタンがあります。 配布前に、シート上のボタンを手(VBAではなく)で 無効(グレー表示)にして、 ユーザーがクリックしても何も起きない (ボタンが押し込まれたりマクロが呼び出されたりしない) ようにしておきたいのですが マクロはいじらずに このようなことは可能でしょうか。 必要のないボタンを消す方法もありますが ボタンが消えてしまうと画面の表示の 見た目が悪くなるので、 ボタンが表示されていて機能しないように しておきたいです。 (Windows7 ,Excel2010)

  • Excelアドインの非表示ブック

    Excelアドインを配布する予定なのですが、シートにプログラムで使う情報を記載しており、その情報は公開したくない状況です。 Excelアドインを作成するとブックが非表示になりますが、それを表示する方法はあるのでしょうか? もし、表示出来る方法があるのならば、どうすれば表示できない様にする方法はありますか? Excelアドインの元となるExcelファイルの作成環境はExcel2007ですが、ブックは2003にも対応した.xls拡張子で作成しています。 以上、ご教授のほど、よろしくお願い致します。

  • あるシートをすべてのブックにコピーしたい

    後追加された一つのシートをあるフォルダにあるすべてのexcelブックにコピーしたいですが、ひとつづつコピー上書きしていくとかなり時間がかかります。(500~600ファイルあります) excel マクロで簡単に終わらせることができないでしょうか?

  • Excelでマクロを消すには

    マクロが組み込まれているExcel2003のファイルがあります。 マクロについて詳しくわからないのですが、複数の伝票シートを一括印刷するボタンがあったり、 チェックボックスに応じてオートシェープや文字が切り替わる機能があります。 この伝票のひな形だけを使いたく、枠や文字だけを新しいシートに値でコピーし、 別名で保存しました。 ボタンやオートシェープはありません。 また、ツール→マクロを選んでも特に何も見当たりませんでした。 しかし、このファイルを開くたびに このファイルにはマクロが…  [マクロを有効にする][マクロを無効にする] というダイアログが表示されてしまいます。 マクロを消すといいますか、このダイアログが表示されないようにする方法がありましたら 教えてください。 よろしくお願いいたします。

  • Excelブックでマクロを追加中で途中で保存したら開けなくなりました

    Excel2003を使用して、Excelでマクロを追加中です。 今まで1つのExcelブックに、複数のマクロを記述していて、問題なく動作していました。 また、先ほどまではExcelを終了しても、問題なく次にも開けました。 しかし、先ほど突然、Excelファイルが開かなくなりました。(今日も途中までは正常に開けました) 突然って言っても何も触らなくてではなく、マクロを追加して、テスト中で 一旦休憩するため、保存して、Excelファイルを綴じてから、再度開こうとすると Excelから開くでファイルを選択したら、Excelの中身(最後に保存したシート)が 表示されますが、その後砂時計になりいくら待っても入力可能になりません。 (通常であれば、1MB以上のファイルなので、ファイルを開くときには左下の インジケータ(開いています。・・・・)が表示されますが今回はインジケータそのものが表示されません) そのうち、応答なし になります。 ほかのマシン(同じくExcel2003)でも同じです。 どなたか救済方法をご存知でしたら教えてください? 今日一日の作業がパーーーーになりそうです。 推測すると、最後に追加したマクロが誤っていて、開かなくなったのでは 無いかと思います。 マクロを無視すれば、Excelは開けますが、マクロを修正できません。 追加したマクロを削除する方法ありますか?

  • エクセルシート名が表示されない。

    excel2003で作成したブックをexcel2007及びexcel2010で開くと複数のシートがあるはずなのに、表示されません。なぜかexcel2016ではシートが全部表示されます。 excel2007の詳細設定から、「シート見出しを表示する」はチェックが入っています。excel2007画面のキャプチャーをしました。そもそも、最大化・最小化するボタンが出ていません。新規ブックを開くと、最大・最小化ボタンもあり、シートの追加ボタンもあります。excel2007自体の設定には問題ないと思います。 シートを下側にスクロールしても、空欄のセルが表示されるだけです。シートが表示されているWindowも移動できず、固定されています。ショートカットキーのshfit + F10でも変化ありません。 ちなみにexcel2003で作成したエクセルファイルすべてで、同現象が発生しています。何が悪いのでしょうか。

  • Excel 違うBookのシートをコピーする

    Excelでわからないことがあり質問させていただきました。 原紙のBookに 資料のBookのシートをコピーさせたいのですが 資料Bookには シートが sheet1~sheet50まであり 原紙のBookにマクロのボタンやフォームを作成し 毎回資料のBookの違うシート名を選択しコピーをさせることは可能なのでしょうか? たとえば 原紙のシートに入力フォームを作り sheet名を入力 → 「コピー」のボタンを押すとコピーができる。 といった感じに・・・ フォームでなくてもリストなんかでもいいのですが・・・

  • Excel VBAの機能を別ブックに複写

     こんにちは。 1つのブックにボタンを追加し、VBAをコーディングし機能を 持たせました。 このボタン+VBAの機能を他の100個のブックにコピーしていきたいのですが 何か良い方法はありませんか? EXCELは2007です。 よろしくお願いします。

専門家に質問してみよう