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

كود انشاء صفحه مثل صفحه موجوده


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

السلام عليكم اخوانى الكرام 

اريد مساعدتكم فى انشاء كود لانشاء صفحه لكل مكتب من المكاتب المدرجه ويكون نسخه من النموذج المرفق وبجميع تنسيقاته وحماياته وان يتم كتابة اسم الشيت هو اسم المكتب على ان يقوم الكود عند تشغيله مره اخرى اذا كان قد تم انشاء المكاتب فلا يقوم بائنشائها مره اخرى ويضيف مالم يتم انشائه إن وجد ثم يقوم بعمل هايبر لينك بين اسم المكتب المدرج بالجدول والصفحه اللتى تم انشائها باسم المكتب

ارجو معذرتى على كثرة الطلبات والاطاله 

جزاكم الله خيراً

تجزئه.rar

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

أخي الكريم أحمد

يرجى عند إرفاق ملف أن تقوم بوضع كلمات السر لأوراق العمل والمصنف

حاولت البدء في حل مشكلتك ولكن ظهرت لي رسالة بأن المصنف محمي ..فما هي كلمة الحماية للمصنف؟

 

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

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

بعد اذن أخى الحبيب ياسر خليل

تفضل أخى

جرب الكود التالى

Sub ragab()
Dim cl As Range, sh As Worksheet
Dim ws As Worksheet
'=======================================
Set sh = Sheets("الرئيسيه")
Set ws = Sheets("النموذج")
'=======================================
Application.ScreenUpdating = False
ThisWorkbook.Unprotect "123"
ws.Unprotect "123"
'=======================================
For Each cl In sh.Range("D4:R7")
    If Not IsEmpty(cl) Then
        x = Trim(cl)
        On Error Resume Next
        If Worksheets(x) Is Nothing Then
            Sheets.Add.Name = x
            Sheets(x).Move After:=Sheets(Sheets.Count)
            ws.Range("A1:k36").Copy
             With Sheets(x)
                 .Select
                 .Paste
                 .Protect "123"
             End With
        End If
   End If
Next
'=======================================
Application.CutCopyMode = False
ThisWorkbook.Protect "123"
ws.Protect "123"
Sheets("الرئيسيه").Select
Application.ScreenUpdating = False
End Sub

 

تجزئه2.rar

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

جزاك الله كل خير اخى رجب 

فى جزئيه اخيره انه يتم عمل هايبر لينك بين كل اسم وصفحته 

واسف انى بتعبكم 

جزاكم الله كل خير اخوانى الكرام

13 دقائق مضت, رجب جاويش said:

 

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

أخي الكريم أحمد

لقد سبقني المعلم الكبير رجب بالحل .. ولكن بالفعل أن كنت مجهز حل من بدري لكن كان ينقصني فقط كلمة السر لإضافتها للكود ..

عموماً الحل قريب جداً من الحل المقدم من أخونا الغالي رجب ..فقط اختلاف بسيط ، وإليك الكود إثراءً للموضوع لا أكثر

Sub CreateSheets()
    Dim Cel As Range, strCel As String
    
    Application.ScreenUpdating = False
        ThisWorkbook.Unprotect 123
        Sheet2.Unprotect 123
        
            For Each Cel In Sheet1.Range("D4:R" & Sheet1.Cells(Rows.Count, 4).End(xlUp).Row)
                strCel = Trim(Cel.Value)
                If strCel <> "" Then
                    If Not Evaluate("ISREF('" & strCel & "'!A1)") Then
                        Sheet2.Copy After:=Sheets(Sheets.Count)
                        ActiveSheet.Name = strCel
                        
                        Cel.Hyperlinks.Add Cel, "", , "Screen_Tip", strCel
                        Cel.Hyperlinks(1).SubAddress = "'" & strCel & "'" & "!A1"
                        
                        ActiveSheet.Protect 123
                    End If
                End If
            Next Cel
            
        ThisWorkbook.Protect 123
        Sheet2.Protect 123
    Application.ScreenUpdating = True
    
    MsgBox "Done ...", 64
End Sub

تقبل تحياتي

Create Sheets By Cells In Range & Add Hyperlinks YasserKhalil.rar

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

أخي الكريم مهند الزيدي

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

