| 
    
     |  | おはようございます。 横から失礼しあmす。
 
 >Public Sub Excel_macro()
 >  Dim obExcel As Object    'Excelオブジェクト
 >  Dim lBookNumber As Long   'ブック数カウント
 >  Dim wkbbuff As Workbook   'バッファ
 >
 >10
 >  'ブック数カウントを初期化する
 >  lBookNumber = 0
 >  'ワークブック数分ループする
 >  For Each wkbbuff In Workbooks
 >    '他のブックの名前が取得できる場合(他のブックがオープンできる場合)
 >    If Application.Windows(wkbbuff.Name).Visible = True Then '★
 >      'ブック数カウンタをインクリメントする
 >      lBookNumber = lBookNumber + 1
 >    End If
 >  Next wkbbuff
 >20
 >  '他のブックが既に開かれている場合
 >  If lBookNumber > 1 Then
 >    '警告メッセージオフにする
 >    Application.DisplayAlerts = False
 >    'アプリケーションをクローズする
 >    ActiveWorkbook.Close
 >  End If
 >
 >  'ワークブックを作成する
 >  Set wkbWorkBook = Workbooks.Add
 
 ↓ここが問題みたいですね?
 ここを、コメントアウトして、Captionが「Book?」のままだと
 2回目以降もエラーにならないですね。
 どういう意図があるのかわからないですけど、
 「テスト」という名前でファイル保存してしまえば、
 エラーにならないのではないでしょうか?
 >  wkbWorkBook.Windows(1).Caption = "テスト"
 >  wkbWorkBook.Worksheets(Sheet1.Name).Activate
 >
 >  Exit Sub
 >End Sub
 
 wkbWorkBook.Windows(1).Caption = "テスト"
 これをした場合、2回目の実行で、
 >If Application.Windows(wkbbuff.Name).Visible = True Then '★
 「wkbbuff.Name」の中身をみると「Book1」になってますが、
 実際は、Book1というキャプションのウインドウがないので、エラーになってるような・・・
 何故そうなるのかよくわからないですが・・・
 
 また、ichinoseさんが適切なレスを入れてくださると思いますが、
 ちょっと気が付いたことを書いてみました。
 
 |  |