Чтобы заполнить встроенные свойства (например, Тема, Руководитель, Организация, Автор, Категория, Ключевые слова, Название, Комментарий и т.д.) документа Excel, можно воспользоваться функцией FillWorkbookProperties:
(в её работе используется коллекция BuiltinDocumentProperties)
Sub ПримерИспользования_FillWorkbookProperties() FillWorkbookProperties ActiveWorkbook, "Название", "Тема", "Автор", "Ключевые Слова", , "EducatedFool", , "Компания" End Sub
Код функции FillWorkbookProperties:
Sub FillWorkbookProperties(ByRef wb As Workbook, _ Optional ByVal Title As String = vbNullString, Optional ByVal Subject As String = vbNullString, _ Optional ByVal Author As String = vbNullString, Optional ByVal Keywords As String = vbNullString, _ Optional ByVal Template As String = vbNullString, Optional ByVal LastAuthor As String = vbNullString, _ Optional ByVal Manager As String = vbNullString, Optional ByVal Company As String = vbNullString) On Error Resume Next MyComment = "http://excelvba.ru/" & vbNewLine & _ "Разработка макросов любой сложности " & "для Excel, Word, CorelDRAW" & vbNewLine With wb.BuiltinDocumentProperties If Len(Title) Then .Item(1) = Title If Len(Subject) Then .Item(2) = Subject If Len(Author) Then .Item(3) = Author If Len(Template) Then .Item(4) = Template .Item(5) = MyComment If Len(LastAuthor) Then .Item(7) = LastAuthor If Len(Manager) Then .Item(20) = Manager If Len(Company) Then .Item(21) = Company End With End Sub
Список индексов всех доступных свойств:
| Название свойства | Назначение | |
| 1 | Title | Заголовок |
| 2 | Subject | Предмет |
| 3 | Author | Автор (создавший документ) |
| 4 | Keywords | Ключевые слова |
| 5 | Comments | Комментарии |
| 6 | Template | Шаблон документа |
| 7 | Last Author | Тот, кто последний сохранил документ |
| 8 | Revision Number | Число входов для редактирования |
| 9 | Application Name | Название приложения, обрабатывающего документ |
| 10 | Last Print Date | Дата и время последней печати |
| 11 | Creation Date | Дата создания |
| 12 | Last Save Time | Дата и время последнего сохранения |
| 13 | Total Editing Time | Общая продолжительность редактирования (минуты) |
| 14 | Number of Pages | Число страниц |
| 15 | Number of Words | Число слов |
| 16 | Number of Characters | Число символов |
| 17 | Security | Секретность |
| 18 | Category | Категория |
| 19 | Format | Формат |
| 20 | Manager | Менеджер |
| 21 | Company | Компания |
| 22 | Number of Bytes | Размер файла в байтах в момент последнего сохранения |
| 23 | Number of Lines | Число строк |
| 24 | Number of Paragraphs | Число абзацев |
| 25 | Number of Slides | Число слайдов (определено в PowerPoint, в остальных, вероятно, не используется) |
| 26 | Number of Notes | Число заметок к слайдам (определено в PowerPoint, в остальных, вероятно, не используется) |
| 27 | Number of Hidden Slides | Число скрытых слайдов (определено в PowerPoint, в остальных, вероятно, не используется) |
| 28 | Number of Multimedia Clips | Число клипов (определено в PowerPoint, в остальных, вероятно, не используется) |
| 29 | Hyperlink Base | База гиперссылок |
| 30 | Number of Characters (with spaces) | Общеечисло символов, включая пробелы |











Комментарии
Разобрался. Формат даты такой: "1888-01-01 07:19:50"
Однако, после сохранения, установленный руками индекс «Last Save Time» слетает на актуальный.
Значит - скрипт для смены даты, увы, не годится.
Есть решение на VBS, но не полноценное:
=======================================
Option Explicit
Dim sSrc, oWB, oProp
With CreateObject("Excel.Application")
.Visible = False
.DisplayAlerts = False
For Each sSrc in WScript.Arguments
On Error Resume Next
Set oWB = .Workbooks.Open(sSrc)
On Error Goto 0
If .Workbooks.Count > 0 Then
For Each oProp In oWB.BuiltinDocumentProperties
oProp.Value = Empty
Next
.UserName = " "
oWB.Save
oWB.Close
End If
Next
.Quit
End With
CreateObject("WScript.Shell").PopUp "Completed", 1, , 64
=======================================
Вот бы его допилить...
* точнее, я не могу понять, в каком ФОРМАТЕ нужно указать дату, например, у 12-го индекса LastSaveTime.
Внутри core.xml файла XLSX она указана, как: 2015-12-05T07:19:50Z
Или Вы, уважаемый EducatedFool, не разбирались с этим?
Уважаемые коллеги!
Ни как не могу сообразить, как покиллить ДВА поля "Creation Date" и "Last Save Time" средствами Вашего скрипта.
Буду благодарен за совет.
Отправить комментарий