• 締切済み

エクセル起動時、自動的にマクロを実行する

エクセルファイルを開いたとき、自動的にマクロを 組み込む方法で、「XLSTARTフォルダ」にマクロファイル を置くという方法を最近知りました。 任意のエクセルファイルを開いたときのみ XLSTARTフォルダのマクロファイルを実行する 方法はないのでしょうか? 普通にエクセルを使いたいときでも、マクロが組み込まれて しまい、とても困っています。 例えば、指定のフォルダの中にあるエクセルファイルであれば XLSTARTフォルダのマクロファイルを実行する という、操作ができたりすれば、とてもよいのですが。 何か良い方法があれば、教えていただきたいです。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>指定のフォルダの中にあるエクセルファイルであれば >XLSTARTフォルダのマクロファイルを実行する 一応、XLSTART に入れるというよりも、XLSTARTにある個人用マクロブック(Personal.xls , PERSONAL.XLSB等) にしてください。他のファイルは基本的には入れないでください。理論的には問題ないはずですが、なぜか、トラブルが発生する率が高くなるようです。 一応、標準モジュールのAuto_Open には間違いはありませんが、その前に、 Class モジュールを設けてください。名前を、Class1 (標準)になります。 以下は、Applicationオブジェクトを横取りされないように(カプセル化)していますが、横取りしても構わないなら、Private ステートメントは、Public にすれば、もう少し、コードは簡単に済みます。 以下の例は、Excelの標準フォルダの下のTest1フォルダに入れた場合に対するものです。 ==================== 'Class1 モジュール Private WithEvents NewApp As Application Public Property Set myNewApp(ByVal myApp As Application)  Set NewApp = myApp End Property Private Sub NewApp_WorkbookOpen(ByVal Wb As Workbook) Dim myPath As String  myPath = NewApp.DefaultFilePath & "Test1" '特定のフォルダ  If InStr(1, Wb.Path, myPath, 1) > 0 Then   MsgBox "You are openning a file in the path of " & vbCrLf & _   myPath  End If End Sub ---------------------------- '標準モジュール Private myApp As Class1 Sub Auto_Open()  Set myApp = New Class1  Set myApp.myNewApp = Application End Sub

  • emsuja
  • ベストアンサー率50% (1031/2049)
回答No.3

>Auto_Open を組み込むには1度、エクセルファイルを開いてから、 >VBEを開いて記述するしかないですよね? まぁ 記述するかインポートさせるぐらいしか思い当たりませんね 起動時に実行させるマクロの内容が全て同じならば・・・ XLSTART マクロの中に、起動した Excel Book の中に特定の名前のシートとかが存在するかをチェックして XLSTART の実行を抜け出す等の処理を組み込むことも考えられますがチョッとトリッキーな処理になりますね Auto_open マクロを実行する Excel Book をサンプルファイルとして用意しておき 新しい Excel Book を作成する時はそのサンプルファイルを呼び出してデータを作成後名前と変えて保存してもらう。 じゃダメでしょうか? この手のものは考えれば考えるほど泥沼に落ち込んで行き最終的には本来の目的を見失ったシステム作りが出来上がる可能性がありますので出来るだけシンプルに考えるべきだと思います。

  • emsuja
  • ベストアンサー率50% (1031/2049)
回答No.2

通常は Auto_Open を使います 該当するExcel Book の標準モジュールに次のマクロを組み込んでみてください Sub Auto_Open() MsgBox "Auto_Open が実行されました" End Sub >任意のエクセルファイルを開いたときのみ >XLSTARTフォルダのマクロファイルを実行する >方法はないのでしょうか? XLSTART フォルダを使用すると新しい Excel Book を作るたびにマクロが組み込まれてしまいます、必要な都度 Auto_Open にマクロを組み込んだほうが宜しいのでは?

machine_angel
質問者

お礼

回答ありがとうございます。 エクセルファイルを開く人は、プログラムの初心者と仮定したいので できれば、エクセルファイルを開くだけの操作でマクロが組み込まれ ているという状態にしたいのです。 私も本当に悩んでいるのですが、Auto_Open を組み込むには 1度、エクセルファイルを開いてから、VBEを開いて記述するしかないですよね?

  • kernel_kaz
  • ベストアンサー率23% (665/2872)
回答No.1

その対象データの中に、autorunマクロを組んどけば? autorunだったか、auto_runだったか、記憶が曖昧だけどマクロ名をそれにすれば、できたはず ヘルプで確認してみて

