ブックを起動する際に動く、Workbook_Open の中で他のファイルをActivateするとエラーになる。
その場合は、他のファイルをAcivateする処理の部分を、別のサブルーチンとして作り Call すればエラーにならない。

下の例では、Workbook_Open の中で、K1.xlsm をOpenし、K1.xlsmからデータをCopyしようとしている。
その際、Windows("K1.xlsm").Activate でエラーになる。

Private Sub Workbook_Open()
    
    Dim myFile As String
    Dim myPath As String
    
    myFile = Application.ThisWorkbook.Name
    myPath = Application.ThisWorkbook.Path
    
    ChDir myPath
    Workbooks.Open Filename:=myPath & "\" & "K1.xlsm"
    
    Windows(myFile).Activate

( 省略 )

    '----- ↓ここでエラーになる -----

    Windows("K1.xlsm").Activate
    Sheets("Sheet1").Select
    Range("A285:B500").Select
    Selection.Copy

    Windows(myFile).Activate
    Sheets("Sheet1").Select
    Range("A285").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

( 省略 )

End Sub



そこで、下のように、エラーとなる部分をサブルーチンとして Call することでエラーを回避できる

Private Sub Workbook_Open()
    
    Dim myFile As String
    Dim myPath As String
    
    myFile = Application.ThisWorkbook.Name
    myPath = Application.ThisWorkbook.Path
    
    ChDir myPath
    Workbooks.Open Filename:=myPath & "\" & "K1.xlsm"
    
    Windows(myFile).Activate

( 省略 )

    call MacroK1

( 省略 )

End Sub

Sub MacroK1()
    Dim myFile As String
    
    myFile = Application.ThisWorkbook.Name
    
    Windows("K1.xlsm").Activate
    Sheets("Sheet1").Select
    Range("A285:B500").Select
    Selection.Copy
    Windows(myFile).Activate
    Sheets("Sheet1").Select
    Range("A285").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    
End Sub