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

هدية للإخوة المصححين، ماكرو تشكيل آلي بدقة عالية جدا


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

عرفانا للجميل، وردا لبعض ما استفدته من هذا المنتدى المبارك، أقدم لإخواني (ماكرو تشكيل آلي) أستفيد منه كثيرا في مجال التشكيل، وهو عبارة عن ماكرو يقوم بالتالي:

1- ينسخ الكلمة أو الكلمتين، أو أكثر حسب تحديد الباحث، ثم يبحث بها في ملف آخر مشكول.

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

3- إذا لم يجد ما يبحث عنه، رجع إلى الملف ونسخ النص التالي ليبحث عنه، وهكذا.

4- يقوم بتلوين الكلمات المشكولة باللون الأحمر.

5- وفي نهاية العمليات يحفظ الملف بشكل آلي.

6- والمطلوب: أن تفتح ملف آخر مشكول ليبحث فيه الماكرو، فمثلا إذا كنت تشكل كتابا في الفقه فعليك أن تفتح ملفا آخر لكتاب فقه مشكول لينقل منه.

7- يجب أن تسمي الملف الذي تنقل منه التشكيل برمز معين، وليكن مثلا (----).

8- عند تشغيل الماكرو تخرج رسالة بعدد الكلمات المطلوب تشكيلها + 1 ، يعني لو أردت تشكيل كلمتين، فاكتب (3)، وإذا أردت تشكيل (4) اكتب (5)، وهكذا

9- والرسالة الثانية عدد مرات التكرار، يعني تكرر الأمر 100 مرة، أو 200، أو 1000، وهكذا.

10- والرسالة الثالثة فيها تحديد المدة، فيمكن أن تحدد المدة بالدقيقة، فلو كتبت (1) فهذا يعني أن الماكرو يعمل لدقيقة ثم يقف، ولو كتبت (2) فسيقف بعد دقيقتين، وهكذا.

وهذا هو الماكرو لمن أراد:

Sub تشكيلآلي()
'
' تشكيلآلي Macro
'ماكرو يشكل كلمات ملف من ملف آخر مشكول، بشرط فتح الملفين في آن واحد، وعند تشغيل الماكرو تختار عدد الكلمات المراد تشكيلها، كما تختار عدد مرات تكرار ذلك في الملف
'تمت إضافة تحديد الوقت في هذا الماكرو، فإذا كتبت (1) في مربع الوقت فهذا يعني دقيقةواحدة، وإذا كتبت(2)فهذايعني دقيقتين، وهكذا
    

   Dim X, a, b, c, y As Integer
    
   Dim t As Date
   t = Now
   Dim startTime As Date
   startTime = Now
   Do
   
   k = (InputBox("اكتب عدد الكلمات + 1"))
   X = (InputBox("اكتب عدد مرات التنفيذ"))
   y = (InputBox("حدد مدة تشغيل الماكرو بالدقيقة"))
    
   For i = 1 To X
    
    
    Selection.MoveRight unit:=wdWord, count:=1, Extend:=wdExtend
   
    If DateDiff("n", startTime, Now, endTime) = y Then
    
    ' s =عدد الثواني
    ' n =الدقائق
    ' h =ساعة
    
    MsgBox "تم تشكيل الكلمات وتلوينها باللون الأحمر" & Format(Now - t, " والوقت المستغرق = h:n:s  ")
        
    Exit Do
         
    Exit Sub
     ActiveDocument.Save
     
    End If
    If (Len(Selection.Text) - 2 > 0) Then
    
  
    
    
    If Selection.Find.Found = False Then
    Windows(2).Activate
    Selection.MoveRight unit:=wdCharacter, count:=1
    End If
    Selection.MoveLeft unit:=wdCharacter, count:=1
    Selection.MoveLeft unit:=wdWord, count:=1
    Selection.MoveLeft unit:=wdCharacter, count:=1
    Selection.MoveRight unit:=wdWord, count:=k, Extend:=wdExtend
    a = Selection.Text
    
    
    
    Windows(1).Activate
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    
    With Selection.Find
        .Text = a
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        
        
    
    End With
    Selection.Find.Execute
    
    If Selection.Find.Found = False Then
    Windows(2).Activate
    Selection.MoveRight unit:=wdCharacter, count:=1
 
   Else
    
    b = Selection.Text
   
    Windows(2).Activate
    Selection.MoveRight unit:=wdCharacter, count:=1
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.Font.Color = wdColorRed
    With Selection.Find
        .Text = a
        .Replacement.Text = b
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = True
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    
    
    End With
    Selection.Find.Execute replace:=wdReplaceAll
    Selection.MoveRight unit:=wdWord, count:=1
   End If
   End If
   Next i
   Beep

   MsgBox "تم تشكيل الكلمات وتلوينها باللون الأحمر" & Format(Now - t, " والوقت المستغرق = h:n:s  ")
        
    Exit Do
    Exit Sub
    Loop
 ActiveDocument.Save
End Sub

 

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

  • 3 months later...
  • 2 months later...
في 3‏/1‏/2022 at 11:35, أبو عاصم المصري said:

عرفانا للجميل، وردا لبعض ما استفدته من هذا المنتدى المبارك، أقدم لإخواني (ماكرو تشكيل آلي) أستفيد منه كثيرا في مجال التشكيل، وهو عبارة عن ماكرو يقوم بالتالي:

1- ينسخ الكلمة أو الكلمتين، أو أكثر حسب تحديد الباحث، ثم يبحث بها في ملف آخر مشكول.

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

3- إذا لم يجد ما يبحث عنه، رجع إلى الملف ونسخ النص التالي ليبحث عنه، وهكذا.

4- يقوم بتلوين الكلمات المشكولة باللون الأحمر.

