Добрый день. Формируется из программы файл «коммерческое предложение» . Имеется сетевая папка в которой лежат картинки с именем типа «Артикул.jpg» Необходимо вставить картинки в соответствующую ячейку (в примере столбец “B”). Количество срок, естественно, варьируется. В поиске находил пример с колой и пепси, но там картинки подставляются уже вложенные, из файла, у меня же задача подобрать и вставить из внешнего источника, папки. Количество файлов картинок, постоянно обновляется. Сейчас их около 1 500 шт.
Добрый день. Формируется из программы файл «коммерческое предложение» . Имеется сетевая папка в которой лежат картинки с именем типа «Артикул.jpg» Необходимо вставить картинки в соответствующую ячейку (в примере столбец “B”). Количество срок, естественно, варьируется. В поиске находил пример с колой и пепси, но там картинки подставляются уже вложенные, из файла, у меня же задача подобрать и вставить из внешнего источника, папки. Количество файлов картинок, постоянно обновляется. Сейчас их около 1 500 шт.TD_MElec
Public Sub InsPict() Dim arr, fldPath$, art$, fName$, i&, r0, lrow&, oDic As Object, IShape As Shape, Zm Set oDic = CreateObject("Scripting.Dictionary") r0 = 4 lrow = Cells(Rows.Count, 3).End(xlUp).Row arr = Cells(r0, 3).Resize(lrow - r0 + 1).Value For i = 1 To UBound(arr) oDic(arr(i, 1)) = i + r0 - 1 Next i For Each IShape In ActiveSheet.Shapes If IShape.Type <> 8 Then IShape.Delete Next fldPath = ThisWorkbook.Path & "\images\" 'путь к папке с изображениями Application.ScreenUpdating = False fName = Dir(fldPath & "*.jpg") Do While fName <> "" art = Split(fName, ".")(0) If oDic.Exists(art) Then With Cells(oDic(art), 2) Set IShape = ActiveSheet.Shapes.AddPicture(fldPath & fName, False, True, .Left + 1, .Top + 1, -1, -1) Zm = WorksheetFunction.Min(.Width / IShape.Width, .Height / IShape.Height) IShape.Height = IShape.Height * Zm - 2 End With End If fName = Dir Loop Application.ScreenUpdating = True End Sub
[/vba]
Так хотели? [vba]
Код
Public Sub InsPict() Dim arr, fldPath$, art$, fName$, i&, r0, lrow&, oDic As Object, IShape As Shape, Zm Set oDic = CreateObject("Scripting.Dictionary") r0 = 4 lrow = Cells(Rows.Count, 3).End(xlUp).Row arr = Cells(r0, 3).Resize(lrow - r0 + 1).Value For i = 1 To UBound(arr) oDic(arr(i, 1)) = i + r0 - 1 Next i For Each IShape In ActiveSheet.Shapes If IShape.Type <> 8 Then IShape.Delete Next fldPath = ThisWorkbook.Path & "\images\" 'путь к папке с изображениями Application.ScreenUpdating = False fName = Dir(fldPath & "*.jpg") Do While fName <> "" art = Split(fName, ".")(0) If oDic.Exists(art) Then With Cells(oDic(art), 2) Set IShape = ActiveSheet.Shapes.AddPicture(fldPath & fName, False, True, .Left + 1, .Top + 1, -1, -1) Zm = WorksheetFunction.Min(.Width / IShape.Width, .Height / IShape.Height) IShape.Height = IShape.Height * Zm - 2 End With End If fName = Dir Loop Application.ScreenUpdating = True End Sub
Добрый день, в продолжение темы. А если в папки с картинками еще есть под папки, как сделать чтобы макрос и оттуда вставлял картинки, под папок много.
Добрый день, в продолжение темы. А если в папки с картинками еще есть под папки, как сделать чтобы макрос и оттуда вставлял картинки, под папок много.Spasibo_Vam_Ogromnoe
Без примера только общий ответ. Посмотрите здесь есть макрос, перебирающий файлы в подпапках. Если не разберётесь, создайте свою тему, приложив файл с примером
Без примера только общий ответ. Посмотрите здесь есть макрос, перебирающий файлы в подпапках. Если не разберётесь, создайте свою тему, приложив файл с примеромPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816