Добрый день! Есть много файлов (более 2тыс) XLS и XLSX там есть в свойствах "автор". Можно ли автоматизировать изменение этого атрибута? Макросом или еще как то?
Добрый день! Есть много файлов (более 2тыс) XLS и XLSX там есть в свойствах "автор". Можно ли автоматизировать изменение этого атрибута? Макросом или еще как то? izn
Можно через макрос, который будет перебирать все документы по-очереди и для каждого изменять встроенное свойство.
Кстати, таких свойств 2 - автор документа вообще ("BuiltinDocumentProperties(3)" в VBA) и автор, который последним документ изменял ("BuiltinDocumentProperties(7)").
izn, здравствуйте.
Можно через макрос, который будет перебирать все документы по-очереди и для каждого изменять встроенное свойство.
Кстати, таких свойств 2 - автор документа вообще ("BuiltinDocumentProperties(3)" в VBA) и автор, который последним документ изменял ("BuiltinDocumentProperties(7)").Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
f = Dir$(p & "*.xls*") Do While Len(f) With Workbooks.Open(p & f, False) .BuiltinDocumentProperties("Author") = "Новый автор" .Close True End With f = Dir$ Loop End Sub
[/vba]
Добрый день! Можно так:[vba]
Код
Sub test() Dim p$, f$
p = "Диск:\Путь к файлам\"
f = Dir$(p & "*.xls*") Do While Len(f) With Workbooks.Open(p & f, False) .BuiltinDocumentProperties("Author") = "Новый автор" .Close True End With f = Dir$ Loop End Sub
izn, сначала собираете все файлы в одну папку; после чего добавляете нижеприведенный макрос в какой-нибудь Excel-файл (можно пустой) и запускаете его - у Вас откроется окно с запросом выбора папки - выбираете ту папку, где у вас лежат вся эта куча файлов и через сколько-то времени у вас свойства файлов будут изменены (только в тексте макроса не забудьте поставить нужные Вам свойства). Доступно только для пользователей
izn, сначала собираете все файлы в одну папку; после чего добавляете нижеприведенный макрос в какой-нибудь Excel-файл (можно пустой) и запускаете его - у Вас откроется окно с запросом выбора папки - выбираете ту папку, где у вас лежат вся эта куча файлов и через сколько-то времени у вас свойства файлов будут изменены (только в тексте макроса не забудьте поставить нужные Вам свойства). Доступно только для пользователейSamaretz
Сообщение отредактировал Samaretz - Понедельник, 20.07.2015, 15:58
думается мне, что без открывания каждого файла в Excel'е будет как-то побыстрее. для работы кода нужна библиотека DSOFile
[vba]
Код
Sub sdf() Dim strFolder$ r: With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then strFolder$ = .SelectedItems(1) ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then GoTo r Else: Exit Sub End If End With Dim strFile$ With CreateObject("DSOFile.OleDocumentProperties") strFile = Dir$(strFolder & "\*.xls*") Do While Len(strFile) .Open strFolder & "\" & strFile, , 2 With .SummaryProperties .Author = "Новый автор" .lastsavedby = "Новый автор" End With .Save: .Close strFile = Dir$ Loop End With End Sub
[/vba]
[p.s.]дата изменения фалов при работе макроса будет заменяться на текущую системную, если она должна оставаться без изменений, то нужно будет потанцевать с бубном (WINAPI)
думается мне, что без открывания каждого файла в Excel'е будет как-то побыстрее. для работы кода нужна библиотека DSOFile
[vba]
Код
Sub sdf() Dim strFolder$ r: With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then strFolder$ = .SelectedItems(1) ElseIf MsgBox("Ничего не выбрано. Повторить?", 36, "Ну так как?") = 6 Then GoTo r Else: Exit Sub End If End With Dim strFile$ With CreateObject("DSOFile.OleDocumentProperties") strFile = Dir$(strFolder & "\*.xls*") Do While Len(strFile) .Open strFolder & "\" & strFile, , 2 With .SummaryProperties .Author = "Новый автор" .lastsavedby = "Новый автор" End With .Save: .Close strFile = Dir$ Loop End With End Sub
[/vba]
[p.s.]дата изменения фалов при работе макроса будет заменяться на текущую системную, если она должна оставаться без изменений, то нужно будет потанцевать с бубном (WINAPI)krosav4ig