Помогите с решением задачи. Хочется автоматизировать рутину на работе. В папке F:\Raznoe\Perechni eсть файл выгрузка.xls, в нем столбец, в котором в каждой ячейке (около 300 ячеек) написано наименование продукта.
Наименование
колбаса
сыр
мясо
сливки
У каждого продукта есть свой сертификат, по наименованию совпадающий со значением в ячейке (колбаса.jpeg, сыр.tiff и т.д.) Сертификаты к каждому продукту лежат в папке F:\Raznoe.
Можно ли и как сделать так, чтобы файл выгрузка.xls брал значение из каждой ячейки столбца "Наименование", производил поиск по наименованию в директории F:\Raznoe и при успешном нахождении сертификата копировал этот сертификат в директорию F:\Raznoe\Perechni\Sertifikati, а если не находил, то сообщал бы об этом?
В макросе есть комментарий по именам папкам, укажите в макросе свои имена папок. В самом файле макроса нет, я выложил файл, чтобы показать, с каким листом макрос работает. В наименованиях не должно быть точек. Если могут быть точки, то нужно что-то придумать, иначе может быть ошибка.
Макрос
Код
Sub Скопировать_сертификаты()
Dim strFileName As String, strFolderPerechni As String, strFolderSertifikati As String
Dim lr As Long, i As Long
'Здесь укажите свои имена папок
strFolderPerechni = "C:\Users\User\Desktop\Perechni"
strFolderSertifikati = "C:\Users\User\Desktop\Sertifikati"
lr = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lr
strFileName = Dir(strFolderPerechni & "\" & Cells(i, "A").Value & ".*")
If strFileName = "" Then
MsgBox "Нет сертификата для:" & vbCr & Cells(i, "A").Value, vbExclamation
Else
FileCopy strFolderPerechni & "\" & strFileName, strFolderSertifikati & "\" & strFileName
End If
Next i
MsgBox "Готово!", vbInformation
End Sub
Прописал свои пути в макросе, макрос пишет: Нет сертификата: колбаса.
Все файлы, которые макрос должен скопировать из папки в другую папку, в основном с раширением .doc (.docx). Получается в наименовании все таки есть точка?
Как быть, если в файле выгрузка.xls много столбцов, а имена сертификатов макрос должен брать только из одного столбца? И как будет работать макрос, если в папке поиска два файла с одинаковым именем, например: колбаса.doc, колбаса.doc? А если в папке поиска два файла с одинаковым именем, но разного типа, например: колбаса.doc, колбаса.pdf, колбаса.tiff и т.д., а мне нужно скопировать только колбаса.doc? Также в основном бывает, что все сертификаты раскиданы по многим папкам, например: d:\сертификаты, d:\документы\прочее\сертификаты\ и т.д. Это не сломает макрос? Если в прописываемых путях и/или именах папок есть кириллица и/или пробелы, это проблема?