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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2010, 15:09   #1
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию загрузить картинку с листа Excel в image на форме

Формирую листы отчета
вместе с данными на листе в определенной ячейке .range("o1") прикрепляется изображение.

программно открываю отчет данные загружаются в форму, в форме есть пустой image нужно чтоб из известной ячейки в image загружалось изображение!
как будет выглядеть код?

провел такой эксперимент
если в листе на картинке сделать CTRL+C(копировать) а потом открыть редактор vba, выбрать мой image и для него в поле picture(свойства) сделать CTRL+V (вставить)
то картинка вставляется в image
и в поле picture появляется надпись (Metafile) вместо привычного (Bitmap)

как это реализовать кодом?
pooli вне форума Ответить с цитированием
Старый 20.10.2010, 00:51   #2
pooli
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 45
По умолчанию

сам и отвечу.

выгружаем картинку в темп винды, а затем ее оттуда берем.


Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function GetClipboardData Lib "user32.dll" (ByVal wFormat As Long) As Long
Private Declare Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long

Const CF_ENHMETAFILE As Long = 14

Sub GetPictures()

Dim PShape As Shape, hStrPtr As Long

For Each PShape In ActiveSheet.Shapes

If PShape.Type = msoPicture Then

PShape.CopyPicture

If Not CBool(OpenClipboard(0)) Then
MsgBox "Не удалось открыть буфер"
GoTo NextSh
End If

hStrPtr = GetClipboardData(CF_ENHMETAFILE)




If Not CBool(hStrPtr) Then
MsgBox "Не удалось получить дескриптор"
GoTo CloseClip
End If

If Not CBool(CopyEnhMetaFile(hStrPtr, "C:" & "\" & "WINDOWS" & "\" & "Temp" & "pic" & hStrPtr & ".jpg")) Then

MsgBox "Не удалось создать файл"

Else

Image1.Picture = LoadPicture("C:" & "\" & "WINDOWS" & "\" & "Temp" & "pic" & hStrPtr & ".jpg")

Image1.Picture.PictureSizeMode = 1


GoTo CloseClip
End If

CloseClip:

CloseClipboard

NextSh:

End If

Next

End Sub
pooli вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как загрузить картинку из интернета пауэрлифтинг Работа с сетью в Delphi 6 02.08.2010 16:49
Загрузить картинку по URL в RichView Shouldercannon Общие вопросы Delphi 4 23.06.2010 13:26
как загрузить в paintbox картинку? blackstersl Общие вопросы Delphi 7 05.06.2009 18:20
Как загрузить картинку? Editor Работа с сетью в Delphi 11 15.07.2008 23:13
из интернета картинку в имедж загрузить? Лёка Работа с сетью в Delphi 4 13.01.2008 14:35