Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/140: Рейтинг темы: голосов - 140, средняя оценка - 4.71
20 / 35 / 14
Регистрация: 08.10.2015
Сообщений: 406
1

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

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

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

Есть два столбца: 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2017, 18:22
Ответы с готовыми решениями:

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

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

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

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

5
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.10.2017, 19:46 2
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
20 / 35 / 14
Регистрация: 08.10.2015
Сообщений: 406
08.10.2017, 12:41  [ТС] 3
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
4134 / 2238 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
08.10.2017, 13:00 4
Лучший ответ Сообщение было отмечено 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
20 / 35 / 14
Регистрация: 08.10.2015
Сообщений: 406
09.10.2017, 11:10  [ТС] 5
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 6
pashulka, pashulka, ребят, ничего подходящего не нахожу...мне нужно по условиям из выпадающих списков строить схемы..картинка в колонке Форма просто для южера...как выглядит....строить нужно из элементов.
пробывал макрокордером....не понял как к это перенять



Visual Basic
1
2
ActiveSheet.Shapes.AddShape(msoShapeFlowchartDecision, 545.25, 39, 72, 48.24). _
        Select
0
10.06.2020, 13:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2020, 13:48
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru