Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 17:24   #1
bambey
Новичок
Джуниор
 
Регистрация: 11.01.2010
Сообщений: 2
По умолчанию Вставка изображения

Привет всем.

Проблемка такая мне надо что бы через VBA вставлялось изображение в определённую ячейку или рядом с ней...за координаты желательно брать значения cells.

Кто подкинет материал по данной теме а то пытался записать макрос чёт не хочет..
bambey вне форума Ответить с цитированием
Старый 11.01.2010, 17:34   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А если воспользоваться поиском?

http://www.programmersforum.ru/showthread.php?t=58554
http://www.programmersforum.ru/showp...1&postcount=13
http://www.programmersforum.ru/showp...28&postcount=6


Код:
Sub ПримерИспользования()
    ВставитьКартинку Cells(2, 5), "C:\Documents and Settings\Игорь\Рабочий стол\Скриншоты\123.jpg"
    ВставитьКартинку [d12], "C:\Documents and Settings\Игорь\Рабочий стол\P1120547.jpg"
End Sub

Function ВставитьКартинку(ByRef cell As Range, ByVal Pic As String) As Boolean
    ' получает в качестве параметра ссылку на ячейку для вставки
    ' и путь к файлу с картинкой.
    ' если картинка вставлена успешно, возвращает TRUE
    On Error Resume Next: Err.Clear
    Dim ph As Picture: Set ph = cell.Parent.Pictures.Insert(Pic)
    ВставитьКартинку = Err.Number = 0
    ph.Top = cell.Top: ph.Left = cell.Left: k = ph.Width / ph.Height
    ph.Width = cell.Width: ph.Height = ph.Width / k
    cell.EntireRow.RowHeight = ph.Height
End Function

=============== добавлено позже ====================

У меня на сайте есть готовая программа для вставки изображений на лист Excel:
http://excelvba.ru/programmes/PastePictures


Цитата:
Надстройка позволяет искать в выбранной папке изображения, основываясь на содержимом ячеек таблицы Excel, и производить вставку найденных изображений в соседние ячейки (или в примечания к этим ячейкам).

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





Особенности надстройки вставки изображений:
  • загрузка изображений по ссылкам (обычная гиперссылка, просто текст ссылки - URL, формула =ГИПЕРССЫЛКА(), и т.п.)
  • поиск картинок в подпапках заданной папки (глубина поиска по подпапкам не ограничена)
  • установка выбранного пользователем размера для вставляемых изображений
  • отображение состояния поиска и вставки изображений (прогресс-бар)
  • вывод результатов обработки таблицы (сколько изображений вставлено, сколько не найдено)
  • добавление гиперссылок к вставляемым изображениям (по щелчку на картинке открывается исходный файл)
  • 2 режима поиска файлов - по точному совпадению имени файла, и по началу имени файла-изображения
  • 2 режима вставки картинок - подгонка размеров под ячейку, или соблюдение пропорций исходного изображения
  • вывод количества файлов в выбранной папке
  • возможность выбора столбца с названиями файлов, и указания номера столбца для вставляемых изображений
  • возможность вставки изображений в комментарии к ячейкам




Запуск вставки изображений выполняется из меню программы (на панели инструментов)

Надстройка вставки картинок в Excel теперь поддерживает обновления - поэтому отныне надстройка будет регулярно получать новые полезные функции.

Новый функционал будет добавляться в надстройку по мере поступления ваших пожеланий.

Последний раз редактировалось EducatedFool; 06.10.2012 в 15:00.
EducatedFool вне форума Ответить с цитированием
Старый 11.01.2010, 21:52   #3
bambey
Новичок
Джуниор
 
Регистрация: 11.01.2010
Сообщений: 2
По умолчанию

Спасибо не подумал...

Вы используете для создания рисунки а можно вместо рисунков создавать activex рисунок так как
Код:
с ним проще работать через ActiveSheet.Shapes(i).Select
Или же есть для рисунков какое нить такое свойство?
bambey вне форума Ответить с цитированием
Старый 11.01.2010, 23:33   #4
Kuraj
Пользователь
 
Регистрация: 04.01.2010
Сообщений: 20
По умолчанию

Используй
Код:
ActiveSheet.Shapes.AddPicture "путь".Value, True, True, 97, 7, 85, 114
как подровнять рисунок смотри постом выше и вставляй эти значения вместо цифр так удобнее работать будет.

