Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2014, 19:00   #1
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию переименование файлов в разных папках

Добрый день. У меня такая проблема: в разных папках (например, D:\data\1\, D:\data\2\ и так далее) одной папки (например, D:\data) есть файлы с расширением .xls с разными именами (в каждой папке по 1 файлу). Мне нужно переименовать их всех, чтобы у них было одно имя, например, НДС.xls.

Последний раз редактировалось Jaroslav; 16.01.2014 в 19:09.
Jaroslav вне форума Ответить с цитированием
Старый 17.01.2014, 01:38   #2
Puffi.Muffi
Пользователь
 
Регистрация: 18.06.2013
Сообщений: 57
По умолчанию

Здравствуйте, Jaroslav,

Если вы знаете количество папок (например, 12 папок):
___________________________________ _______________________________
Код:
Sub pereim_faili()
Dim FfF
For FfF = 1 To 12

Dim sFileName As String, sNewFileName As String
 
    sFileName = "D:\data\" & FfF & "\имяфайла.xls"    'имя исходного файла
    sNewFileName = "D:\data\" & FfF & "\НДС.xls"    'новое имя файла
    Name sFileName As sNewFileName 'переименовываем файл

Next FfF
End Sub
___________________________________ ________________________________


Если хотите чтобы автоматически определялось:
*********************************** ************************
Код:
Private Sub Command1_Click()
'запускаем этот макрос

    Dim strStartPath As String
    strStartPath = "D:\data\" 
    ListFolder strStartPath
End Sub
 
Private Sub ListFolder(sFolderPath As String)
    Dim FS As New FileSystemObject
    Dim FSfolder As Folder
    Dim subfolder As Folder
    Dim i As Integer
    
    Set FSfolder = FS.GetFolder(sFolderPath)
 
    For Each subfolder In FSfolder.SubFolders
        DoEvents
        i = i + 1
        Debug.Print subfolder
    Next subfolder
    Set FSfolder = Nothing 
    
Dim FfF
For FfF = 1 To i

Dim sFileName As String, sNewFileName As String
    sFileName = "D:\data\" & FfF & "\имяфайла.xls"    'имя исходного файла
    sNewFileName = "D:\data\" & FfF & "\НДС.xls"    'новое имя файла
    Name sFileName As sNewFileName 'переименовываем файл
Next FfF
End Sub
*********************************** ************************
Чтобы последнее работало, не забудьте включить reference "Microsoft Scripting Runtime"
В редакторе VBA Tools -> Reference -> галочку на "Microsoft Scripting Runtime"




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Puffi.Muffi; 17.01.2014 в 15:48.
Puffi.Muffi вне форума Ответить с цитированием
Старый 17.01.2014, 12:16   #3
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Здравствуйте, Puffi.Muffi. Дело в том, что название папок имеют нечисловые значения (D:\data\D018035\; D:\data\D017015\; D:\data\D015010\ и так далее). Числовые названия папок я подавал как пример (если неправильно написал, извините). Кроме того, имена файлов с расширением .xls разные (D:\data\D018035\НДС.xls; D:\data\D017015\деклар.xls; D:\data\D015010\декл_НДС.xls и так далее: все имена файлов с расширением .xls разные). Количесто папок - более 100.
Jaroslav вне форума Ответить с цитированием
Старый 17.01.2014, 13:06   #4
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Вот что у меня получилось:
Код:
Private Sub Command1_Click()
'запускаем этот макрос

    Dim strStartPath As String
    strStartPath = "D:\data\"
    ListFolder strStartPath
End Sub
 
Private Sub ListFolder(sFolderPath As String)
    Dim FS As New FileSystemObject
    Dim FSfolder As Folder
    Dim subfolder As Folder
    Dim sFileName As String, sNewFileName As String
    Dim s As String
    Dim fls As Files
    Dim f As File


    Set FSfolder = FS.GetFolder(sFolderPath)
 
    For Each subfolder In FSfolder.SubFolders
        DoEvents
        Set fls = subfolder.Files
        For Each f In fls
            s = f.Name
            sFileName = subfolder & "\" & s    'имя исходного файла
            sNewFileName = subfolder & "\НДС.xls"    'новое имя файла
            Name sFileName As sNewFileName 'переименовываем файл
        Next f
    Next subfolder
    Set FSfolder = Nothing
End Sub
Спасибо, Puffi.Muffi. Проблема решена
Jaroslav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение данных из разных Файлов на разных листах одной книги Nikodim113 Microsoft Office Excel 20 12.01.2011 07:12
Поиск файлов в скрытых и системных папках Sprat Microsoft Office Excel 8 13.12.2010 00:36
Текстовый редактор для открытия всех файлов в выделенных папках, подпапках. Alar Софт 5 20.01.2009 16:25
непрерывная смена фотографий в разных папках. brenfire Общие вопросы по Java, Java SE, Kotlin 0 07.08.2008 14:39
Поиск файлов в папках и подпапках Format C: Общие вопросы Delphi 17 04.05.2007 23:31