関連するQ&A

  • VBSでEXCELのXLSTARTにあるマクロを実行するには

    VBSを実行したときに既にEXCELを開いている場合にはFor Each wb In Workbooksを使ってXLSTARTフォルダにあるファイルのVBAマクロを実行できます。しかし、EXCELを開いていない場合にはCreateObject("Excel.Application")でEXCELを開いてもXLSTARTフォルダにあるファイルそのものが見つかりません。VBSを使わず、プログラムファイルからEXCELを開く場合にはXLSTARTフォルダにあるファイルも問題もなく開きます。どうすればEXCELを開いていない場合でもVBSでEXCELのXLSTARTにあるマクロを実行できるでしょうか? 因みにXLSTARTのフォルダパスは不特定多数の環境(OSはWindows95-XP、EXCELは97-2007の組合せ)で特定されていないものとします。さらにツール、オプションの全般タブの「起動時に全てのファイルを開くフォルダ」にはXLSTARTが指定されているものとします。

  • マクロの自動実行

    会社のパソコンで毎朝使うエクセルがあるので、そのエクセルはスタートアップに入れております。 実際にはそのエクセルの中でマクロを実行するのですが、スタートアップではエクセルが立ち上がるだけで、マクロまで自動で実行してくれるものではありません。 エクセルが立ち上がると同時に指定のマクロプログラムが走るように…なーんてことができるのでしょうか?? どなたか教えてください。よろしくおねがいします。

  • エクセルマクロでご教示ください

    エクセルで作られたデータファイルに対し、ある操作を施して上書き保存するというマクロを作りました。 そのマクロを走らせるとファイル名を聞いてきまして、そこでファイル名を入力してやれば、ある操作を施したあと 自動的に上書き保存までしてくれるのですが、対象ファイルが複数個あると、ひとつ実行したあとまたひとつ ファイル名を入れて、またそれが終ったら次のファイル名を・・・というように、ひとつひとつ実行しなければならない というのが現状です。 これを次のように改良したいのですが、どうすればいいのでしょうか? 1.マクロを立ち上げる。 2.処理する複数のファイルが入っている「フォルダ」を選ぶ。  (一覧表示のウィンドウが出てきて、その中で「フォルダ」を選ぶ) 3.そのフォルダの中に入っているエクセルファイル全てに対し、既に作成済みのマクロを順次実行する。 というものです。 よろしくお願いします。

  • EXCELでワークシートを開いたらマクロを自動実行したい

    いつもお世話になります。 EXCEL2000を使用しています。 EXCELファイルの中のあるワークシートを開いたときにマクロを自動実行することはできますか? AUTO_OPENだとファイルを開くたびに自動実行されるので、特定のワークシートを開いたときだけマクロを自動実行できるようにしたいのです。 よろしくお願いします。

  • エクセルのアドイン操作

    何もマクロが組み込まれていないエクセルファイルを 開いたときに、自動でアドイン「テストアドイン」をインストール する良い方法はないでしょうか? 現在は、テストアドインのインストールを実行するマクロファイルを XLSTARTフォルダに置いています。

  • エクセルでマクロを自動的に実行

    表題の通りなんですが、エクセルで、あるセルに指定された数値(語句)が入った場合に、それを自動的に感知して実行するマクロがあればと思うのですが、そういったことってできるのでしょうか。 具体的には、  1、バーコードリーダーで数値をセルに入力  2、その数値に対応する名前をvlookup関数にて表示  3、その名前が入力された時点でマクロが自動的に実行 と言うものです。  3の部分がよく分からずに困っています。できるかどうか分かりませんが、もしできるようであるならその方法を教えていただければありがたいです。どうか、よろしくお願いします。

  • フォルダ内のファイルに順番にマクロ実行(VBA)

    こんにちは。 いつもこのサイトにはお世話になっています。  いま、WORDマクロで、あるプログラムを作成したのですが、現在の状態だと、ファイルにマクロを実行させたい場合、そのファイルを開いてマクロを実行するしかありません。  そうではなくて、指定されたフォルダの中にあるファイルのうち、rtf拡張子で終わっているものに順番に自動的にマクロを実行するというようなプログラムは書けないのでしょうか。  プログラムのなかに、ファイルのパスを指定してそのファイルに実行する方法は分かったのですが、フォルダだけ指定しておいて(というよりユーザにテキストボックスで指定させて)、そのフォルダに入っているrtfファイルすべてにマクロを実行する方法はありますでしょうか?    もしありましたら教えていただいたいと思い投稿しました。よろしくお願いします。

  • どのファイルを開いた時もマクロを自動実行。エクセル

    新規にエクセルを開いたときだけマクロを自動実行するには、 personal.xlsで Sub auto_open() ' Macro1 Macro Range("A1").Value = "111" End Sub とすれば良いかと思いますが、 新規に開くどのファイルに対しても ファイル名ABC を含んでいる時だけ マクロを自動的に実行するにはどうしたらよいでしょうか? (ファイルを開いてから マクロボタンを押して マクロに”ファイル名を チェックしてA1にデータを書き込む”があるのはだめです。) (アドインでツールバーボタンを押すのもだめです。) エクセルは2003 OSはXPです。 説明不足でしたらすみません。

  • エクセルを閉じる時にマクロを実行する

    お世話になります。 エクセルのファイルを閉じる時にあるマクロを実行したいと思っています。 右上の×印をクリック、Alt+F4、Alt+F→X などエクセルを閉じようとしたときに自動的にマクロを動かすことが出来るでしょうか? マクロ自体は、あるシート全体をコピー→外のシートに形式を選択して貼り付け(値) というごく簡単なものです。 また参考までにエクセルファイルを開いたときにマクロを実行というものがあれば教えてください。 よろしくお願いします。

  • エクセル タスクスケジューラでマクロ自動実行

    お世話になります。 win7/エクセル2010使用です。 エクセルのThisWorkbook_openでマクロを実行するファイルAを作っています。 ※Auto_Openは記述していません。 ファイルAをタスクスケジューラに設定いたしました。 問題なくマクロが自動実行されて、目的は果たしています。 ただ、不思議な点があります。 このファイルAをダブルクリックして開いても マクロは自動実行されていきます。 このファイルAをコピーして、ファイルBを作り それをダブルクリックで開くと、 ファイルBは、ブックが開いた後に、「セキュリティーの警告」がされて マクロの自動実行ができません。 通常は、「セキュリティーの警告」を出さないために Auto_Openなどでコードを記述すると思うのですが、 なぜ、Auto_Openを記述していないファイルAが自動実行されるのかがわかりません。 タスクスケジューラの設定に何か関係はあるのでしょうか? よろしくお願いします。

専門家に質問してみよう