Здравствуйте участники форума. Необходимо макросом переименовать 19 файлов.
Наименования файлов каждый день будут меняться, но только после второго знака _ (например этот текст: 29122025%20(2)) Надо заменить: OOMS_cz_29122025%20(2) на Центры здоровья, OOMS_dialis_29122025%20(3) на Объемы по диализу, OOMS_dispd_29122025 на Плановые задания по диспансеризации детей. Пример замены в приложенном файле. Заранее спасибо за решение.
Здравствуйте участники форума. Необходимо макросом переименовать 19 файлов.
Наименования файлов каждый день будут меняться, но только после второго знака _ (например этот текст: 29122025%20(2)) Надо заменить: OOMS_cz_29122025%20(2) на Центры здоровья, OOMS_dialis_29122025%20(3) на Объемы по диализу, OOMS_dispd_29122025 на Плановые задания по диспансеризации детей. Пример замены в приложенном файле. Заранее спасибо за решение.Mark1976
vanin00, да. Отлично. Спасибо. Но 2 файла не переименовались. OOMS_sahdiab_29122025%20(2), OOMS_dispnab_29122025%20(2). Эти файлы исходники имеют расширение .xls Видимо по этой причине они и не переименовались.
vanin00, да. Отлично. Спасибо. Но 2 файла не переименовались. OOMS_sahdiab_29122025%20(2), OOMS_dispnab_29122025%20(2). Эти файлы исходники имеют расширение .xls Видимо по этой причине они и не переименовались.Mark1976
Сообщение отредактировал Mark1976 - Понедельник, 02.03.2026, 20:33
With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Выберите папку с файлами"
If .Show = -1 Then
Dim folderPath As String folderPath = .SelectedItems(1) & "\" Else MsgBox "Папка не выбрана." Exit Sub End If
End With
On Error GoTo CleanExit Application.ScreenUpdating = False Application.DisplayAlerts = False
Dim i As Long i = 1
Do While Cells(i, 1).Value <> ""
Dim renamedCount As Long Dim skippedCount As Long
Dim oldName As String oldName = Trim(Cells(i, 1).Value)
Dim newName As String newName = Trim(Cells(i, 2).Value)
' Ищем файл с любым расширением Dim fileFound As String fileFound = Dir(folderPath & oldName & ".*")
If fileFound = "" Then skippedCount = skippedCount + 1 Else
' Получаем расширение Dim fileExt As String fileExt = Mid(fileFound, InStrRev(fileFound, "."))
Dim fullOldPath As String fullOldPath = folderPath & fileFound
Dim fullNewPath As String fullNewPath = folderPath & newName & fileExt
' Проверка — существует ли файл с новым именем If Dir(fullNewPath) <> "" Then skippedCount = skippedCount + 1 Else Name fullOldPath As fullNewPath renamedCount = renamedCount + 1 End If
If Err.Number <> 0 Then MsgBox "Ошибка: " & Err.Description, vbCritical Else MsgBox "Готово!" & vbCrLf & _ "Переименовано: " & renamedCount & vbCrLf & _ "Пропущено: " & skippedCount, _ vbInformation End If
End Sub
[/vba]
Mark1976, Пробуйте данный вариант. [vba]
Код
Option Explicit
Sub RenameFiles()
With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Выберите папку с файлами"
If .Show = -1 Then
Dim folderPath As String folderPath = .SelectedItems(1) & "\" Else MsgBox "Папка не выбрана." Exit Sub End If
End With
On Error GoTo CleanExit Application.ScreenUpdating = False Application.DisplayAlerts = False
Dim i As Long i = 1
Do While Cells(i, 1).Value <> ""
Dim renamedCount As Long Dim skippedCount As Long
Dim oldName As String oldName = Trim(Cells(i, 1).Value)
Dim newName As String newName = Trim(Cells(i, 2).Value)
' Ищем файл с любым расширением Dim fileFound As String fileFound = Dir(folderPath & oldName & ".*")
If fileFound = "" Then skippedCount = skippedCount + 1 Else
' Получаем расширение Dim fileExt As String fileExt = Mid(fileFound, InStrRev(fileFound, "."))
Dim fullOldPath As String fullOldPath = folderPath & fileFound
Dim fullNewPath As String fullNewPath = folderPath & newName & fileExt
' Проверка — существует ли файл с новым именем If Dir(fullNewPath) <> "" Then skippedCount = skippedCount + 1 Else Name fullOldPath As fullNewPath renamedCount = renamedCount + 1 End If
Нажимаем на кнопку "загрузить". Макрос сам находит на сайте http://www.sartfoms.ru/forMO/obiem/size_2026.htm ссылки на эксель-файлы, скачивает их в указанную вами папку. Сразу присваивает им имена такие как написано на сайте. Заполняет таблицу. Какую ссылку скачал в столбец "A". Куда и c каким именем загрузил в столбец "B". При следующем запуске очистит таблицу и заполнит заново. Если при выборе папки нажать "отмена" то таблица очистится от записей сформированных макросом. Пробуйте...
Нажимаем на кнопку "загрузить". Макрос сам находит на сайте http://www.sartfoms.ru/forMO/obiem/size_2026.htm ссылки на эксель-файлы, скачивает их в указанную вами папку. Сразу присваивает им имена такие как написано на сайте. Заполняет таблицу. Какую ссылку скачал в столбец "A". Куда и c каким именем загрузил в столбец "B". При следующем запуске очистит таблицу и заполнит заново. Если при выборе папки нажать "отмена" то таблица очистится от записей сформированных макросом. Пробуйте...vanin00
vanin00, здравствуйте. Спасибо. Не загрузились данные при работе с последней станицей. В А3 ввожу http://www.sartfoms.ru/forMO/obiem/size_2026.htm, нажимаю загрузить, указываю путь, запускаю макрос. Таблица пустая, в папках файлов нет. Может не так что то делаю?
vanin00, здравствуйте. Спасибо. Не загрузились данные при работе с последней станицей. В А3 ввожу http://www.sartfoms.ru/forMO/obiem/size_2026.htm, нажимаю загрузить, указываю путь, запускаю макрос. Таблица пустая, в папках файлов нет. Может не так что то делаю?Mark1976
Сообщение отредактировал Mark1976 - Вторник, 03.03.2026, 10:12
Возможно Excel 2010, 2013 что либо не поддерживает...такое проверить у меня нет возможности...у меня Excel 365. у меня все работает идеально...Еще одна версия файла
Возможно Excel 2010, 2013 что либо не поддерживает...такое проверить у меня нет возможности...у меня Excel 365. у меня все работает идеально...Еще одна версия файлаvanin00
vanin00. Поучено информационное сообщение, что успешно загружено и скачано 19 файлов. Но в указанной папке их нет. Ошибка скачивания: -2146697210
vanin00. Поучено информационное сообщение, что успешно загружено и скачано 19 файлов. Но в указанной папке их нет. Ошибка скачивания: -2146697210Mark1976