اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

بارك الله فيك اخي علي الشيخ 

ولكن اخي انا اريد كود برمجي لاستدعاء الصورة من مجلد مرفق مع ملف شيت العمل 

كان لدي كود في السابق ولكن كان يوجد فيه اخطاء كثير في ضبط حواف الصورة وتكبير وتصغيرها حسب الخلايا المدمجة 

شكرا لك على ردك وننتظر المزيد من اخواني في المنتدى .

ولكم تحياتي

قام بنشر

السلام عليكم ورحمة الله وبركاته 

لدي الكود السابق ولكن لايعمل عند دمج الخلايا وتظهر الصورة بشكل صغير 

 

Function empphoto(PicName)
Dim CurrentCel As Range, Pic As Shape
PicName = PicName: MyPath = ThisWorkbook.Path & "\Picture\": PicName = MyPath & PicName: ChkPic = Array(".jpg", ".bmp", ".gif", ".png")
Set CurrentCel = Application.Caller
For Each Pic In ActiveSheet.Shapes
    If Pic.Type = msoLinkedPicture Then
        If Pic.Top >= CurrentCel.Top And Pic.Top < CurrentCel.Top + CurrentCel.Height Then
            Pic.Delete
            Exit For
        End If
    End If
Next
For X = LBound(ChkPic) To UBound(ChkPic)
    If Not Dir(PicName & ChkPic(X), vbDirectory) = vbNullString Then
        Set Pic = ActiveSheet.Shapes.AddPicture(PicName & ChkPic(X), True, False, CurrentCel.Left, CurrentCel.Top, CurrentCel.Width, CurrentCel.Height): empphoto = ""
        Exit For
    Else
        empphoto = ""
    End If
Next
End Function

ارجو المساعدة..

 

 

 

 

قام بنشر

السلام عليكم ورحمة الله وبركاته 

لدي الكود السابق ولكن لايعمل عند دمج الخلايا وتظهر الصورة بشكل صغير 

 

Function empphoto(PicName)
Dim CurrentCel As Range, Pic As Shape
PicName = PicName: MyPath = ThisWorkbook.Path & "\Picture\": PicName = MyPath & PicName: ChkPic = Array(".jpg", ".bmp", ".gif", ".png")
Set CurrentCel = Application.Caller
For Each Pic In ActiveSheet.Shapes
    If Pic.Type = msoLinkedPicture Then
        If Pic.Top >= CurrentCel.Top And Pic.Top < CurrentCel.Top + CurrentCel.Height Then
            Pic.Delete
            Exit For
        End If
    End If
Next
For X = LBound(ChkPic) To UBound(ChkPic)
    If Not Dir(PicName & ChkPic(X), vbDirectory) = vbNullString Then
        Set Pic = ActiveSheet.Shapes.AddPicture(PicName & ChkPic(X), True, False, CurrentCel.Left, CurrentCel.Top, CurrentCel.Width, CurrentCel.Height): empphoto = ""
        Exit For
    Else
        empphoto = ""
    End If
Next
End Function

ارجو المساعدة..

 

 

 

 

قام بنشر

الأخ الكريم ياسين أبو وسام

مشكور على هذا الملف الجميل الرائع

إليك الملف التالي بعد التعديل الكبيـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــر الذي قمت به لعمل المطلوب (لو عرفت التعديل هتحتقرني والله :yes: )

جرب وأعلمني بالنتيجة

Insert Photo UDF Function Wesam.rar

  • Like 1
قام بنشر (معدل)

الأخ الكريم ياسين أبو وسام

مشكور على هذا الملف الجميل الرائع

إليك الملف التالي بعد التعديل الكبيـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــر الذي قمت به لعمل المطلوب (لو عرفت التعديل هتحتقرني والله :yes: )

جرب وأعلمني بالنتيجة

حي الله ابو البراء واخيرا اسعدني مرورك وكنت في انتظارك :) 

بس للاسف يا الغالي المرفق ما عما يتحمل ؟؟؟ 

hm5NOX.png

تم تعديل بواسطه ياسين ( أبو وسام )
قام بنشر

بسم الله ماشاء الله عليك ( رائع انت يا أبو البراء ) تم تحميل المرفق ومراجعة الكود من والى النهاية والتعديل كان في :-

 

السابق :

 Set Pic = ActiveSheet.Shapes.AddPicture(PicName & ChkPic(X), True, False, CurrentCel.Left, CurrentCel.Top, CurrentCel.Width, CurrentCel.Height ): empphoto = ""

بعد التعديل الكبير الذي استغرق الوقت الطويل والعناء وانا اشكرك على هذا المجهود الجبار :)

 Set Pic = ActiveSheet.Shapes.AddPicture(PicName & ChkPic(X), True, False, CurrentCel.Left, CurrentCel.Top, CurrentCel.Width, CurrentCel.Height * 8): empphoto = ""
      

اما الان اود تعديل اخر بسيط عند دمج الخلايا مرة اخرى العمودية والافقية

لم ينجح الكود في تحديد الصورة في الاطار المطلوب 

 

GIcvju.png

 

 

مرفق عينة

 

 

Insert Photo UDF Function Wesam.rar

قام بنشر

جرب تغير في إحداثيات الارتفاع والعرض بما يناسبك

        Set Pic = ActiveSheet.Shapes.AddPicture(PicName & ChkPic(X), True, False, CurrentCel.Left, CurrentCel.Top, CurrentCel.Width * 13, CurrentCel.Height * 19): empphoto = ""

وإنت غير براحتك في الأرقام إلى أن تجد أفضل ضبط للصورة

  • تمت الإجابة
قام بنشر

الأخ الكريم أبو وسام

بعد عدة محاولات فاشلة والحمد لله تم التعديــــــــــــــــــل الكبيــــــــــــــــــــــــــــــــــر الذي سيحدث ثورة في الكود

جرب السطر بهذا الشكل

Set CurrentCel = Application.Caller.MergeArea

يعني ببساطة ضيف هذا الجزء فقط

.MergeArea

بدون أن تعدل في الأرقام شوف الدنيا ماشية معاك إزاي

قام بنشر

السلام عليكم ورحمة الله وبركاته

 

أخي الغالي أبو البراء 

 

 الكود يعمل بشكل ممتاز وهذا ما كنت اريده 

 

ما شاء الله عليك فعلا استاذ الله يجعل هذا العمل في ميزان حسناتك 

 

ولكم تحياتي 

  • Like 1
قام بنشر

وعليكم السلام ورحمة الله وبركاته

أخي الكريم ياسين ..

الحمد لله أن تم المطلوب على خير ، ومشكور على تحديد أفضل إجابة ليظهر الموضوع مجاب

 

عايزين نستفيد درس بسيط . إن ممكن يكون الحل بسيط جداً بس محدش بياخد باله منه (شفت الموضوع الكبير الطويل العريض ده عشان كلمة واحدة MergeArea)

تقبل تحياتي

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information