Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставить картинку из папки. - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставить картинку из папки. (Макросы/Sub)
Вставить картинку из папки.
DKR Дата: Воскресенье, 08.01.2023, 14:16 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте. Помогите пожалуйста.
Название темы лёгкое, потому что не смог поместить всей сути проблемы, но саму задачу отображает.

Описание задачи.

В столбике А находятся значения от =ВПР(...),
допустим это будет
A
235Х623
1235545
646685Х

В папке C://IMG, находятся папки с названиями этих значений(но могут и не находится) Пример: C://IMG/235Х623
В этой папке есть картинки (jpg-формат), картинки имеют разные названия и размеры, их может быть много, одна или вообще не быть (папка пустая)

Нужно, что-бы макрос находил по значению ячейки столбика А папку и вставлял картинку из этой папки напротив в столбик Б и при этом картинка должна отображаться не больше чем сама ячейка (картинка должна быть ужата и не менять размеры самой ячейки) Так как картинок может быть много в папке, то должна вставляться только одна картинка, по дате создания, а именно самая старая из всех находящихся в этой папке

Пример результата

А Б
3849595 Картинка
59у4580 Картинка

Очень надеюсь на Вашу помощь.


Сообщение отредактировал DKR - Воскресенье, 08.01.2023, 14:21
 
Ответить
СообщениеЗдравствуйте. Помогите пожалуйста.
Название темы лёгкое, потому что не смог поместить всей сути проблемы, но саму задачу отображает.

Описание задачи.

В столбике А находятся значения от =ВПР(...),
допустим это будет
A
235Х623
1235545
646685Х

В папке C://IMG, находятся папки с названиями этих значений(но могут и не находится) Пример: C://IMG/235Х623
В этой папке есть картинки (jpg-формат), картинки имеют разные названия и размеры, их может быть много, одна или вообще не быть (папка пустая)

Нужно, что-бы макрос находил по значению ячейки столбика А папку и вставлял картинку из этой папки напротив в столбик Б и при этом картинка должна отображаться не больше чем сама ячейка (картинка должна быть ужата и не менять размеры самой ячейки) Так как картинок может быть много в папке, то должна вставляться только одна картинка, по дате создания, а именно самая старая из всех находящихся в этой папке

Пример результата

А Б
3849595 Картинка
59у4580 Картинка

Очень надеюсь на Вашу помощь.

Автор - DKR
Дата добавления - 08.01.2023 в 14:16
китин Дата: Понедельник, 09.01.2023, 09:57 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7015
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
блин, как назло пустые файлы закончились. подождете пока подвезут?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеблин, как назло пустые файлы закончились. подождете пока подвезут?

Автор - китин
Дата добавления - 09.01.2023 в 09:57
DKR Дата: Понедельник, 09.01.2023, 11:18 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

подождете пока подвезут?


Подождём, что уж остаётся)
 
Ответить
Сообщение
подождете пока подвезут?


Подождём, что уж остаётся)

Автор - DKR
Дата добавления - 09.01.2023 в 11:18
DKR Дата: Суббота, 14.01.2023, 19:02 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Ребята, помогите.
Я упростила задачу.
Помогите сделать ну хотя бы так :(
Нужно, что-бы макрос находил по значению ячейки столбика А папку и вставлял картинку из этой папки напротив в столбик Б и при этом картинка должна отображаться не больше чем сама ячейка.

Пожааааааалуйста :)
 
Ответить
СообщениеРебята, помогите.
Я упростила задачу.
Помогите сделать ну хотя бы так :(
Нужно, что-бы макрос находил по значению ячейки столбика А папку и вставлял картинку из этой папки напротив в столбик Б и при этом картинка должна отображаться не больше чем сама ячейка.

Пожааааааалуйста :)

Автор - DKR
Дата добавления - 14.01.2023 в 19:02
Pelena Дата: Суббота, 14.01.2023, 19:33 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
китин уже намекал, я расшифрую: приложите файл с примером в формате Excel в соответствии с правилами форума


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениекитин уже намекал, я расшифрую: приложите файл с примером в формате Excel в соответствии с правилами форума

Автор - Pelena
Дата добавления - 14.01.2023 в 19:33
DKR Дата: Суббота, 14.01.2023, 19:55 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

китин уже намекал, я расшифрую: приложите файл с примером в формате Excel в соответствии с правилами форума


Ааа, так это намёк бык такой. Честно и не поняла.
Но как то странно прилагать сюда файл с двумя колонками.
Я же написала как должен выглядеть результат

