Страницы: 1
RSS
Макросом переименовать файлы в папке используя InputBox, Макросом переименовать файлы в папке используя InputBox
 
Здравствуйте. Есть макрос для изменения формата файлов Excel в xlsb в папке. Необходимо еще эти файлы переименовать через InputBox и старое наименование. Причем первое диалоговое окно должно добавить текст к началу имени, а второе диалоговое окно добавить текст в конце имени. Например файл: Иванов ИИ, должен переименоваться в 16492_ИвановИИ_август.
Код
Sub xlsb()
 Dim A As String
 Dim B As String
     A = InputBox("Введите данные", "Ввод данных")
   B = InputBox("Введите данные", "Ввод данных")
    Dim sFolder As String, sFiles As String
      With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
      Application.ScreenUpdating = False
    sFiles = Dir(sFolder & "*.xls")
    Do While sFiles <> ""
            Workbooks.Open sFolder & sFiles
    On Error Resume Next: Err.Clear
     
    If Val(Application.Version) < 12 Then Exit Sub
   
   oldName$ = ActiveWorkbook.FullName
 
      If UCase$(oldName$) Like "*.XLSB" Then Exit Sub
   
   newName$ = Left(oldName$, InStrRev(oldName$, ".")) & "xlsb"
     
   ActiveWorkbook.SaveAs newName$, xlExcel12
 
       If Err = 0 Then Kill oldName$
         Application.CutCopyMode = False
 ActiveWorkbook.Close True                    
 sFiles = Dir
    Loop
   
    Application.ScreenUpdating = True
End Sub


Помогите, пожалуйста, вставить данные  InputBox в название файлов  
Изменено: balabom - 13.09.2016 09:32:52
 
Код
newName$ = Left(oldName$, InStrRev(oldName$, ".")) & "xlsb" 
заменить на (как я понял):
Код
with CreateObject("Scripting.FileSystemObject")
 newName$ = sFolder & A & .GetBaseName(oldName) & B & ".xlsb"
end with
Что такое GetBaseName читайте тут.
Изменено: JayBhagavan - 12.09.2016 16:44:20

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Спасибо. Файлы переименовывает, только сохраняет их в папку с файлом макроса, а не в исходную (вернее на позицию вверх, т.е. если исходные файлы например D:\15\Липецк, он их сохраняет в D:\15).  А можно как-нибудь в исходной оставлять (файл с макросом храниться в отдельной папке)?
Изменено: balabom - 12.09.2016 15:16:28
 
balabom, исправил. Студент?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
balabom, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение.
Спасибо!
 
JayBhagavan, Нет, не студент. Просто не так давно узнала, что такое макрос. Теперь стараюсь  облегчить себе и своим коллегам жизнь.
Исправила. Всё работает. Спасибо огромное!
Изменено: balabom - 13.09.2016 09:46:04
Страницы: 1
Читают тему
Наверх