«Кто-нибудь знает, как заставить код выполняться всякий раз, когда электронная таблица открывается и закрывается с любого компьютера, не только с моего?»
Я не думаю, что это можно сделать со 100% -ной уверенностью, если только вы не можете гарантировать, что у каждого возможного пользователя будет установлен макрос безопасности, так что ваш макрос может выполняться.
Предполагая, что вы можете обойти это, вы, возможно, должны проверить, что у всех пользователей есть рабочий лист по одному и тому же жестко заданному пути на C: \, который вы, похоже, используете. Что произойдет, если они откроют рабочую книгу из другого места?
Также:
FName = Sheets("Name").Range("D1").Text
получает значение из одного места, а
Range("A1").Select
ActiveCell.FormulaR1C1 = ThisWorkbook.Name
помещает это в другое.
Думаю, я бы попробовал что-то вроде следующего (что предполагает из вашего кода, что вы на самом деле хотите изменить имя файла, только если оно не изменилось с момента изменения текущей минуты):
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim dateTime As String
Dim oldPath As String
Dim newPath As String
dateTime = Format(Now, "MM-DD-YYYY_HH.MM") ' Format the while thing in one string - once
With ThisWorkbook
oldPath = .FullName ' what is it called now, and where did it come from?
newPath = .Path & "\" & "Name_Last Opened-" & dateTime & ".xls" ' what should it be called now?
If oldPath <> newPath Then ' only do something if not saved in last minute - is that what you really want?
.SaveAs Filename:=newPath
Kill oldPath
End If
End With
End Sub