5- وفي نهاية العمليات يحفظ الملف بشكل آلي.

6- والمطلوب: أن تفتح ملف آخر مشكول ليبحث فيه الماكرو، فمثلا إذا كنت تشكل كتابا في الفقه فعليك أن تفتح ملفا آخر لكتاب فقه مشكول لينقل منه.

7- يجب أن تسمي الملف الذي تنقل منه التشكيل برمز معين، وليكن مثلا (----).

8- عند تشغيل الماكرو تخرج رسالة بعدد الكلمات المطلوب تشكيلها + 1 ، يعني لو أردت تشكيل كلمتين، فاكتب (3)، وإذا أردت تشكيل (4) اكتب (5)، وهكذا

9- والرسالة الثانية عدد مرات التكرار، يعني تكرر الأمر 100 مرة، أو 200، أو 1000، وهكذا.

10- والرسالة الثالثة فيها تحديد المدة، فيمكن أن تحدد المدة بالدقيقة، فلو كتبت (1) فهذا يعني أن الماكرو يعمل لدقيقة ثم يقف، ولو كتبت (2) فسيقف بعد دقيقتين، وهكذا.

وهذا هو الماكرو لمن أراد:

Sub تشكيلآلي()
'
' تشكيلآلي Macro
'ماكرو يشكل كلمات ملف من ملف آخر مشكول، بشرط فتح الملفين في آن واحد، وعند تشغيل الماكرو تختار عدد الكلمات المراد تشكيلها، كما تختار عدد مرات تكرار ذلك في الملف
'تمت إضافة تحديد الوقت في هذا الماكرو، فإذا كتبت (1) في مربع الوقت فهذا يعني دقيقةواحدة، وإذا كتبت(2)فهذايعني دقيقتين، وهكذا
    

   Dim X, a, b, c, y As Integer
    
   Dim t As Date
   t = Now
   Dim startTime As Date
   startTime = Now
   Do
   
   k = (InputBox("اكتب عدد الكلمات + 1"))
   X = (InputBox("اكتب عدد مرات التنفيذ"))
   y = (InputBox("حدد مدة تشغيل الماكرو بالدقيقة"))
    
   For i = 1 To X
    
    
    Selection.MoveRight unit:=wdWord, count:=1, Extend:=wdExtend
   
    If DateDiff("n", startTime, Now, endTime) = y Then
    
    ' s =عدد الثواني
    ' n =الدقائق
    ' h =ساعة
    
    MsgBox "تم تشكيل الكلمات وتلوينها باللون الأحمر" & Format(Now - t, " والوقت المستغرق = h:n:s  ")
        
    Exit Do
         
    Exit Sub
     ActiveDocument.Save
     
    End If
    If (Len(Selection.Text) - 2 > 0) Then
    
  
    
    
    If Selection.Find.Found = False Then
    Windows(2).Activate
    Selection.MoveRight unit:=wdCharacter, count:=1
    End If
    Selection.MoveLeft unit:=wdCharacter, count:=1
    Selection.MoveLeft unit:=wdWord, count:=1
    Selection.MoveLeft unit:=wdCharacter, count:=1
    Selection.MoveRight unit:=wdWord, count:=k, Extend:=wdExtend
    a = Selection.Text
    
    
    
    Windows(1).Activate
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    
    With Selection.Find
        .Text = a
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        
        
    
    End With
    Selection.Find.Execute
    
    If Selection.Find.Found = False Then
    Windows(2).Activate
    Selection.MoveRight unit:=wdCharacter, count:=1
 
   Else
    
    b = Selection.Text
   
    Windows(2).Activate
    Selection.MoveRight unit:=wdCharacter, count:=1
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.Font.Color = wdColorRed
    With Selection.Find
        .Text = a
        .Replacement.Text = b
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = True
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    
    
    End With
    Selection.Find.Execute replace:=wdReplaceAll
    Selection.MoveRight unit:=wdWord, count:=1
   End If
   End If
   Next i
   Beep

   MsgBox "تم تشكيل الكلمات وتلوينها باللون الأحمر" & Format(Now - t, " والوقت المستغرق = h:n:s  ")
        
    Exit Do
    Exit Sub
    Loop
 ActiveDocument.Save
End Sub

ما شاء الله تبارك الله ،، عمل رائع جدًا..

وهذا يمكن أن يظهر بشكل أكبر في الأبحاث التي يطلب فيها تشكيل الأحاديث مثلا أو كلمات التعريف التي تتطلب تشكيلا..

الحقيقة عمل رائع ..

ونجتاج لمثل هذه الأفكار التطبيق والطوير ليكتمل البناء بهذا الفريق المبدع الرائع وبهذا التعاون البناء..

شكرا لكم من الأعماق،،

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

فكرة رائعة

تحتاج لمزيد من التطوير

وخاصة في ضبط نهاية الكلمات

فربما الكلمة المشكولة مرفوغة وموقع التي يتم تشكيلها منصوب مثلا

ورغم كل شيء بارك الله لك وكل عام وجميع الأعضاء زالزوار بكل خير وصحة وسعادة

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

لو قمت باختيار تشكيل خمس كلمات أو أربع كلمات أو ثلاثة مثلا سيكون احتمال الخطأ نادرا جدا.

ولذلك أنصح أن تبدأ التشكيل بعدد كلمات كبير، ثم تنتقل إلى الأصغر، يعني تبدأ بـ(5) كلمات، ثم (4)، ثم (3)، ثم (2)، ثم كلمة واحدة.

وبهذا يكون الخطأ نادرا جدا.

تحياتي لحضرتك

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

  • 2 months later...
  • 1 month later...
  • 2 weeks later...

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