Вставить текущую дату в шаблон Excel при создании
Вопрос
Я создаю здесь шаблон Excel (* .xlt) для пользователя, и я хочу сделать так, чтобы он вставлял текущую дату при создании нового документа (т. е. когда он дважды щелкает мышью). файл в проводнике Windows). Как мне это сделать?
Обновление . Я должен был добавить, что предпочел бы не использовать никакой макрос (vba). Если это единственный вариант, то пусть так и будет, но я бы действительно хотел, чтобы мой пользователь не заставлял пользователя нажимать какую-либо кнопку «разрешить макросодержание».
Решение
Вы можете использовать функцию листа = TODAY (), но очевидно, что она будет обновляться до текущей даты при каждом пересчете книги.
Единственный другой метод, о котором я могу подумать, это, как сказал 1729, кодировать событие Workbook_Open:
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Date
End Sub
Вы можете уменьшить необходимость того, чтобы пользователь каждый раз принимал макросы, путем цифровой подписи шаблона (в VBA IDE Tools | Digital Signature ...) и выбора цифрового сертификата, однако вам потребуется получить сертификат от коммерческий сертификационный центр нас / библиотека / ms995347.aspx ). Пользователь должен будет выбрать, чтобы всегда доверять этому сертификату при первом запуске шаблона, но после этого он больше не будет запрашиваться.
Другие советы
Вы можете редактировать шаблон по умолчанию для Excel -
В каталоге XLSTART
находится файл с именем Book.xlt
, обычно расположенный в C: \ Program Files \ Microsoft Office \ Office \ XLStart \ код>
Вы должны иметь возможность добавить макрос с именем Workbook_Open
Private Sub Workbook_Open()
If ActiveWorkBook.Sheets(1).Range("A1") = "" Then
ActiveWorkBook.Sheets(1).Range("A1") = Now
End If
End Sub
Мой VBA немного ржавый, но вы можете найти что-то вроде этого.
Чтобы избежать VBA, и если вы думаете, что ваши пользователи могут следовать инструкциям, вы можете попросить их скопировать дату, а затем вставить специальные значения > ;, чтобы установить дату, чтобы она не изменилась в будущем.