Пример результата

Колонка "А" Колонка "Б"

3849595 Картинка
59у4580 Картинка


Сообщение отредактировал DKR - Суббота, 14.01.2023, 19:59
 
Ответить
Сообщение
китин уже намекал, я расшифрую: приложите файл с примером в формате Excel в соответствии с правилами форума


Ааа, так это намёк бык такой. Честно и не поняла.
Но как то странно прилагать сюда файл с двумя колонками.
Я же написала как должен выглядеть результат

Пример результата

Колонка "А" Колонка "Б"

3849595 Картинка
59у4580 Картинка

Автор - DKR
Дата добавления - 14.01.2023 в 19:55
DKR Дата: Суббота, 14.01.2023, 19:58 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Ну хорошо, сейчас приложу - добавлю "бюрократии" :)
К сообщению приложен файл: 5626498.xlsx (8.8 Kb)
 
Ответить
СообщениеНу хорошо, сейчас приложу - добавлю "бюрократии" :)

Автор - DKR
Дата добавления - 14.01.2023 в 19:58
Pelena Дата: Суббота, 14.01.2023, 22:02 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Ну что ж, какой пример, такой и ответ)
К сообщению приложен файл: 5626498_1.xlsm (19.4 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНу что ж, какой пример, такой и ответ)

Автор - Pelena
Дата добавления - 14.01.2023 в 22:02
DKR Дата: Суббота, 14.01.2023, 22:40 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Это же самое оно! Огромное Вам спасибо!
Прям космос! Столько времени и нервов сэкономили мне, а то я ту сидела пыхтела:)!
:cranky: respect thumb
 
Ответить
СообщениеЭто же самое оно! Огромное Вам спасибо!
Прям космос! Столько времени и нервов сэкономили мне, а то я ту сидела пыхтела:)!
:cranky: respect thumb

Автор - DKR
Дата добавления - 14.01.2023 в 22:40
DKR Дата: Суббота, 14.01.2023, 22:47 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Маленький уточняющих вопрос, что нужно поменять, если я захочу выбрать другой столбец для вставки картинки или имена файлов будут не в столбике А.
А то, что я в этом скрипте вообще не вижу, ни А ни Б :))
 
Ответить
СообщениеМаленький уточняющих вопрос, что нужно поменять, если я захочу выбрать другой столбец для вставки картинки или имена файлов будут не в столбике А.
А то, что я в этом скрипте вообще не вижу, ни А ни Б :))

Автор - DKR
Дата добавления - 14.01.2023 в 22:47
DKR Дата: Суббота, 14.01.2023, 23:01 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Ой и ещё заметила.
Если номера повторяются, то картинка будет только напротив последнего номера. Сделайте пожалуйста, что бы картинка была на против всех номеров, даже повторяющихся :shy:


Сообщение отредактировал DKR - Суббота, 14.01.2023, 23:02
 
Ответить
СообщениеОй и ещё заметила.
Если номера повторяются, то картинка будет только напротив последнего номера. Сделайте пожалуйста, что бы картинка была на против всех номеров, даже повторяющихся :shy:

Автор - DKR
Дата добавления - 14.01.2023 в 23:01
Pelena Дата: Воскресенье, 15.01.2023, 10:21 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
я в этом скрипте вообще не вижу, ни А ни Б
прописала явно А и В