И эт такой маленький вопросик как свернуть с помощье VBA ленту которая в 2007 офисе?
Kuraj вне форума Ответить с цитированием
Старый 12.01.2010, 07:39   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от bambey Посмотреть сообщение
Спасибо не подумал...

Вы используете для создания рисунки а можно вместо рисунков создавать activex рисунок так как
Код:
с ним проще работать через ActiveSheet.Shapes(i).Select
Или же есть для рисунков какое нить такое свойство?
К примеру, ph - это вставленная картинка (объект типа Picture)
Получить объект типа Shape можно так:
Код:
Worksheet.Shapes(ph.Name)
Код:
Sub ПримерИспользования()
    путь = "D:\фотоаппарат\photo.JPG"
    Dim sha As Shape: Set sha = ВставитьКартинку([d12], путь)
End Sub

Function ВставитьКартинку(ByRef cell As Range, ByVal Pic As String) As Shape
' получает в качестве параметра ссылку на ячейку для вставки
' и путь к файлу с картинкой.
' если картинка вставлена успешно,
' возвращает ссылку на картинку - объект типа SHAPE
    On Error Resume Next: Err.Clear
    Dim ph As Picture: Set ph = cell.Parent.Pictures.Insert(Pic)
    Set ВставитьКартинку = cell.Worksheet.Shapes(ph.Name)
    ph.Top = cell.Top: ph.Left = cell.Left: k = ph.Width / ph.Height
    ph.Width = cell.Width: ph.Height = ph.Width / k
    cell.EntireRow.RowHeight = ph.Height
End Function
EducatedFool вне форума Ответить с цитированием
Старый 12.01.2010, 07:42   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от Kuraj Посмотреть сообщение
И эт такой маленький вопросик как свернуть с помощье VBA ленту которая в 2007 офисе?
А что, нельзя воспользоваться поиском?
http://www.programmersforum.ru/showthread.php?t=69070
EducatedFool вне форума Ответить с цитированием
Старый 18.11.2010, 11:52   #7
Akmal-Sharipov
Пользователь
 
Регистрация: 18.11.2010
Сообщений: 30
По умолчанию

Здравствуйте!
Помогите пожалуйста, есть проблема.
Нужно создать макрос чтобы он отвечал следующим требованиям:
в ячейке введено имя картинки соответственно под это имя нужно подставить эту картинку. Картинок много более 1000. Нужно чтоб при нажатии кнопки выводилась та картинка чье имя находится в активной ячейке, т.е. при отмеченной ячейке нажать на кнопку и картинка открывалась как бы в всплывающем окне, а потом исчезало.
EducatedFool хотел к Вам обратится, воспользовался вашим макросом, просто супер, только открывает сразу все картинки, а хотелось бы которая в активной ячейке. Всем заранее спасибо!
Akmal-Sharipov вне форума Ответить с цитированием
Старый 18.11.2010, 12:22   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Нужно чтоб при нажатии кнопки выводилась та картинка чье имя находится в активной ячейке, т.е. при отмеченной ячейке нажать на кнопку и картинка открывалась как бы в всплывающем окне, а потом исчезало.
Не это ищете?
http://www.programmersforum.ru/showp...94&postcount=5
EducatedFool вне форума Ответить с цитированием
Старый 19.11.2010, 12:55   #9
Akmal-Sharipov
Пользователь
 
Регистрация: 18.11.2010
Сообщений: 30
По умолчанию

Посмотрел спасибо, в принципе подойдет, хотя при заполнении других ячеек фото мешает и при добавлении других картинок они не открываются. Окно открывается а фото нет. Нельзя ли дать команду кнопке чтоб просматривать когда понадобится картинка, а когда нет пусть лист без картинки? А то заполнять ячейки еще надо.
Akmal-Sharipov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка изображения с RichEdit в RichEdit Sensizu Компоненты Delphi 2 01.10.2009 18:11
Вставка объектов KinderX Microsoft Office Excel 5 22.09.2009 05:13
Вставка изображения на определенную страницу. Seqular Microsoft Office Word 2 29.08.2009 14:09
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Изображения в БД alikon1 БД в Delphi 3 08.10.2007 13:13