Чтобы заполнить встроенные свойства (например, Тема, Руководитель, Организация, Автор, Категория, Ключевые слова, Название, Комментарий и т.д.) документа 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" средствами Вашего скрипта.
Буду благодарен за совет.
Отправить комментарий