Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
Word

Пакетное переименование файлов с подстановкой выделенного текста

30.11.2018, 16:42. Показов 8686. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Имеется папка «Резюме», содержащая 3817 документов Word (*.docx) – это резюме, с данными о сотрудниках организации.
Имена файлов – самые разные, но по ним невозможно понять, чьи резюме в них содержатся (наборы символов и букв, не имеющие отношения к содержимому)
В каждом файле есть текст, имеющий одинаковое форматирование – это фамилия имя и отчество сотрудника (через пробел), встречающиеся в документе только однажды. Отформатирован он следующим образом: шрифт – полужирный с выравниванием по центру.
Можно ли средствами VBA сделать так, чтобы фамилия имя отчество, содержащееся в файле, стало именем другого вновь создаваемого файла (Save As)? А переименованные файлы сохранить в ранее созданную папку «Personal»?
То есть, надо сначала найти и выделить текст с полужирным начертанием и выравниванием по центру. Затем сохранить файл как выделенный текст (т.е. Ф.И.О.). И применить код макроса ко всем файлам в папке «Резюме».
В результате должно получиться, например, файл с именем: «Сидоров Алексей Петрович.docx», который будет расположен в другой папке «Personal». И так для всех файлов. А это в свою очередь сделает доступным быстрый и удобный поиск нужного резюме по имени файла.
Буду признателен за отклики.


С уважением,

Ниетхан

P.S.:
Путь первой папки: "C:\Резюме"
Путь папки назначения: "F:\Personal"

Добавлено через 43 минуты
Забыл указать: 1 файл = 1 резюме
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2018, 16:42
Ответы с готовыми решениями:

Пакетное редактирование файлов Word
Всем привет. В сети нашел файл SrcAndRpl_Beta3.doc для пакетного найти/заменить. Работает прекрасно, но вот если объект в ворде...

Изменить стиль выделенного текста
В общем стоит задача создать интерфейсик для изменения стиля текста в документе, мол я в комбобоксе выбираю стиль текста и при нажатии на...

Пакетное переименование файлов
Добрый день, можно с помощью с++ написать прогу которая будет переименовывать файлы указанные в папке формата Чистота_Имя-Фамилия_время.mp3...

14
Модератор
Эксперт MS Access
 Аватар для shanemac51
12217 / 5060 / 812
Регистрация: 07.08.2010
Сообщений: 14,919
Записей в блоге: 4
30.11.2018, 18:35
Цитата Сообщение от Niyetkhan Посмотреть сообщение
это фамилия имя и отчество сотрудника
в 10-м классе на 30 учеников было 2 тезки по фамилия-имя-отчество
а у вас 3800сотрудников
1
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
30.11.2018, 18:44  [ТС]
Совпадений нет, я проверял по списку из отдела кадров.
А коллектив большой т.к. включает работников всех наших участков в области.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.11.2018, 19:03
Лучший ответ Сообщение было отмечено Niyetkhan как решение

Решение

както так, у меня офис 2003. поэтому форматы .docx не поддерживаются
предусмотрел 2 варианта обработки файлов из папки либо .doc либо .docx
( часть кода: Case "doc", "docx" )

Visual Basic
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Sub FIO()
 
    Dim r As Range, fn$, v, w As Document, fldr$
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .title = "Выбрать папку с резюме"
        .ButtonName = "Выбрать папку"
        .Filters.Clear
        .InitialFileName = ActiveDocument.Path & "\"
        If .Show = 0 Then Exit Sub
        fldr = .SelectedItems(1)
    End With
    On Error Resume Next
    With CreateObject("scripting.filesystemobject")
        For Each v In .GetFolder(fldr).Files
            Debug.Print v.Attributes
            If v.Attributes = 32 Then
                Select Case LCase(.GetExtensionName(v))
                Case "doc", "docx"
    
                    Set w = Documents.Open(v.Path, Visible:=False)
                    Set r = w.Range
                    With r.Find
                        .ClearFormatting
                        .Text = ""
                        .Font.Bold = True
                        .Replacement.Text = ""
                        .Forward = True
                        .Wrap = wdFindContinue
                        .Format = True
                        .Execute
                    End With
                    With w
                        fn = r.Text
                        If Asc(Right$(fn, 1)) < 33 Then fn = Left(fn, Len(fn) - 1)
                        fn = .Path & "\" & fn & Mid$(.Name, InStrRev(.Name, "."))
                    End With
                    If .FileExists(fn) Then
                        If MsgBox("Файл " & vbLf & fn & vbLf & " существует." & vbLf & "Продолжить ?", 68) = vbNo Then
                            Windows(w.Name).Close: Exit Sub
                        End If
                    Else
                        w.SaveAs fn
                        Windows(w.Name).Close
 
                    End If
    
                End Select
            End If
        Next
        
    End With
