Page 42 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼他ファイルのマクロ実行 ma2 02/9/6(金) 10:58 ┗Re:他ファイルのマクロ実行 コロスケ 02/9/6(金) 13:30 ┗Re:他ファイルのマクロ実行 ma2 02/9/6(金) 15:00 ─────────────────────────────────────── ■題名 : 他ファイルのマクロ実行 ■名前 : ma2 ■日付 : 02/9/6(金) 10:58 -------------------------------------------------------------------------
はじめまして、以下の件で困ってます。助言いただければ幸いです。 Excel2000での現象です。 今開いているブックに含まれるマクロから、Run("foo.xls!macro1")のように他のファイルに含まれるマクロを実行しようとしています。ちなみに両方のファイルは同じフォルダに置かれていることが前提です。 これを、ローカルのHD上にあるファイルで実行すると期待通りマクロが実行されるのですが、FDやMOのようなドライブから実行しようとすると「"foo.xls"が見つかりません」とエラーになってしまいます。 試しにRun()の前に Application.DefaultFilePath = ActiveWorkbook.Path とか ChDir (ActiveWorkbook.Path) のように追加してみたりもしたのですがダメでした。 どうしたら良いのでしょうか? |
▼ma2 さん: MOがなかったのでFDで実験してみました。 用意したのは2つのファイルで、test.xlsとfoo.xlsです。 ともにFDドライブに保存後、2つのファイルをオープンしてやってみました。 test.xlsには下記のマクロを... Sub test() Application.Run ("foo.xls!macro1") End Sub foo.xlsには下記のマクロを... Sub macro1() MsgBox "Done!" End Sub Sub testを実行すると、foo.xlsのマクロが実行されました。 foo.xlsを閉じている場合もたまに走りました...。 環境はExcel2000(9.0.2720) OS:Windows2000です。 原因はわかりませんが、ブックへのパスが通らないのであれば、制御構造で foo.xlsが開いていない場合に、一旦開いてから実行されては如何ですか? Sub test() Dim wbProc As Workbook If Not BookError("foo.xls") Then Set wbProc = Workbooks.Open(ThisWorkbook.Path & "\foo.xls") End If Application.Run ("foo.xls!macro1") wbProc.Close False Set wbProc = Nothing End Sub Function BookError(WBName As String) As Boolean Dim WB As Workbook On Error Resume Next Set WB = Application.Workbooks(WBName) BookError = Err.Number = 0 Set WB = Nothing End Function |
▼コロスケ さん: >原因はわかりませんが、ブックへのパスが通らないのであれば、制御構造で >foo.xlsが開いていない場合に、一旦開いてから実行されては如何ですか? 単純なExcelの仕様に絡むような問題ではないってことでしょうか。 なんか気持ち悪いですが、とりあえずアドバイス通り一旦目的のファイルを開いてから処理することにより問題回避できました。 ありがとうございます。 |