Q:

Как сохранять excel книгу в зависимости от того, где она открыта?

Ситуация:Есть экселевский файлик-отчет-оригинал на шести разных компьютерах. Оператор открывает его и видит перед собой пустую таблицу, заполняет её, макрос срабатывающий после каждого изменения сохраняет книгу в сетевую папку как отчет-копия с именем дата_машина_смена.xls . В конце смены оператор закрывает книгу и следующий оператор открыв тот же отчет-оригинал снова, опять видит пустую таблицу.
Проблема: Проблема в том, что если оператор случайно закроет отчет-оригинал, то он должен открыть уже созданную копию в сетевом хранилище. Но. Если он начнет изменять уже копию, то отчет-копия должен не сохраняться на сервер, а сохранять изменения в ту книгу, которая открыта.
Вопрос: каким способом, внутри vba лучше определять что открыто оригинал или копия?

A:

Можно определять по имени файла, ведь имена оригинала и копии разные. Имя родителя активного листа, т.е. имя активной книги:
Sub NameBook()
Dim sName As String
    sName = ActiveSheet.Parent.Name
    Debug.Print sName
End Sub

Зная имя, можно задать условие сохранения:
Sub ToSaveChanges()
Dim sName As String
    sName = "имя_оригинала.xlsm"  ' имя книги-оригинала

    With ActiveSheet.Parent
        If sName = .Name Then ' открыт оригинал
            '  здесь код сохранения новой копии
        Else ' открыта копия
            .Save ' сохраняем изменения в копии
        End If
    End With
End Sub

