Ответ 1
Лучшим способом для этого было бы создать Excel под названием "launcher.xlsm" в той же папке, что и файл, который вы хотите открыть. В файле "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
после Me.Close