Страницы: 1
RSS
Зная название и путь книгExcel, нужно переименовать их с помощью VBA
 
Добрый день! Прошу помощи. Зная название и путь книг excel нужно дать им же другие имена с помощью VBA. (я это вижу так: 1-2 столбик: названия файла-путь (если нужно); 3 стоблик - новое имя файла ). Заранее спасибо.
 
Цитата
Name Statement    
Renames a disk file, directory, or folder.
Syntax
Name oldpathname As newpathname
The Name statement syntax has these parts:
Part Description
oldpathname Required. String expression that specifies the existing file name and location — may include directory or folder, and drive.  
newpathname Required. String expression that specifies the new file name and location — may include directory or folder, and drive. The file name specified by newpathname can't already exist.
Remarks
The Name statement renames a file and moves it to a different directory or folder, if necessary. Name can move a file across drives, but it can only rename an existing directory or folder when both newpathname and oldpathname are located on the same drive. Name cannot create a new file, directory, or folder.
Using Name on an open file produces an error. You must close an open file before renaming it. Name arguments cannot include multiple-character (*) and single-character (?) wildcards.
Изменено: kuklp - 28.08.2017 10:51:55
Я сам - дурнее всякого примера! ...
 
Эм. Поясните? или может ссылку на ресурс если можно?
 
Без примера только такое сляпал!
Код
Sub test()
Dim book As Workbook
Dim ipath$, i&, arr()
arr = Range([a1], Range("b" & Cells(Rows.Count, 2).End(xlUp).Row))
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show = -1 Then ipath = .SelectedItems(1)
End With
For i = 1 To UBound(arr)
    Set book = Workbooks.Open(ipath & "\" & arr(i, 1))
    book.SaveAs Filename:=ipath & "\" & arr(i, 2)
    Kill (ipath & "\" & arr(i, 1))
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
alukundna написал:
ссылку на ресурс если можно?
Можно. Кнопка F1.
Я сам - дурнее всякого примера! ...
 
Пример, не знаю поможет ли.  
 
Nordheim, Спасибо огромное, дописал в конце цикла ActiveWorkbook.Close Savechanges = True  , чтобы он не оставлял открытые переименованные файл и все стало шикарно. Еще раз огромное спасибо.
 
Пример помог. Не надо открывать файлы для переименования:
Код
Public Sub www()
    Dim i&
    For i = 2 To [a2].End(xlDown).Row
        Name Cells(i, 2) As Left(Cells(i, 2), InStrRev(Cells(i, 2), "\")) & Cells(i, 3)
    Next
End Sub
Я сам - дурнее всякого примера! ...
 
Можно ли поднять тему, вопрос касательно переименования.

Задача: Зная путь к файлу, переименовать его. Но, название файла меняется (стоит дата в названии), соответственно нужно использовать только часть названия, что постоянно
Пример файла: Остатки на складе СПб от 19.03.2024.xlsx ........можно использовать Остатки на складе СПб от*.xlsx и привести к виду Остатки на складе СПб.xlsx
Как вариант можно то же самое сделать с расширением .xml

PS Макросов переименовывания много, но все они работают если название исходника не меняется.

Прошу помочь.
Изменено: RUSBelorus - 19.03.2024 18:44:25
 
Если правильно понял, с учетом того что в интернете нет решения, такое не возможно в принципе "Поиск файла по маске и переименование" ?
Мне кажется само решение имеет спрос и полезно.
 
RUSBelorus,
Код
Sub Rename_File()
    Dim objFSO As Object, objFile As Object, objFolder As Object
    Dim sFileName As String, sNewFileName As String
    sNewFileName = "qwerty.xlsx"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\Users\s1200134\Desktop\Новая папка")
    Set colFiles = objFolder.Files
 
    For Each objFile In colFiles
        If objFile.Name Like "qwerty" & "*.xlsx*" Then
            sFileName = "C:\Users\s1200134\Desktop\Новая папка\" & objFile.Name
        End If
    Next

    If objFSO.FileExists(sFileName) = False Then
        MsgBox "Нет такого файла", vbCritical, "www.excel-vba.ru"
        Exit Sub
    End If

    Set objFile = objFSO.GetFile(sFileName)
    objFile.Name = sNewFileName
    MsgBox "Файл переименован", vbInformation, "www.excel-vba.ru"
End Sub
 
Цитата
написал:
evgeniygeo, а где тут маска задается. Например файл имеет название Остатки на складе СПб от 19.03.2024.xlsx
я хочу найти по маске "Остатки на складе СПб"

Файлы качаются с разным окончанием ежедневно
Остатки на складе СПб от 18.03.2024.xlsx
Остатки на складе СПб от 19.03.2024.xlsx
Остатки на складе СПб от 20.03.2024.xlsx
Изменено: RUSBelorus - 20.03.2024 11:51:26
 
RUSBelorus,
вот здесь
Код
If objFile.Name Like "qwerty" & "*.xlsx*" Then
 
После всех тестов остановился на готовом решении, адаптировал его под себя
https://www.excel-vba.ru/chto-umeet-excel/kak-skachat-fajl-iz-interneta-po-ssylke/

Цитата
evgeniygeo
Спасибо.
Изменено: RUSBelorus - 20.03.2024 16:45:37
 
RUSBelorus,
странно, ведь статья совсем о другом, но в любом случае, я рад, что у Вас все получилось  ;)
 
Цитата
написал:
странно, ведь статья совсем о другом,
Статья про файл и его изменение, но в последних постах добавилось еще и решение, от куда он появляется) и получилось законченное решение вопроса по всей теме.
Изменено: RUSBelorus - 21.03.2024 09:26:43
Страницы: 1
Читают тему
Наверх