Sub CreateSheets()
    'تعريف المتغيرات
    Dim Cel As Range, strCel As String
    
    'إلغاء خاصية تحديث الشاشة لتسريع عمل الكود
    Application.ScreenUpdating = False
        'إزالة الحماية عن المصنف بكلمة السر المرفقة
        ThisWorkbook.Unprotect 123
        'إزالة الحماية عن ورقة العمل التي تمثل النموذج المراد نسخه
        Sheet2.Unprotect 123
            
            'حلقة تكرارية لكل الخلايا في النطاق المطلوب إنشاء أوراق عمل لكل خلية من خلاياه
            For Each Cel In Sheet1.Range("D4:R" & Sheet1.Cells(Rows.Count, 4).End(xlUp).Row)
                'إزالة المسافات الزائدة من الخلية
                strCel = Trim(Cel.Value)
                
                'إذا لم تكن الخلية فارغة يتم تنفيذ الأسطر التالية أما إذا كانت فارغة يتم الانتقال للخلية التالية
                If strCel <> "" Then
                    'شرط لاختبار وجود ورقة العمل من عدم وجودها ، فإذا لم تكن ورقة العمل موجودة من قبل يتم تنفيذ التالي
                    If Not Evaluate("ISREF('" & strCel & "'!A1)") Then
                        'نسخ ورقة العمل النموذج في نهاية المصنف
                        Sheet2.Copy After:=Sheets(Sheets.Count)
                        'تسمية ورقة العمل التي تم نسخها باسم الخلية التي عليها العمل في الحلقة
                        ActiveSheet.Name = strCel
                        
                        'إنشاء ارتباط تشعبي للخلية لربطها بالورقة التي تم إنشائها
                        Cel.Hyperlinks.Add Cel, "", , "Screen_Tip", strCel
                        Cel.Hyperlinks(1).SubAddress = "'" & strCel & "'" & "!A1"
                        
                        'حماية ورقة العمل الجديدة التي تم نسخها
                        ActiveSheet.Protect 123
                    End If
                End If
            Next Cel
        
        'إرجاع الحماية للمصنف
        ThisWorkbook.Protect 123
        'إرجاع الحماية لورقة العمل النموذج
        Sheet2.Protect 123
        
    'إعادة تفعيل خاصية تحديث الشاشة
    Application.ScreenUpdating = True
    
    'رسالة تفيد بانتهاء عمل الكود كنوع من التنبيه لا أكثر
    MsgBox "Done ...", 64
End Sub

تقبل تحياتي

 

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

أخي الكريم مهند

كلمة "جزاكم الله خيراً" وقعها في نفسي وأجرها أفضل من كلمة الشكر .. إحنا من الآخر عايزين حسنات ودعوات (أفيضوا علينا بدعواتكم المباركة علها تكون لنا شفيعاً يوم البعث)

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

أخي الكريم مهند

الدالة ISREF ترجع القيمة True في حالة أن ورقة العمل موجودة وتعطي القيمة False إذا لم تكن موجودة والخلية A1 هي أول مرجع في ورقة العمل المراد التأكد من وجودها أو عدم وجودها

مثال لتفهم عمل الدالة : قم بإنشاء مصنف جديد وتأكد من وجود ورقة العمل Sheet1 بها وجرب الكود التالي

Sub CheckSheetExistence()
    MsgBox Evaluate("ISREF(Sheet1!A1)")
    MsgBox Evaluate("ISREF(Data!A1)")
End Sub

النتائج ستكون للسطر الأول True لأن الورقة موجودة والسطر الثاني False لأن ورقة العمل Data غير موجودة ...

بالتالي لو رجعنا للكود الأصلي سنجد أننا استخدمنا كلمة Not لعكس النتيجة ..بمعنى أن السطر في الكود الأصلي يفحص ويتأكد من عدم وجودة ورقة العمل فإذا لم (لاحظ لم Not) موجودة يتم تنفيذ باقي الأسطر ..أو بمعنى آخر : لو الورقة مش موجودة هتكون نتيجة الدالة False ووضعنا Not قبلها فيتم تحويل القيمة من False إلى True ، بالتالي طالما أن القيمة ستكون True يتم تنفيذ الأسطر التالية ...

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

جزاك الله كل خير اخى ياسر على سعة صدرك 

وزادك الله من فضله وعلمه 

بالتوفيق اخى واخوانى الافاضل 

 

ولى سؤال هنا 

قبل انشاء موضوع جديد 

هل من الممكن وضع كود يسمح بالكتابه على هذا العمل على الشبكه لانى جربت بالعمل بالامس ولم يسمح لى الا بالقرائه فقط 

فان لم يكن سوف اقوم بتغيير التصميم بموضوع جديد 

جزاكم الله عنا خير الجزاء

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information