السلام عليكم ورحمة الله وبركاته
كل عام وانتم بخير
دالة kh_ShowImage
دالة تمكنك من وضع صورة داخل شكل تلقائي اتوماتيكيا
يمكنك تغيير اسم او مسار مجلد الصور من داخل كود الدالة
وسائط الدالة NameImag اسم الصورة افتراضي ImagRng خلية وضع الصورة افتراضي MyWidth عرض الصورة اختياري MyHeight طول الصورة اختياري
ـ اذا لم تحدد طول او عرض معين للصورة تاخذ الصورة عرض وطول
الخلية الموضوعة فيها ImagRng
ـ اذا قمت بتحريك الصورة يدويا تفقد الصورة ارتباطها بالدالة
وعند تحديث الدالة تقوم باضافة الصورة مرة اخرى في مكانها المحدد في الدالة
كود الدالة:
Option Explicit
Option Compare Text
'=============================================
' عرض صورة في الخليةِ
' Showing an image in cell
'=============================================
' اسم مجلد الصور
' اذا كان مجلد الصور في نفس مجلد ملف الاكسل
' اكتب اسمه فقط
' والا اكتب المسار كاملا
' "D:\MyDocument\MyFunction\photo"
Private Const kh_pic As String = "MyImeg"
'=============================================
' امكانية تحرير اي نوع من الصور لديك ادناه
Private Const MyTyp As String = ".jpg,.bmp,.gif,.png,.tif"
'=============================================
'=============================================
Function kh_ShowImage(ByVal NameImag, ByVal ImagRng As Range, Optional ByVal MyWidth As Single, Optional ByVal MyHeight As Single)
Dim Tp
Dim shp As Shape
Dim ibo As Boolean
Dim MyTop As Single, MyLeft As Single
Dim MyFile As String, MyPath As String
'----------------------------------
On Error GoTo 1
'----------------------------------
MyTop = ImagRng.Top: MyLeft = ImagRng.Left
With ImagRng.Worksheet
For Each shp In .Shapes
If shp.Top = MyTop And shp.Left = MyLeft Then
shp.Delete: Exit For
End If
Next shp
End With
'-----------------------------------
If IsEmpty(NameImag) Then GoTo 1
'-----------------------------------
If MyWidth = 0 Then MyWidth = ImagRng.Width
If MyHeight = 0 Then MyHeight = ImagRng.Height
'-----------------------------------
If Not InStr(kh_pic, ":") Then MyPath = ThisWorkbook.path & "\"
MyFile = MyPath & kh_pic & "\" & CStr(NameImag)
'-----------------------------------
For Each Tp In Split(MyTyp, ",")
If Not Dir(MyFile & Trim(Tp), vbDirectory) = vbNullString Then
With ImagRng.Worksheet.Shapes.AddShape(msoShapeRectangle, MyLeft, MyTop, MyWidth, MyHeight)
.Fill.UserPicture MyFile & Trim(Tp)
End With
ibo = True
Exit For
End If
Next
1
kh_ShowImage = ibo
End Function
المرفق 2003-2010
دالة عرض صورة في خلية بطول وعرض اختياري.rar