過去ログ

                                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)

のように追加してみたりもしたのですがダメでした。
どうしたら良いのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:他ファイルのマクロ実行  ■名前 : コロスケ <corosuke@chan.co.jp>  ■日付 : 02/9/6(金) 13:30  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:他ファイルのマクロ実行  ■名前 : ma2  ■日付 : 02/9/6(金) 15:00  -------------------------------------------------------------------------
   ▼コロスケ さん:
>原因はわかりませんが、ブックへのパスが通らないのであれば、制御構造で
>foo.xlsが開いていない場合に、一旦開いてから実行されては如何ですか?

単純なExcelの仕様に絡むような問題ではないってことでしょうか。
なんか気持ち悪いですが、とりあえずアドバイス通り一旦目的のファイルを開いてから処理することにより問題回避できました。

ありがとうございます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 42