اذهب الي المحتوي
أوفيسنا

كود عرض صورة الموظف حسب الرقم الوظيفي


إذهب إلى أفضل إجابة Solved by ياسر خليل أبو البراء,

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

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

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

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

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

ولكم تحياتي

رابط هذا التعليق
شارك

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

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

 

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