mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

Заполнение пользовательских свойств книги Excel

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

Список индексов всех доступных свойств:

 Название свойстваНазначение
1TitleЗаголовок
2SubjectПредмет
3AuthorАвтор (создавший документ)
4KeywordsКлючевые слова
5CommentsКомментарии
6TemplateШаблон документа
7Last AuthorТот, кто последний сохранил документ
8Revision NumberЧисло входов для редактирования
9Application NameНазвание приложения, обрабатывающего документ
10Last Print DateДата и время последней печати
11Creation DateДата создания
12Last Save TimeДата и время последнего сохранения
13Total Editing TimeОбщая продолжительность редактирования (минуты)
14Number of PagesЧисло страниц
15Number of WordsЧисло слов
16Number of CharactersЧисло символов
17SecurityСекретность
18CategoryКатегория
19FormatФормат
20ManagerМенеджер
21CompanyКомпания
22Number of BytesРазмер файла в байтах в момент последнего сохранения
23Number of LinesЧисло строк
24Number of ParagraphsЧисло абзацев
25Number of SlidesЧисло слайдов (определено в PowerPoint, в остальных, вероятно, не используется)
26Number of NotesЧисло заметок к слайдам (определено в PowerPoint, в остальных, вероятно, не используется)
27Number of Hidden SlidesЧисло скрытых слайдов (определено в PowerPoint, в остальных, вероятно, не используется)
28Number of Multimedia ClipsЧисло клипов (определено в PowerPoint, в остальных, вероятно, не используется)
29Hyperlink BaseБаза гиперссылок
30Number 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" средствами Вашего скрипта.
Буду благодарен за совет.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
          _   __  __   _         _  __        __
_ __ | | | \/ | | |__ (_) \ \ / /
| '_ \ | | | |\/| | | '_ \ | | \ \ /\ / /
| |_) | | | | | | | | |_) | | | \ V V /
| .__/ |_| |_| |_| |_.__/ _/ | \_/\_/
|_| |__/
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.