| 
    
     |  | ご回答ありがとうございます。 
 ご指摘いただいた点:
 (1) 既にそのブックを開いているなら、Application.Run() の引数は "Book2.xls!Test" でいい
 (2) Book2.xls!Test の型が正しく指定されていない
 について、ご指摘いただいたとおりに修正してみました。
 
 ……でも、ダメでした… orz
 
 「実行時エラー 1004 マクロ'Book2.xls!Test" が見つかりません」
 
 と言われてしまいます。別な方からのご回答も頂き、そちらも試してみましたが、やはり同じ状況です。
 
 どうもBook2.xlsの function Test() が見つけられていないように見えます…。
 
 
 ▼つん さん:
 >▼tsgross さん:
 >こんにちは
 >
 >>■症状
 >>二つのブック(Book1.xls, Book2.xls)を作ります。
 >>Book1.xls から Book2.xls 上にある Function を呼び出したいと思うのですが、
 >>「実行時エラー 1004
 >>マクロ 'C:\Documents and Settings\First-Last\My Documents\excel\Book2.xls!Test' が見つかりません」
 >>と言われて Book2.xls にある Test() という Function が呼び出せません。
 >>
 >>■マクロ
 >>■■Book1.xls
 >>Private Sub Command_Button1_Click()
 >> Workbooks.Open("C:\Documents and Settings\First-Last\My Documents\excel\Book2.xls")
 >> dim x as Long
 >ここ↓
 >> x = Application.Run( "C:\Documents and Settings\First-Last\My Documents\excel\Book2.xls!Test )
 >x = Application.Run("Book2.xls!Test")
 >でいいと思います。
 >
 >>End Sub
 >>
 >>■■Book2.xls
 >>Public Function Test()
 >> Dim wb as Workbook
 >> set wb = ThisWorkbook
 >> MsgBox( "僕は" & wb.Name )
 >>End Function
 >
 >それから、Functionだと
 >
 >Public Function Test() As String
 >
 > Dim wb As Workbook
 > Set wb = ThisWorkbook
 > Test = "僕は" & wb.Name
 >
 >End Function
 >
 >こういう形ですよね。
 >で、文字列を返してるから、
 >Book1で受けるのも
 >
 >> dim x as Long
 >
 >じゃなくて、「String型」にしないとダメやないかな?
 
 |  |