powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Изменить свойство множеству файлов MS Word
9 сообщений из 9, страница 1 из 1
Изменить свойство множеству файлов MS Word
    #36784994
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть кучка вордовых файлов. У всех у них надо заменить автора и организацию (на известные значения). Открывать каждый файл и через свойства документа править - долго и муторно. Можно ли это автоматизировать? Если да, то как? В VBA не силен?
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36785200
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBaga,

очень просто, создаете процедуру получающую весь список файлов из папки через dir
организовываете цикл по поочередному открытию каждого файла
ищете в BuiltinDocumentProperties нужные Вам Property по name
меняете их value на нужные


сложность знать какие name Вам нужны, но можно просто сначала получить все Name какие есть и выбрать нужные.

я сейчас попробовал все меняется легко
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36785208
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBaga,

если у вас Word >= 2007, то можно сделать через openxml.
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36786522
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus,

К сожалению, ваш совет правлелн, но для мня бесполезен, т.к. я не понимаю, как некоторую часть этого сделать, а именно

1.
>>... создаете процедуру получающую весь список файлов из папки через dir
Если вы про VBA, то уже нужно помощь.
Если из командной строки, то можно так
dir *.doc
и, допустим, перенаправить куда-нибудь вывод.
А можно через for
for %i in (*.doc) do делать_то_что_надо_с_каждым_файлом

2. Основная проблема
Я не понимаю, как сделать это:
>>ищете в BuiltinDocumentProperties нужные Вам Property по name
>>меняете их value на нужные

Менять нужно следующие поля: автор, руководитель, учреждение, база гиперссылки

PS
Word 2003

PPS
Правильно ли я понял:
в некотором документе пишу макрос (на VBA), который получает список документов на обработку, открывает каждый документ из списка, меняет в нем то, что нужно, закрывает/сохраняет
?
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36786891
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBaga
Если из командной строки, то можно так
dir *.doc

вот такая процедура возвращает содержимое папки в массив
код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Public Sub ПрочитатьПапку(ByVal path As String, ByRef spisoK As Variant)

Dim DPath As String
Dim x As Integer
Dim FName As String

Erase spisoK
x =  0 
    FName = Dir(path, vbNormal)
    
    Do While FName <> ""
        If FName <> "." And FName <> ".." Then
        x = x +  1 
        End If
        FName = Dir
    Loop
If x >  0  Then
ReDim spisoK( 1  To x) As string
x =  0 
    FName = Dir(path, vbNormal)
    
    Do While FName <> ""
        If FName <> "." And FName <> ".." Then
           x = x +  1 
           spisoK( 1  To x) = Dir
        End If
        FName = Dir
    Loop

End If
End Sub
синтаксис ПрочитатьПапку [Путь], [Массив] , массив должен быть объявлен.
BagaBaga2. Основная проблема Я не понимаю, как сделать это:
открытие файла раскурите макрорекордером, а просмотр свойств это же совсем просто
ещё код
Код: plaintext
1.
2.
3.
4.
For Each property In w.BuiltinDocumentProperties
    If property.Name = "Author" Then property.Value = "Me"
    If property.Name = "Manager" Then property.Value = "MyBoss"
    If property.Name = "Hyperlink base" Then property.Value = "www.ru/base"
Next property
где w- это ваш активдокумент, в смысле тот, который открыт. Можно конечно и не открывать, но это гораздо сложнее для новичка и смысла особо не имеет.
BagaBagaПравильно ли я понял:
в некотором документе пишу макрос (на VBA), который получает список документов на обработку, открывает каждый документ из списка, меняет в нем то, что нужно, закрывает/сохраняет
да, создаете пустой документ, Alt+F11 - , в нем создаете свой модуль, в нем свою процедуру типа MySub.
Там пишете код в том порядке, который я указал. Потом запускаете код, он открывает все документы проделывает нужные изменения, сохраняет, закрывает. Вуаля - задача решена.
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36786895
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардоньте в коде очепятка

не так
Код: plaintext
 spisoK( 1  To x) = Dir
а так
Код: plaintext
 spisoK( 1  To x) = FName
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36787022
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus,

Спасибо!
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36787214
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

спасибо за ваши комментарии, но вступлюсь за Shamanus - он дал мне вполне понятное направление, куда копать.

Ваше решение (в части узнавания количества объектов в папке), конечно, куда правильнее, чем в цикле перебирать возвращенные объекты из данной папки и наворачивать счетчик (исключив из него текущую "." и родительскую ".." папки). Но для этого нужно знать эту ... кхм ... библиотеку. Я не знаю. Даже как редактор VBA вызвать в ворде лишь смутно догадывался...

Еще, для меня загадка, почему в коде пишем spisoK(1 To x) = FName вместо spisoK(x) = FName. Но это поправимо... попробую - там видно будет.

PS
Хотя, меотодологически "давать на блюдечке" - абсолютно не правильно.
...
Рейтинг: 0 / 0
Изменить свойство множеству файлов MS Word
    #36787412
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBaga, почему в коде пишем spisoK(1 To x) = FName вместо spisoK(x) = FName.
это моя ошибка копипаста, конечно правильно
Код: plaintext
1.
spisoK(x) = FName
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Изменить свойство множеству файлов MS Word
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]