これを回避する最善の方法は、開きたいファイルと同じフォルダーに「launcher.xlsm」という名前の Excel を作成することです。'launcher' ファイルで、次のコードを 'Workbook' オブジェクトに入れますが、定数TargetWBName
を開きたいファイルの名前に設定します。
Private Const TargetWBName As String = "myworkbook.xlsx"
'// First, a function to tell us if the workbook is already open...
Function WorkbookOpen(WorkBookName As String) As Boolean
' returns TRUE if the workbook is open
WorkbookOpen = False
On Error GoTo WorkBookNotOpen
If Len(Application.Workbooks(WorkBookName).Name) > 0 Then
WorkbookOpen = True
Exit Function
End If
WorkBookNotOpen:
End Function
Private Sub Workbook_Open()
'Check if our target workbook is open
If WorkbookOpen(TargetWBName) = False Then
'set calculation to manual
Application.Calculation = xlCalculationManual
Workbooks.Open ThisWorkbook.Path & "\" & TargetWBName
DoEvents
Me.Close False
End If
End Sub
定数 'TargetWBName' を、開きたいブックの名前に設定します。このコードは、計算を手動に切り替えてから、ファイルを開きます。その後、ランチャー ファイルは自動的に閉じます。*注: このファイルを開くたびに「コンテンツを有効にする」ように求められたくない場合 (セキュリティ設定によって異なります)、「me.close」を一時的に削除して、ファイルが閉じないようにし、ファイルを保存してください。信頼できるように設定し、再度保存する前に「me.close」呼び出しを再度有効にします。または、 False を True
after に設定することもできますMe.Close