Страницы: 1
RSS
UserPicture метод. вставка картинки с листа в фигуру листа
 
Добрый вечер. Такая проблема возникла.
Не получается залить текстурой фигуру на листе
в ячейке а1 лежит картинка
Код
Sub Макрос1()
 ActiveSheet.Shapes.Range(Array("картинка")).Fill.UserPicture Cells(1, 1)
End Sub
Если вместо Cells(1, 1) вставить путь, ActiveSheet.Shapes.Range(Array("картинка")).Fill.UserPicture "C:\картинка.jpg"
то все срабатывает.
Прошу помощи.
 
может так?
Код
With ActiveSheet
    .Shapes.Range(Array("картинка")).Fill.UserPicture .Cells(1, 1).Value
End With
Согласие есть продукт при полном непротивлении сторон
 
Сначала сохраняем картинку с листа в файл, потом из файла в заливку фигуры
(можно и напрямую, - но там будет очень много сложного кода, лучше не пытаться)
 
Sanja,так тоже ошибка. Придется сохранять с листа в файл. Печалька однако. Видимо работа с графикой не самая сильная сторона эксель.
Игорь, аж страшно подумать сколько там кода. Вы  к тому что "овчинка выделки не стоит"?
 
Чтобы темы не плодить, есть вопрос по заливке ячеек цветами из картинок. Задача : имеется палитра Ral в виде группы файлов. Хочется чем то типа пипетки как в CorelDraw снять с картинки код пикселия RGB. Возможно ли? Или это задача для макросов того же Coreldraw?
 
Цитата
снять с картинки код пиксели RGB
можно, если картинка формата BMP
пример кода есть здесь
http://excelvba.ru/code/Bitmap2Sheet

Цитата
Придется сохранять с листа в файл
это несложно, если выгружать через диаграмму
примерно так:
Код
Set pic = ActiveSheet.DrawingObjects(1)
pic.Copy
With ActiveSheet.ChartObjects.Add(0, 0, pic.Width, pic.Height).Chart
    .Paste
    .Export "c:\1.jpg", "JPG"
End With


Способ не лучший, так как результат зависит от версии Excel (могут рамки к картинке добавиться)
Но качественный способ (через WinAPI) - это под 100 строк кода
 
Игорь, у  меня 7-64.
А как правильно задекларировать это:
Код
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Не сочтите за наглость..
 
примерно так:

Код
Declare PtrSafe Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As LongPtr, ByVal nCount As Long, lpObject As Any) As LongPtr
Declare PtrSafe Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As LongPtr, ByVal dwCount As Long, lpBits As Any) As Long
Declare PtrSafe Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As LongPtr, ByVal dwCount As Long, lpBits As Any) As Long
 
Спасибо! Буду вникать.
Страницы: 1
Наверх