| 
    
     |  | ▼しん さん: 状況説明が不足していました。
 投稿したコードは、対象ブックが開いている状態で実行するコードです。
 
 >
 >ichinoseさんご提示の下記コード
 >
 >>'============================================================
 >>Sub main()
 
 workbooks.open thisworkbook.path & "\reftest.xls"
 '  ↑対象ブックをオープンする
 >>  Call remove_broken_ref(Workbooks("reftest.xls"))
 >>End Sub
 >>'===========================================================
 >>Sub remove_broken_ref(bk As Workbook)
 >>'有効な参照設定を示していない参照を解除する
 >>'input  bk : 調査対象ブックオブジェクト
 >>'output bk : 無効参照を解除されたブック
 >>  With bk.VBProject
 >>   For Each obj In .References
 >>     If obj.isbroken = True Then
 >>      .References.Remove obj
 >>      End If
 >>     Next
 >>   End With
 >>End Sub
 >
 >をtest.txtのマクロに貼り付け、「参照設定」の対象となるファイルreftest.xlsはexcel2002で作成し、このファイルの参照設定として新たに「HTML Dialogs 1.0 Type Library」を設定しました。
 >
 >次いで、これら2つのファイルをexcel2000のシステムが入ったマシンの同じディレクトリに置き、test.xlsを起動し、上述のマクロmainを実行したところ
 >
 >実行時エラー '9':
 >インデックスが有効範囲にありません。
 >
 >というエラーメッセージが出て先に進めません。どこが悪いのでしょうか?
 >
 >ちなみに、reftest.xlsの「参照設定」は予想通り
 >
 >「参照不可:HTML Dialogs 1.0 Type Library」
 >
 >の先頭のチェックボックスにチェックが付いたままになっております。
 >
 >Call文の前におまじないが何か要りそうですが・・・、よろしくご指導お願いします。
 
 私も簡単なテストしかしていません(いざとなると、状態作るのが難しくて・・)。
 他にもあるかもしれませんが、その時は教えて下さい。
 
 |  |