на картинках 1,2,3,4 эволюция моих действий
Миниатюры
Пакетное переименование файлов с подстановкой выделенного текста   Пакетное переименование файлов с подстановкой выделенного текста   Пакетное переименование файлов с подстановкой выделенного текста  

Пакетное переименование файлов с подстановкой выделенного текста  
2
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.11.2018, 19:09
Ну это так.. сырой матерьял наверняка потребуется доработка. Например закрытие Windows кроме начального или удаление переименованных или пропуск ранее переименованных и тд и тп
0
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
30.11.2018, 19:28  [ТС]
Код работает!!!

Только вновь созданные файлы почему-то записываются в ту же папку (исходную)...
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.11.2018, 19:32
Цитата Сообщение от Niyetkhan Посмотреть сообщение
Код работает!!!
Рад за тебя )
Цитата Сообщение от Niyetkhan Посмотреть сообщение
записываются в ту же папку (исходную)
Ну значит назначь ту папку которая нужна
0
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
30.11.2018, 19:35  [ТС]
И потом, после того, как были переименованы файлы и получен нужный результат, появляется следующее сообщение:

Файл "Актаев Оралбек Меирбекович.docx" существует.
Продолжить ?

И заново приходится сохранять поверх уже созданных все файлы..., нажимая ОК.

Короче, цикл начинается повторно

Пришлось отменить работу макроса, нажав "Нет"
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.11.2018, 19:39
При отмене производиться выход из цикла просмотра файлов, и из программы
Цитата Сообщение от Niyetkhan Посмотреть сообщение
Файл "Актаев Оралбек Меирбекович.docx" существует.
Значит он действительно в файлах уже есть. Можно гибче к этому подойти ставить к примеру (2) в названии и тому подобное
0
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
30.11.2018, 19:40  [ТС]
А в остальном все устраивает

Тогда после завершения работы макроса в ответ на появляющееся сообщение, буду просто нажимать "Нет", и сохранять в той же папке.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.11.2018, 19:42
Ну тоесть измени код чтоб новая папка сохранения была твоя
потом проверь что получится, может позже сделаю улучшенный код в котором уберу все подводные камни
0
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
30.11.2018, 19:45  [ТС]
Извиняюсь, не подскажите, в каком месте кода надо указать Путь назначения?
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.11.2018, 19:47
Нет не подскажу )). такой вот я злой
1
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
30.11.2018, 20:21  [ТС]
Спасибо, я Вам очень признателен
0
2 / 2 / 0
Регистрация: 02.05.2016
Сообщений: 190
02.12.2018, 08:22  [ТС]
Сегодня обнаружил, что 1169 файлов так и остались не переименованными.
Запускал макрос несколько раз, но результат все тот же

Проверил: Все файлы одного типа (docx) и во всех есть полужирный текст с выравниванием по центру.

Может быть, это из-за нехватки оперативной памяти? У меня комп с Windows 7 Pro, Word 2016, ОЗУ 4 ГБ

Добавлено через 19 минут
А нет, я все таки ошибся...

В этих оставшихся документах содержится другой текст с таким же форматированием.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2018, 08:22
Помогаю со студенческими работами здесь

Пакетное переименование файлов
Есть файлы ___ нужно скрипт групового переименования файлов где меняеться местами только формат даты на год месяц день на вот это ...

Пакетное переименование файлов
Задание: Создать папку в ней 10 файлов. Программа от пользователя получает маску, все файлы которые подходят под маску переименовать. ...

Пакетное переименование файлов
Возникла необходимость папку с большим кол-вом файлом переименовать 1,2,3,4,5..... Например фильмы или музыку или фото что бы шло по...

Пакетное переименование файлов
Уважаемые форумчане, подскажите пожалуйста решение. Имеется множество файлов следующего вида: jsdsjlk_a.txt mfmsgslsfs_a.txt ...

Пакетное переименование файлов по заданному шаблону
Нужен bat файл, который переименнует все файлы по указанному пути, вот так: name401 name402 ... name410 name411 ... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru