Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/163: Рейтинг темы: голосов - 163, средняя оценка - 5.00
 Аватар для Aumi
20 / 36 / 14
Регистрация: 08.10.2015
Сообщений: 406

Вставка картинки в ячейку программно

07.10.2017, 18:22. Показов 30293. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Есть два столбца: id, рисунок
имя картинки состоит из id. Например, id=111, а рисунок 111.jpg.
Я установила высоту строки=200,
Мой код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub insPic()
 
   Application.ScreenUpdating = False
 
Dim BookID As String, T As String, myDir As String
 
myDir = "C:\Users\user\Pictures\"
ID = Range("A1")
T = ".jpg"
 
ActiveSheet.Shapes.AddPicture Filename:=myDir & ID & T, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=ActiveCell.Left, Top:=ActiveCell.Top, Width:=200, Height:=200
 
Application.ScreenUpdating = True
Дело в том, что картинка вставится в выделенную ячейку. Как сделать, чтобы картинка была в В2?

Было бы вообще замечательно, если подскажите,как сделать так, чтобы циклом вставлялись картинки? ID будут в А1-А10,а рисунки их соответсвенно в В1-В10. Макрос или процедура неважно.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2017, 18:22
Ответы с готовыми решениями:

Вставка картинки в ячейку
Добрый день! Проблема такая. Есть динамический список , названия в нём меняются , к каждому названию своя маленькая картинка размер с...

Изменение почтового шаблона, вставка графики в письмо (типа логотипа) + вставка картинки в шаблоне
Здравствуйте) Возникло 2 вопроса. 1)Хочется сделать красивый почтовый шаблон с использованием графики. Возможно ли сделать это...

Вставка таблицы в ячейку БД
Помогите пожалуйста разобраться, мне нужно сделать, что бы в ячейке БД хранилась таблица (ексель наверное) то есть так: Есть бд, с...

5
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.10.2017, 19:46
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Test()
   Application.ScreenUpdating = False
   Dim iPath$, iCell As Range
   iPath = "C:\Users\User\Pictures\"
   For Each iCell In [A1:A10]
       With ActiveSheet.Pictures.Insert(iPath & iCell & ".jpg")
            .Top = iCell(1, 2).Top:     .Left = iCell(1, 2).Left
            .Width = iCell(1, 2).Width: .Height = iCell(1, 2).Height
       End With
    Next
    Application.ScreenUpdating = True
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Test2()
   Application.ScreenUpdating = False
   Dim iPath$, iCell As Range
   iPath = "C:\Users\User\Pictures\"
   For Each iCell In [A1:A10]
       ActiveSheet.Shapes.AddPicture iPath & iCell & ".jpg", _
       False, True, iCell(1, 2).Left, iCell(1, 2).Top, iCell(1, 2).Width, iCell(1, 2).Height
    Next
    Application.ScreenUpdating = True
End Sub
Если не хотите, чтобы исходные размеры картинок менялись, то в первом варианте уберите .Width и .Height, а во втором, вместо ширины и длины ячейки просто укажите -1
Если же размеры картинки всё же нужно подогнать под размеры ячеек, то определять каждый раз ширину столбца в цикле, не имеет особого смысла, проще говоря, это можно сделать один раз (перед циклом), а затем использовать полученное значение.
1
 Аватар для Aumi
20 / 36 / 14
Регистрация: 08.10.2015
Сообщений: 406
08.10.2017, 12:41  [ТС]
pashulka,Благодарю вас за ответ!
Тут дело поменялось, сумеете помочь? Хотят, чтобы это была процедура. Чтобы в ячейке прописывалась формула и вниз тянули.
Не подскажите, как преобразовать? Я начала, вот только не знаю, как возвращаемое значение приткнуть

Visual Basic
1
2
3
4
5
6
7
8
9
10
 Public Function Pic(v)
   Application.ScreenUpdating = False
   Dim iPath$, iCell As Range
   iPath = "C:\Users\User\Pictures\"
 '  For Each iCell In [A1:A2]
       ActiveSheet.Shapes.AddPicture iPath & v & ".jpg", _
       False, True, iCell(1, 2).Left, iCell(1, 2).Top, iCell(1, 2).Width, iCell(1, 2).Height
  '  Next
    Application.ScreenUpdating = True
End Function
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
08.10.2017, 13:00
Лучший ответ Сообщение было отмечено Aumi как решение

Решение

Visual Basic
1
2
3
4
Public Function Pic(c As Range)
    ActiveSheet.Shapes.AddPicture "C:\Users\User\Pictures\" & c & ".jpg", _
    False, True, c(1, 2).Left, c(1, 2).Top, c(1, 2).Width, c(1, 2).Height
End Function

Если хотите импортировать картинку с привязкой к ячейке с UDF, то :

Visual Basic
1
2
3
4
5
6
7
Public Function Pic(c As Range)
    With Application.Caller 'Application.ThisCell
         ActiveSheet.Shapes.AddPicture _
         "C:\Users\User\Pictures\" & c & ".jpg", _
         False, True, .Left, .Top, .Width, .Height
    End With
End Function
1
 Аватар для Aumi
20 / 36 / 14
Регистрация: 08.10.2015
Сообщений: 406
09.10.2017, 11:10  [ТС]
pashulka, Оба варианта не хотят всавлять картинки.
если я в ячейке пишу =Pic(A1) ,то ошибка значении,
а если второй вариант, то Ошибка-неправильная ссылка на ячейку

Добавлено через 1 час 4 минуты
В первом варианте работает этот
Visual Basic
1
2
3
4
Public Function Pic(c) As Range
     ActiveSheet.Shapes.AddPicture "C:\Users\User\Pictures\" & c & ".jpg", _
    False, True, c(1, 2).Left, c(1, 2).Top, c(1, 2).Width, c(1, 2).Height
End Function
Но не получается тянуть формулу вниз.
Каждый раз приходится прописывать формулу в В1 и В2

Добавлено через 28 минут
Поняла в чем ошибка, короче формулу нужно писать в соседнем столбце, тогда все тянется вниз и картинки вставляются
0
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 828
10.06.2020, 13:48
pashulka, pashulka, ребят, ничего подходящего не нахожу...мне нужно по условиям из выпадающих списков строить схемы..картинка в колонке Форма просто для южера...как выглядит....строить нужно из элементов.
пробывал макрокордером....не понял как к это перенять



Visual Basic
1
2
ActiveSheet.Shapes.AddShape(msoShapeFlowchartDecision, 545.25, 39, 72, 48.24). _
        Select
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2020, 13:48
Помогаю со студенческими работами здесь

Вставка формулы в ячейку с переменной
Доброго времени суток. Есть код: Worksheets("Лист2").Cells(i + 5, n - 8 + 1).FormulaR1C1 = "=SUM(RC:RC)", но вместо R, а точнее даже...

Вставка значения Value в ячейку Excel
Помогите пожалуйста вывести значение Value (SpinButon и ScrollBar) в ячейку листа Excel

Вставка рисунка в ячейку таблицы
Сабж, как это сделать? Картинка позиционируется поверх ячейки, неудобно вручную подгонять размер ячейки, а после ещё и вручную выравнивать...

Вставка combobox в ячейку stringgrid
Для вставки combobox в в ячейку stringgrid в событии OnSelectCell Stringgrid пишется код ниже (нашёл в интернете). Но при выделении...

Автопоиск и вставка в ячейку текст
Здраствуйте.. Колонка А1іВ1(лист1) поиск в (лист2) колонка А1 і вставить колонку В1 (лист1) с значением колонки А1 в (лист 2) в колонку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru