PDA

Показать полную графическую версию : [решено] Excel 2010 - Как вставить в книгу дату ее последнего изменения?


Страниц : 1 2 [3]

Grey_rnd
25-07-2016, 10:53
Что то нет никаких движений...
Вот скопированный код:


Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = True
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
Rem .FirstPage.CenterHeader.Text = Format(ActiveWorkbook.BuiltinDocumentProperties(12), "dd.mm.yyyy")
.Worksheets("График").Range("H1") = Format(ActiveWorkbook.BuiltinDocumentProperties(12), "dd.mm.yyyy")
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
End Sub


Что делаю не так? Макросы вроде включил в настройках...

Iska
25-07-2016, 11:52
Grey_rnd, многое «не так». Не так вставлено. И не туда вставлено.

1. Вставлять следует не в модуль «\Modules\Module1», а в модуль Рабочей книги «ЭтаКнига»:

http://i.imgur.com/eD5k0z2.png

2. Вставляйте такой код (остальное Вам для изложенной выше хотелки не нужно):
Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ThisWorkbook
.Worksheets("График").Range("H1") = Format(.BuiltinDocumentProperties.Item("Last Save Time"), "dd.mm.yyyy")
End With
End Sub

Grey_rnd
25-07-2016, 16:31
Вставлять следует не в модуль «\Modules\Module1», а в модуль Рабочей книги «ЭтаКнига» »
1. А в чем принципиальная разница?

2. В документ макрос вставлять не надо, я так понимаю (через вид-макросы)? Он выполняется автоматически при открытии файла?
3. Сделал как вы сказали, чет не пахат...))))

okshef
25-07-2016, 21:05
Grey_rnd, создайте копию вашего файла без данных, но с макросом, и выложите уже, наконец...

Grey_rnd
26-07-2016, 08:55
На конец не буду, а в теме выкладываю... Прошу посмотреть и рассказать чего я сделал не так...(

okshef
26-07-2016, 09:22
Все работает. Просто отправьте документ (фрагмент) на печать и увидите.

Grey_rnd
26-07-2016, 10:34
Все работает. Просто отправьте документ (фрагмент) на печать и увидите. »
:sorry: Повторюсь, мне бы не в печати, а так в эл. виде видеть...
Просто что бы сторонний человек открыл файл и увидел, что дата последней актуализации тогда то..

Iska
26-07-2016, 13:31
1. А в чем принципиальная разница? »
Принципиальная разница в том, что процедура обработки события «Workbook_BeforePrint()» может обрабатывать событие Workbook.BeforePrint Event (Excel) (https://msdn.microsoft.com/en-us/library/office/ff195836.aspx) только будучи в модуле «ЭтаКнига»/«ThisWorkbook» Рабочей книги. Если Вы поместите эту процедуру просто в один из модулей — это будет обычная процедура.

2. В документ макрос вставлять не надо, я так понимаю (через вид-макросы)? Он выполняется автоматически при открытии файла? »
Надо. Да.

Повторюсь, мне бы не в печати, а так в эл. виде видеть...
Просто что бы сторонний человек открыл файл и увидел, что дата последней актуализации тогда то.. »
Сторонний человек может посмотреть «дату актуализации» не открывая файл, просто в его расширенных свойствах:
http://i.imgur.com/dr1jZ6U.pngоткуда, она собственно и бралась для вставки в документ. Это основы. Объясните, что не надо изобретать велосипед да ещё и с квадратными колёсами.

a_axe
26-07-2016, 16:35
процедура обработки события «Workbook_BeforePrint() »
Iska, а почему в данном случае следует использовать BeforePrint, а не Workbook_AfterSave, я видимо упустил по беседе некие требования?
Вроде логично привязать к сохранению - пользователь сохранил документ, о чем тут же осталась запись в ячейке H11. Ведь документ могут сохранить, но ни разу не напечатать.
Option Explicit

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
With ThisWorkbook
.Worksheets("График").Range("H1") = Format(.BuiltinDocumentProperties.Item("Last Save Time"), "dd.mm.yyyy")
End With
End Sub

Iska
26-07-2016, 17:13
Iska, а почему в данном случае следует использовать BeforePrint, а не Workbook_AfterSave, я видимо упустил по беседе некие требования? »
Изначально было вообще «Workbook_Open()».




© OSzone.net 2001-2012