| 
    
     |  | n様、ご回答ありがとうございます。 
 >まずはコードモジュールの先頭に
 >Option Explicit
 >をいれて、変数に対して明示的な宣言を強制し、
 >コンパイルエラーのチェックを行ったほうが良いかもしれません。
 
 頭にハテナを浮かべながら言われた通りにしてみたところ・・
 sv_ のカウンターが宣言されていませんでした!!!
 ありがとうございます。
 
 
 >開いた後のWorkbooksのインデックスの指定には、ファイル名のみを使います。
 > Dim bookname As String
 >...と変数を1個追加し、
 > Workbooks.Open Filename:=filePath
 > bookname = ActiveWorkbook.Name
 > :
 > MsgBox (filePath)
 > MsgBox (bookname)
 > Workbooks(bookname).Activate
 > 'Workbooks(filePath).Activate
 >...としてみてください。
 
 できましたー!!!!!なるほど!開いた直後はアクティブなはずなので、そこで nameプロパティ(!)で名前をとっておくんですね。
 
 
 >ただ、文字列指定ではなくて、Object型の変数を用意すれば、
 >名前によるインデックス指定使わなくても良いです。
 
 オオ・・実は代入は全部 Set を使うのかと今日の午前中くらいまで思っていたんですが、オブジェクト型変数に代入するときに Set を使うんですね!!
 
 
 大変勉強になります。本当にありがとうございます。改良したら(可読性と合わせて)もういちどコードをのせます。
 
 ----------------------
 > Set wb = Nothing
 VBA でもメモリーリークみたいのがあるんですか(NullじゃなくてNothingなんですね・・)使わなくなった変数はどんどん Nothing を代入すると安全・・ですか・・・
 
 
 |  |