И немного изменила код, т.к. не учла, что
должна вставляться только одна картинка, по дате создания, а именно самая старая из всех
К сообщению приложен файл: 7414280.xlsm (20.2 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
я в этом скрипте вообще не вижу, ни А ни Б
прописала явно А и В

И немного изменила код, т.к. не учла, что
должна вставляться только одна картинка, по дате создания, а именно самая старая из всех

Автор - Pelena
Дата добавления - 15.01.2023 в 10:21
DKR Дата: Воскресенье, 15.01.2023, 10:55 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

К сожалению не работает :(
Пишет Path not found
Запускаю первый макрос, он работает, не выдаёт ошибок.

Наверно дело, в поиске самой старой картинки.
Эта опция должна идти обязательно вместе с поиском папок в папке, так как я писала в самом начале. (Папке много папок, а в них картинки)
Но потом я упростила задачу (отфильтровала пайтаном) и теперь в одной папке находятся все уникальные картинки и сортировка по дате уже не нужна.
Но если Вы сделаете полностью, это было бы очень удобно, так как мне каждый раз надо фильтровать - подготавливать папку пайтаном.
 
Ответить
СообщениеК сожалению не работает :(
Пишет Path not found
Запускаю первый макрос, он работает, не выдаёт ошибок.

Наверно дело, в поиске самой старой картинки.
Эта опция должна идти обязательно вместе с поиском папок в папке, так как я писала в самом начале. (Папке много папок, а в них картинки)
Но потом я упростила задачу (отфильтровала пайтаном) и теперь в одной папке находятся все уникальные картинки и сортировка по дате уже не нужна.
Но если Вы сделаете полностью, это было бы очень удобно, так как мне каждый раз надо фильтровать - подготавливать папку пайтаном.

Автор - DKR
Дата добавления - 15.01.2023 в 10:55
DKR Дата: Воскресенье, 15.01.2023, 11:01 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Я поняла в чём проблема, если номер есть, а папки нет, то он выдаёт ошибку. Можете пожалуйста вставить исключение если не нашёл.


Сообщение отредактировал DKR - Воскресенье, 15.01.2023, 11:12
 
Ответить
СообщениеЯ поняла в чём проблема, если номер есть, а папки нет, то он выдаёт ошибку. Можете пожалуйста вставить исключение если не нашёл.

Автор - DKR
Дата добавления - 15.01.2023 в 11:01
Pelena Дата: Воскресенье, 15.01.2023, 14:15 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
вставить исключение если не нашёл

добавьте в начало макроса строчку
[vba]
Код
On Error Resume Next
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
вставить исключение если не нашёл

добавьте в начало макроса строчку
[vba]
Код
On Error Resume Next
[/vba]

Автор - Pelena
Дата добавления - 15.01.2023 в 14:15
DKR Дата: Воскресенье, 15.01.2023, 16:04 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Спасибо, работает.
Но есть маленький недостаток.
Если ячейка с номером пустая, то макрос вставляет картинку, которая находится в основной папке
Пример
C://IMG/123456.jpg
Пример
Хотя все нужные картинки находятся в подпапках.
C://IMG/235Х623/6483903.jpg

Можете немного исправить, что бы, если ячейка пуста, то ничего не вставлять (и не брать из основной папки) girl_smile


Сообщение отредактировал DKR - Воскресенье, 15.01.2023, 16:15
 
Ответить
СообщениеСпасибо, работает.
Но есть маленький недостаток.
Если ячейка с номером пустая, то макрос вставляет картинку, которая находится в основной папке
Пример
C://IMG/123456.jpg
Пример
Хотя все нужные картинки находятся в подпапках.
C://IMG/235Х623/6483903.jpg

Можете немного исправить, что бы, если ячейка пуста, то ничего не вставлять (и не брать из основной папки) girl_smile

Автор - DKR
Дата добавления - 15.01.2023 в 16:04
Pelena Дата: Воскресенье, 15.01.2023, 16:52 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Вот для этого и нужны адекватные файлы-примеры с всеми возможными вариантами исходных данных, чтобы не было этих бесконечных "маленьких недостатков"
[vba]
Код
Public Sub InsPict()
    Dim fldPath$, art$, fName$, i&, r0&, lrow&, iShape As Shape, Zm, dat
    For Each iShape In ActiveSheet.Shapes
        If iShape.Type <> 8 Then iShape.Delete
    Next
    fldPath = "C:\IMG\" 'ThisWorkbook.Path & "\images\"       'путь к папке с изображениями
    r0 = 2
    lrow = Cells(Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
    On Error Resume Next
    For i = r0 To lrow
        If Cells(i, "A") <> "" Then
            fName = Dir(fldPath & Cells(i, "A") & "\*.jpg")
            dat = FileDateTime(fldPath & Cells(i, "A") & "\" & fName)
            Do While fName <> ""
                fName = fldPath & Cells(i, "A") & "\" & fName
                If FileDateTime(fName) <= dat Then
                    If ActiveSheet.Shapes(ActiveSheet.Shapes.Count).TopLeftCell.Top = ActiveCell.Top Then ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Delete
                    art = Split(fName, ".")(0)
                    With Cells(i, "B")
                        Set iShape = ActiveSheet.Shapes.AddPicture(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
                    dat = FileDateTime(fName)
                End If
                fName = Dir
            Loop
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВот для этого и нужны адекватные файлы-примеры с всеми возможными вариантами исходных данных, чтобы не было этих бесконечных "маленьких недостатков"
[vba]
Код
Public Sub InsPict()
    Dim fldPath$, art$, fName$, i&, r0&, lrow&, iShape As Shape, Zm, dat
    For Each iShape In ActiveSheet.Shapes
        If iShape.Type <> 8 Then iShape.Delete
    Next
    fldPath = "C:\IMG\" 'ThisWorkbook.Path & "\images\"       'путь к папке с изображениями
    r0 = 2
    lrow = Cells(Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
    On Error Resume Next
    For i = r0 To lrow
        If Cells(i, "A") <> "" Then
            fName = Dir(fldPath & Cells(i, "A") & "\*.jpg")
            dat = FileDateTime(fldPath & Cells(i, "A") & "\" & fName)
            Do While fName <> ""
                fName = fldPath & Cells(i, "A") & "\" & fName
                If FileDateTime(fName) <= dat Then
                    If ActiveSheet.Shapes(ActiveSheet.Shapes.Count).TopLeftCell.Top = ActiveCell.Top Then ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Delete
                    art = Split(fName, ".")(0)
                    With Cells(i, "B")
                        Set iShape = ActiveSheet.Shapes.AddPicture(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
                    dat = FileDateTime(fName)
                End If
                fName = Dir
            Loop
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Pelena
Дата добавления - 15.01.2023 в 16:52
DKR Дата: Понедельник, 16.01.2023, 11:19 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Вот для этого и нужны адекватные файлы-примеры с всеми возможными вариантами исходных данных, чтобы не было этих бесконечных "маленьких недостатков"


Здравствуйте.
Да я Вас понимаю и извиняюсь. Просто мне самой сверху спустили это задание, я так же сказала, дайте пример, а мне ответили, что зачем он нужен там же всего два столбика. И в процессе теста или использования могут появится трудности, о которых и не предполагал на момент формирования задачи.

Скрипт работает отлично.
Но как оказалось, я об этом не знала, файл содержит более 50 тыс. номером и при загрузке картинок или сохранении он просто вылетает.
Что бы такого не было, было решено, что бы не все картинки показывались сразу.
Если у Вас есть время можете сделать так, что бы отображалась только та картинка, на строчке которой находится активная ячейка.

Например я перехожу на строчку 5, скрипт читает номер из столбика А и показывает картинку на против в Б, как только я перехожу на другую строчку, например на 10, картинка из строчки 5 исчезает и отображается картинка на против из строчки 10 .
Что бы всегда отображалась одна картинка, той строки которая активна.
 
Ответить
Сообщение
Вот для этого и нужны адекватные файлы-примеры с всеми возможными вариантами исходных данных, чтобы не было этих бесконечных "маленьких недостатков"


Здравствуйте.
Да я Вас понимаю и извиняюсь. Просто мне самой сверху спустили это задание, я так же сказала, дайте пример, а мне ответили, что зачем он нужен там же всего два столбика. И в процессе теста или использования могут появится трудности, о которых и не предполагал на момент формирования задачи.

Скрипт работает отлично.
Но как оказалось, я об этом не знала, файл содержит более 50 тыс. номером и при загрузке картинок или сохранении он просто вылетает.
Что бы такого не было, было решено, что бы не все картинки показывались сразу.
Если у Вас есть время можете сделать так, что бы отображалась только та картинка, на строчке которой находится активная ячейка.

Например я перехожу на строчку 5, скрипт читает номер из столбика А и показывает картинку на против в Б, как только я перехожу на другую строчку, например на 10, картинка из строчки 5 исчезает и отображается картинка на против из строчки 10 .
Что бы всегда отображалась одна картинка, той строки которая активна.

Автор - DKR
Дата добавления - 16.01.2023 в 11:19
Pelena Дата: Понедельник, 16.01.2023, 20:53 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Как-то так
К сообщению приложен файл: 5626498_2.xlsm (20.3 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеКак-то так

Автор - Pelena
Дата добавления - 16.01.2023 в 20:53
DKR Дата: Вторник, 17.01.2023, 10:52 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Как-то так


Спасибо, всё работает, но нужно что бы была активная строчка, а не ячейка
Что бы всегда отображалась одна картинка, той строки которая активна (ц)

Как у Вас будет время подкорректируйте пожааааалуйста
:shy: :shy: :shy:
 
Ответить
Сообщение
Как-то так


Спасибо, всё работает, но нужно что бы была активная строчка, а не ячейка
Что бы всегда отображалась одна картинка, той строки которая активна (ц)

Как у Вас будет время подкорректируйте пожааааалуйста
:shy: :shy: :shy:

Автор - DKR
Дата добавления - 17.01.2023 в 10:52
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставить картинку из папки. (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!