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

أبو عاصم المصري

03 عضو مميز
  • Posts

    165
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    2

كل منشورات العضو أبو عاصم المصري

  1. دعوة صالحة... الماكرو يطلب منك أولا فتح ملف مشكول، ويفضل أن تكون المادة العلمية مشابهة للملف المراد تشكيله، بمعنى أنك إذا أردت أن تشكل ملفا في الحديث، فينبغي أن يكون الملف المشكول في الحديث، وإن كان في الفقه فكذلك. ويفضل أيضا أن تبدأ بعدد كلمات أكبر، فتبدأ بست كلمات، ثم خمسة، ثم أربعة،... وهكذا، ليكون التشكيل أدق. ويستحسن في البداية أن تكون المدة قليلة، يعني ابدأ بخمس دقائق، ثم عشرة، وهكذا، لأن برنامج الورد يستهلك قدرا كبيرا من الذاكرة، ويمكن أن يهنج الجهاز. وهذا الماكرو: ' 'تشكيل آلي لكلمة واحدة أو اثنتين حتى ست كلمات، بحيث يبحث الماكرو عن الكلمات غير المشكولة ويقوم بتشكيلها ' ' Dim objDoc As Document '''''' لإغلاق ملفات الورد عدا الذي فيه المؤشر Dim objDocumentsToBeClosed As New Collection Dim nCount As Integer nCount = Application.Documents.count For nIndex = 1 To nCount Set objDoc = Application.Documents.Item(nIndex) If objDoc.FullName <> ActiveDocument.FullName Then objDocumentsToBeClosed.Add objDoc Else Exit For End If Next nIndex For Each objDoc In objDocumentsToBeClosed objDoc.Close SaveChanges:=wdSaveChanges Next objDoc ''''''' Dim xFileDialog As FileDialog, GetStr(1 To 100) As String ' الحد الأقصى (100) ملف Dim xFindStr As String Dim xReplaceStr As String Dim xDoc As Document On Error Resume Next Set xFileDialog = Application.FileDialog(msoFileDialogFilePicker) With xFileDialog .Filters.Clear .Filters.Add "All WORD File ", "*.docx", 1 .AllowMultiSelect = True i = 1 If .Show = -1 Then For Each stiSelectedItem In .SelectedItems GetStr(i) = stiSelectedItem i = i + 1 Next i = i - 1 End If Application.ScreenUpdating = False xFindStr = a xReplaceStr = b For j = 1 To i Step 1 Set xDoc = Documents.Open(FileName:=GetStr(j), Visible:=False) Windows(GetStr(j)).Activate Dim sPrompt As String Dim sUserResp As String Dim iUR As Integer Dim t As Date t = Now Dim StartTime As Date StartTime = Now Do sPrompt = "1. تشكيل كلمة واحدة" & vbCrLf sPrompt = sPrompt & "2. تشكيل كلمتين" & vbCrLf sPrompt = sPrompt & "3. تشكيل ثلاث كلمات" & vbCrLf sPrompt = sPrompt & "4. تشكيل أربع كلمات" & vbCrLf sPrompt = sPrompt & "5. تشكيل خمس كلمات" & vbCrLf sPrompt = sPrompt & "6. تشكيل ثلاث كلمات" & vbCrLf iUR = 0 ''''''''''''''''' While iUR < 1 Or iUR > 6 sUserResp = InputBox(sPrompt, "اختر واحدًا مما يلي") iUR = Val(sUserResp) ''''''''''''''''' لإمكانية إلغاء جميع الاختيارات وقفل الكود If iUR = False Then Exit Sub End If '''''''''''''''''''''' لعمل case لعدة خيارات في InputBox Wend Select Case iUR Case 1 aa = (" <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 2 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 3 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 4 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 5 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 6 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) End Select For i = 1 To x 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 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = aa .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute If Selection.Find.Found = False Then Exit Sub Else End If a = Selection.Text Selection.MoveLeft Unit:=wdCharacter, count:=1 Selection.MoveRight Unit:=wdCharacter, count:=1 Selection.MoveLeft Unit:=wdCharacter, count:=1 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 = True .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:=wdWord, count:=2 Else b = Selection.Text Selection.MoveRight Unit:=wdCharacter, count:=1 Windows(2).Activate Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Color = 49407 ' اللون البرتقالي With Selection.Find .Text = a .Replacement.Text = b .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = True .MatchAlefHamza = True .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End If Selection.MoveRight Unit:=wdWord, count:=2 Next i Beep MsgBox "تم تشكيل الكلمات غير المشكولة وتلوينها باللون البرتقالي" & Format(Now - t, " والوقت المستغرق = h:n:s ") Exit Do Exit Sub Loop ActiveDocument.Save Next End With Beep Windows(1).Close (False) '''''' لإغلاق الملف الذي كان يعمل في الخلفية End Sub
  2. نعم، لو كنت تريد ذلك من أجل التشكيل، أو ضبط الكلمات، فعندي ماكرو يفيد في ذلك، لو أردتَه أرسلتُه لك.
  3. هذا ماكرو يقوم بترتيب الأبيات الشعرية الموجودة في الجدول، فيبدأ أولا بحرف الهمزة، وبداخلها يكون الترتيب حسب الحركات (سكون - فتح - ضم - كسر)، ثم الباء، والتاء.... وهكذا إلى آخر حروف الهجاء، لكنه يحتاج إلى مراجعة، خصوصا حرف الهاء، حيث يأتي أحيانا على أنه قافية، وأخرى يأتي زائدا لا يصلح أن يكون قافية، وهنا تضع البيت في موضعه، وهذا يحتاج متخصصا. فتفضل: ' ' ترتيب شعر حسب الحركات : سكون- فتح - ضم - كسر، مع مراعاة ترتيب حروف الكلمة أيضا 'لا بد من تشكيل الحرف الأخير من من الكلمة الأخيرة في الشطر الثاني 'إذا كان الحرف الأخير ألفا أو واوا أو ياء فيشكل الحرف قبل الحروف الثلاثة If Len(Selection.Text) = 1 Then MsgBox "من فضلك ظلل عمود الشطر الثاني الذي فيه القافية" Exit Sub End If Do On Error Resume Next Selection.Font.Color = 10498160 Selection.Find.ClearFormatting Selection.Find.Font.Color = 10498160 ' البحث عن اللون الأرجواني باختيار الأسفل Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Selection.Font.Color = wdColorAutomatic Selection.EndKey Unit:=wdLine Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "<[أ-ىيئءؤآءاإًٌٍَُِّْ]@>" .Replacement.Text = "" .Forward = False .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Selection.Copy Selection.SelectRow Selection.HomeKey Unit:=wdLine Selection.PasteAndFormat (wdPasteDefault) Selection.HomeKey Unit:=wdLine, Extend:=wdExtend If Selection.Font.Underline = wdUnderlineNone Then Selection.Font.Underline = wdUnderlineSingle Else Selection.Font.Underline = wdUnderlineNone End If Selection.Font.Color = 5287936 Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 5287936 End With Selection.Find.Replacement.ClearFormatting ' البحث عن الشدة أو السكون أو الفتحة أو الضمة أو الكسرة باتجاه الأعلى ونسخها With Selection.Find .Text = "[َُِّْ]" .Replacement.Text = "" .Forward = False .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Selection.Copy If Selection.Find.Found = False Then ' إذا لم يكن هناك تشكيل على الكلمة الأخيرة فلون الكلمة باللون الأرجواني وانتقل إلى الصف التالي Selection.HomeKey Unit:=wdLine, Extend:=wdExtend Selection.Font.Color = 10498160 Selection.SelectCell Selection.MoveDown Unit:=wdLine, Count:=1 ''''''''''''''''''''''''''''''''''''''' Else Selection.MoveRight Unit:=wdWord, Count:=1 Selection.HomeKey Unit:=wdLine, Extend:=wdExtend Selection.Font.Color = 10498160 Selection.HomeKey Unit:=wdLine Selection.TypeText Text:="[" Selection.PasteAndFormat (wdPasteDefault) Selection.TypeText Text:="]" Selection.HomeKey Unit:=wdLine, Extend:=wdExtend Selection.Font.Color = 192 Selection.SelectCell Selection.MoveDown Unit:=wdLine, Count:=1 End If Loop Until (Selection.End = ActiveDocument.Content.End - 1) Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting ' حذف تشكيل الكلمة التي فيها القافية تمهيدا لعكس حروفها للترتيب With Selection.Find .Text = "[ًٌٍَُِّْ]" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Do Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Selection = StrReverse(Selection) ' عكس ترتيب حروف الكلمة Selection.SelectCell Selection.MoveDown Unit:=wdLine, Count:=1 Loop Until (Selection.End = ActiveDocument.Content.End - 1) Selection.Find.ClearFormatting Selection.Find.Font.Underline = wdUnderlineSingle Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "] " .Replacement.Text = "]" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Font.Underline = wdUnderlineSingle Selection.Find.Replacement.ClearFormatting With Selection.Find ' حذف الألف والواو والياء من أول الكلمات لأنها لا تصلح أن تكون قافية .Text = "\][واىي]" .Replacement.Text = "]" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = True .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Font.Underline = wdUnderlineSingle Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "]و" .Replacement.Text = "]" .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.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "<[اوي]" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = True .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting Selection.Find.Font.Underline = wdUnderlineSingle Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Underline = wdUnderlineSingle With Selection.Find ' وضع التشكيل الذي بن معقوفين بعد الحرف الأول من الكلمة .Text = "(\[[-َُِّْ]\])(?)" .Replacement.Text = "\2\1" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdLine findArray = Array("[ْ]", "[ّ]", "[َ]", "[ُ]", "[ِ]") ' تغيير التشكيل إلى أرقام، يعني: السكون= 1، والشدة = 2، والفتحة= 3، والضمة = 4، والكسرة = 5 replArray = Array("1", "2", "3", "4", "5") For i = 0 To UBound(findArray) ' لتنفيذ الأمر حتى آخر الملف Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = findArray(i) .Replacement.Text = replArray(i) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' وذلك لمراعاة الترتيب بالحرف الأول ثم الرقم Selection.HomeKey Unit:=wdStory Selection.Sort ExcludeHeader:=False, FieldNumber:="عمود 1", SortFieldType _ :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, FieldNumber2 _ :="عمود 1", SortFieldType2:=wdSortFieldNumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _ LanguageID:=wdArabicYemen, SubFieldNumber:="فقرات", SubFieldNumber2:= _ "فقرات", SubFieldNumber3:="فقرات" Selection.Sort BidiSort:=False, IgnoreThe:=True, IgnoreKashida:=False, _ IgnoreDiacritics:=False, IgnoreHe:=False Selection.Find.ClearFormatting Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 192 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdStory Beep End Sub
  4. لو أحببت ماكرو آخر لترتيب الأبيات حسب الحركات (سكون - فتح - ضم - كسر) عندي أيضا
  5. بارك الله في أخويَّ مصطفى وشحادة... فكرة ماكرو ترتيب الشعر بسيطة، وهي كالتالي: 1- تحديد الشطر الذي فيه القافية. 2- اختيار الكلمة الأخيرة من هذا الشطر (القافية). 3- نسخها ووضعها في أول الشطر الأول مقلوبة الحروف بلون مخالف، يعني إذا كانت الكلمة (نقصان) ستصبح (ناصقن). 4- ثم نحذف الألف والواو والياء التي لا تصلح أن تكون قافية. 5- ثم نرتب الجدول حسب العمود الأول. 6- نحذف هذه الكلمات المقلوبة عن طريق لونها. وبهذا يكون الشعر مرتبا حسب حروف الهجاء (همزة، باء، تاء،.....) ويتبقى فقط مشكلة الهاء التي لا تصلح أن تكون قافية، وهذه لا بد فيها من التدخل اليدوي. *ملحوظة: الطريقة نفسها تنفع مع ترتيب القوافي (يعني قائمة القوافي) مثل: (إنسان- نقصان- تميل- الأمل) وهكذا. مع وافر تقديري واحترامي
  6. الماكرو يعمل بصورة صحيحة، وقام بترتيب الملف تخير يوما باللبل أتواصل مع حضرتك بصورة مباشرة حتى تتضح الصورة
  7. احذف أي شيء في الملف إلا الجدول، ولا تترك مسافة قبل الجدول، وسيعمل بشكل سليم إن شاء الله. ولو لم يتيسر لك، فأرسل لي الملف أو جزءا منه وسأجرب عليه الماكرو لمعرفة السبب. ومعذرة على التأخير، فلم يتيسر لي النظر إلى الرسائل إلا الآن
  8. تفضل أخي مصطفى، هذا ماكرو لترتيب أبيات شعرية في جدول من خلال الورد: ' ' 'ماكرو ترتيب أبيات شعرية في جدول، ولا بد أن يكون هناك جدول فقط ' On Error Resume Next If Len(Selection.Text) = 1 Then MsgBox "من فضلك ظلل عمود الشطر الثاني الذي فيه القافية" Exit Sub End If Selection.Font.Color = 10498160 Selection.MoveLeft Unit:=wdCharacter, Count:=1 For i = 1 To 100000 Selection.EndKey Unit:=wdLine Selection.Find.ClearFormatting Selection.Find.Font.Color = 10498160 Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^$" .Replacement.Text = "" .Forward = False .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend Selection.Copy Selection.SelectRow Selection.Font.Color = wdColorAutomatic Selection.HomeKey Unit:=wdLine Selection.PasteAndFormat (wdPasteDefault) Selection.HomeKey Unit:=wdLine, Extend:=wdExtend If Selection.Font.Underline = wdUnderlineNone Then Selection.Font.Underline = wdUnderlineSingle Else Selection.Font.Underline = wdUnderlineNone End If Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[ًٌٍَُِّْ]" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection = StrReverse(Selection) Selection.HomeKey Unit:=wdLine Selection.MoveDown Unit:=wdLine, Count:=1 Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineNone .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^$" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Selection.MoveLeft Unit:=wdCharacter, Count:=1 If Selection.Find.Found = False Then Exit For End If Next i Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = " [اويى]" .Replacement.Text = " " .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = True .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.Execute Replace:=wdReplaceAll Selection.Sort ExcludeHeader:=False, FieldNumber:="عمود 1", SortFieldType _ :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, FieldNumber2 _ :="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _ LanguageID:=wdArabic, SubFieldNumber:="فقرات", SubFieldNumber2:="فقرات", _ SubFieldNumber3:="فقرات" Selection.Sort BidiSort:=False, IgnoreThe:=True, IgnoreKashida:=False, _ IgnoreDiacritics:=False, IgnoreHe:=False Selection.Find.ClearFormatting With Selection.Find.Font .Underline = wdUnderlineSingle .Color = 10498160 End With Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.HomeKey Unit:=wdStory Beep MsgBox "تم ترتيب الشعر بنجاح" End Sub
  9. • البحث عن كلمة أولها (ال) وآخرها (تنوين): <ال[! ]@[ًٌٍ]> • كلمة أولها (ال) وآخرها (ون) ليس بعدها (فتحة): ال[! ]@(ون)[!َ]> • البحث عن أي كلمة أو رمز، أو رقم: <[! ]*> • البحث عن أي كلمة، وهي تصلح في عمل الماكرو: <[أ-ىيئءؤءاإًٌٍَُِّْ]@> • أو: <[أ-يًٌٍَُِّْ]@> • البحث عن أي كلمة: <[أ-ي]@> أو: <?@?> • البحث عن أي كلمة: <[! ]@> يكتب قبلها كلمة عند البحث والاستبدال لأنها تبطئ الماكرو، وربما تهنج الورد. • البحث عن أي كلمتين: <[! ]@> <[! ]@> • البحث عن أي كلمتين الأولى تبدأ بهمزة، والثانية تنتهي بتاء مربوطة: <أ[! ]@> <[! ]@ة> • البحث عن أي كلمتين الأولى آخرها ألف، والثانية تنتهي بالألف: <[! ]@ا> <[! ]@ا> • البحث عن كلمتين متتاليتين مكررتين: (<* ){2} ، ويمكن البحث بـ{3، 4} أو <([أؤئإءيا-ى]@)> \1> أو: (<[ء-يا-ى]@)[ ,.;:]@\1> • البحث عن كلمتين، أو عددين، أو جملتين متتاليتين مكررتين: (<*>) \1 • البحث عن كلمتين، أو عددين، أو جملتين متتاليتين مكررتين بينهما فاصلة: (<*>)، \1 • ولحذف الكلمة أو الجملة المكررة نضع في مربع الاستبدال: \1 • البحث عن حرفين أو رقمين متتاليين متطابقين: (?){2} • البحث عن أي كلمتين أو حرفين أو رقمين متتاليين متطابقين: (<*){2} • البحث عن أي كلمتين متطابقتين بينهما أي كلمة: (<[! ]@>) [! ]@ \1 • البحث عن آخر كلمة في الخلية (تنفع للشعر): <[أ-ىيئءؤءاإًٌٍَُِّْ]@>[! ء-ى] • البحث عن أي رقمين متتاليين بينهما فاصلة مثل 22، 22، ويمكن بـ{3، 4}: (<*){2}، (<*){2} • البحث عن أي رقمين متتاليين بينهما فاصلة، وليس قبلهما سلاش: [!\/]<[0-9]@>، <[0-9]@>[!\/] • البحث عن أي رقمين متتاليين بينهما فاصلة، الثاني ليس قبله سلاش: <[0-9]@>، <[0-9]@>[!\/] • البحث عن فقرة وتظليلها: (*^13) • البحث عن فقرتين متتاليتين متطابقتين: (*^13)\1 • البحث عن ثلاث فقرات متتالية متطابقة: (*^13)\1\1 • البحث عن فقرة قبلها فقرة فارغة وبعدها فقرة فارغة: ^13{2}([!^13]@^13)^13 • البحث عن فقرة قبلها فقرة فارغة: ^13{2}([!^13]@^13) • البحث عن فقرة قبلها أو بعدها فقرة فارغة: ^13{2}([!^13]@) • ولحذف هاتين الفقرتين الفارغتين ضع في خانة الاستبدال: ^p<H1>\1 • البحث عن الفقرات المكررة بشكل متتالي: (*^13)(\1)@ • البحث عن فقرة عن طريق حروف البدل: ^13 • البحث عن فقرة قبلها أي حرف عن طريق حروف البدل: >^13 ، وبعدم اعتبار المسافة آخر الفقرة: >^13* • البحث عن أي فقرة إلى كلمة (في) مثلا للتظليل: <[! ]*في> • البحث عن فقرة ليس في نهايتها (.) أو (:) أو (؟) أو (!): ([!^13.:\؟\!\-\!]^13) • تحديد ما بين الفاصلتين: ، <[! ]*>، • تحديد ما بين أي كلمتين متطابقتين: (<[! ]@>) [! ]* \1 • تحديد أي كلمتين متطابقتين بعد كل منهما أي كلمة: (<[! ]@>) [! ]@ \1 (<[! ]@>) • تحديد ما بين كلمتين مثل: عن <[! ]*> عن • البحث عن أي كلمة مكونة من حرفين: <[! ]@{2}> • البحث عن أي كلمة مكونة من حرفين آخرها تنوين: <[! ]@{2}[!ًٌٍ]> • البحث عن كلمة خمس حروف ليس منها علامات الضبط: <[! ]@{5}[ًٌٍَُِّْ]> • للبحث عما بين قوسين هلاليين: (\(*)\) أو \(?@\) • للبحث عما بين قوسين هلاليين باستثناء علامة الحاشية: \(<[أ-ىيئءؤءاإًٌٍَُِّْ]*>\) • للبحث عما بين معقوفين: \[?@\] • للبحث عن أي رقم دون الحروف: [0???-9] • للبحث عن أي رقم فردي أو زوجي أو أكثر: <[0-9]@> • لتظليل رقم بعده سلاش (شرطة مائلة/) حتى آخر الفقرة: <[0-9]@>/*^13 • للبحث عن رقم واحد: <[0-9]{1}> أو رقمين: <[0-9]{2}> وهكذا بزيادة رقم بين {} • للبحث عن أي كلمة دون الأرقام: <[أ-ى][! ]@> • للبحث عن أي رقمين بينهما فاصلة: [0???-9]، [0???-9] • للبحث عن الأرقام بين سلاشين شرطتين مائلتين //: /[???0-9]*/ • للبحث عن أي رقم حتى نهاية الفقرة: [0-9]*^13 • للبحث عن الحروف والأرقام دون المسافات وعلامات الترقيم: [أ-ي0-9] • البحث عن الحاشية السفلية مع حروف البدل: ^2 • البحث عن الحاشية الفارغة التي بعد رقمها قوس هلالي: ^2\) [!ء-ي] • البحث عن الحاشية الفارغة التي ليست بين قوسين: ^2[!\)][!ء-ي] • البحث عن حاشية قبل علامة الترقيم: ([.:،؛\?\!])\(^2\) • البحث عن قوس مربع [ ليس له قوس غلق ] : \[[!\]]@^13 • البحث عن قوس هلالي ( ليس له قوس غلق ) : \([!\)]@^13 • البحث عن قوس مدبب ( ليس له قوس غلق ) : \«[!\»]@^13 • البحث عن قوس مرعوش ( ليس له قوس غلق ) : \{[!\}]@^13 • لعكس ترتيب كلمات متتالية مثل: عماد محمد أحمد، نضع في خانة البحث: (عماد) (محمد) (أحمد) : وفي خانة الاستبدال: \3 \2 \1 مع مراعاة أن تكون الأرقام باللغة الإنجليزية. • لنقل كلمة مكان سابقتها والعكس، مثل: محمد عمر ، نضع في خانة البحث: (محمد) (عمر) : وفي خانة الاستبدال: \2 \1 • لنقل علامة الحاشية قبل علامة الترقيم: في خانة البحث: ([.،:;\?\!])(\(^2\)) : وفي خانة الاستبدال: \2\1 • للبحث عن أكثر من مسافة متتالية: [ ]@([! ]) • ولجعلها مسافة واحدة نستبدلها بـ: \1 • لجعل علامة الحاشية بين قوسين: في مربع بحث اكتب الآتي ^f وفي مربع استبدال اكتب (^&) وهذا الكود يعني أن المكتوب في خانة البحث يساوي المكتوب في خانة الاستبدال، فيمكن استخدامه مع أي حرف وأي رقم، حيث الاستبدال لا ينفع مع أي حرف وأي رقم، لكن بإضافة هذا الكود يصبح الاستبدال متاحا. • لإضافة صفر بعد رقمين مثل (015): نضع في خانة البحث: <[0-9]{2}> وفي الاستبدال: 0^& • لإضافة صفر بعد رقم واحد، مثل (05): في خانة البحث: <[0-9]{1}> وفي الاستبدال: 0^& • للبحث عن أي رقم بعده صفر (0) بعده سلاش (/) على صورة (08/): 0^#/
  10. يحتاج الباحث أحيانا إلى استخراج الجداول الموجودة ضمن ملفات متعددة لينظر إليها مجتمعة في ملف واحد، وهذا ماكرو لذلك: ' نسخ الجداول من مجلد معين ووضعها في ملف واحد Dim strFileName As String Dim strPath As String Dim oDoc As Document, oNewDoc As Document Dim oTable As Range, oRng As Range Dim oLog As Document Dim bFound As Boolean Dim fDialog As FileDialog Dim oColl As New Collection Dim i As Long, j As Long, k As Long Set fDialog = Application.FileDialog(msoFileDialogFolderPicker) With fDialog .Title = "حدد المجلد وانقر فوق موافق " .AllowMultiSelect = False .InitialView = msoFileDialogViewList If .Show <> -1 Then MsgBox "أُلغي الأمر", , _ "محتويات المجلد" GoTo lbl_Exit End If strPath = fDialog.SelectedItems.Item(1) & Chr(92) End With Set oNewDoc = Documents.Add strFileName = Dir$(strPath & "*.doc") While Len(strFileName) <> 0 Set oDoc = Documents.Open(FileName:=strPath & strFileName, AddToRecentFiles:=False) bFound = False If oDoc.ProtectionType = wdNoProtection Then If oDoc.Tables.Count > 0 Then k = 0 bFound = True For i = 1 To oDoc.Tables.Count Set oTable = oDoc.Tables(i).Range oTable.Copy Set oRng = oNewDoc.Range oRng.Collapse 0 oRng.InsertParagraphAfter Set oRng = oNewDoc.Range oRng.Collapse 0 oRng.Paste k = k + 1 DoEvents Next i If bFound = True Then oColl.Add strFileName & vbTab & k & " tables copied" End If End If DoEvents End If oDoc.Close SaveChanges:=wdDoNotSaveChanges strFileName = Dir$() Wend Set oLog = Documents.Add For j = 1 To oColl.Count oLog.Range.InsertAfter oColl(j) & vbCr Next j lbl_Exit: Exit Sub Beep End Sub
  11. هذا أحدث: On Error Resume Next Dim x, a, b, c, y As Integer Dim sPrompt As String Dim sUserResp As String Dim iUR As Integer Dim t As Date t = Now Dim StartTime As Date StartTime = Now Do sPrompt = "1. تشكيل كلمة واحدة" & vbCrLf sPrompt = sPrompt & "2. تشكيل كلمتين" & vbCrLf sPrompt = sPrompt & "3. تشكيل ثلاث كلمات" & vbCrLf sPrompt = sPrompt & "4. تشكيل أربع كلمات" & vbCrLf sPrompt = sPrompt & "5. تشكيل خمس كلمات" & vbCrLf sPrompt = sPrompt & "6. تشكيل ثلاث كلمات" & vbCrLf iUR = 0 ''''''''''''''''' While iUR < 1 Or iUR > 6 sUserResp = InputBox(sPrompt, "اختر واحدًا مما يلي") iUR = Val(sUserResp) ''''''''''''''''' لإمكانية إلغاء جميع الاختيارات وقفل الكود If iUR = False Then Exit Sub End If '''''''''''''''''''''' لعمل case لعدة خيارات في InputBox Wend Select Case iUR Case 1 aa = (" <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 2 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 3 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 4 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 5 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 6 aa = ("<[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@>") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) End Select For i = 1 To x 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 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = aa .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute If Selection.Find.Found = False Then Exit Sub Else End If a = Selection.Text Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.MoveLeft Unit:=wdCharacter, Count:=1 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 = True .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:=wdWord, Count:=2 Else b = Selection.Text Selection.MoveRight Unit:=wdCharacter, Count:=1 Windows(2).Activate Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Color = 49407 ' اللون البرتقالي With Selection.Find .Text = a .Replacement.Text = b .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = True .MatchAlefHamza = True .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End If Selection.MoveRight Unit:=wdWord, Count:=2 Next i Beep MsgBox "تم تشكيل الكلمات غير المشكولة وتلوينها باللون البرتقالي" & Format(Now - t, " والوقت المستغرق = h:n:s ") Exit Do Exit Sub Loop ActiveDocument.Save Beep End Sub
  12. هذا ماكرو للتشكيل الآلي، بحيث يفتح الباحث ملفين، أحدهما الذي يريد تشكيله، والآخر يأخذ منه التشكيل، وينبغي أن يسمى الملف الذي يأخذ منه التشكيل (----). ولك أن تطلب تشكيل 6 أو 5 أو 4 أو 3 أو 2 أو 1 يعني ست كلمات أو خمس، أو.... فيقوم الماكرو بنسخ الكلمات المطلوب تشكيلها، ويبحث بها في الملف المشكول، فإن وجدها رجل إلى الملف المطلوب تشكيل ويقوم بعملية استبدال لهذه الكلمات، فيضع الكلمات المشكولة مكان غير المشكولة. ويفضل بشدة لمن أراد الدقة في التشكيل أن يعتمد على نص مشكول في نفس موضوع الملف المراد تشكيله. كما ينبغي أن يبدأ بالعدد الأعلى ثم الأدنى، فيبدأ بـ(6) كلمات، ثم (5) ثم (4)، وهكذا حتى يصل لكلمة واحدة. ويفضل أن تحذف علامات الترقيم والأقواس ونحوها من النص المشكول. والماكرو يطلب منك عدد مرات التنفيذ، والمدة المطلوبة في إجراء العملية، وهذا بغرض منع الجهاز من التهنيج. وهذا الماكرو لمن أراد: On Error Resume Next Dim x, a, b, c, y As Integer Dim sPrompt As String Dim sUserResp As String Dim iUR As Integer Dim t As Date t = Now Dim StartTime As Date StartTime = Now Do sPrompt = "1. تشكيل كلمة واحدة" & vbCrLf sPrompt = sPrompt & "2. تشكيل كلمتين" & vbCrLf sPrompt = sPrompt & "3. تشكيل ثلاث كلمات" & vbCrLf sPrompt = sPrompt & "4. تشكيل أربع كلمات" & vbCrLf sPrompt = sPrompt & "5. تشكيل خمس كلمات" & vbCrLf sPrompt = sPrompt & "6. تشكيل ثلاث كلمات" & vbCrLf iUR = 0 ''''''''''''''''' While iUR < 1 Or iUR > 6 sUserResp = InputBox(sPrompt, "اختر واحدًا مما يلي") iUR = Val(sUserResp) ''''''''''''''''' لإمكانية إلغاء جميع الاختيارات وقفل الكود If iUR = False Then Exit Sub End If '''''''''''''''''''''' لعمل case لعدة خيارات في InputBox Wend Select Case iUR Case 1 aa = (" <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 2 aa = (" <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 3 aa = (" <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 4 aa = (" <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 5 aa = (" <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) Case 6 aa = (" <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> <[!ًٍَُِّْ ]@> ") x = (InputBox("اكتب عدد مرات التنفيذ")) y = (InputBox("حدد مدة تشغيل الماكرو بالدقائق")) End Select For i = 1 To x 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 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .text = aa .Replacement.text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute If Selection.Find.Found = False Then Exit Sub Else End If a = Selection.text Selection.MoveRight Unit:=wdCharacter, count:=1 Selection.MoveLeft Unit:=wdCharacter, count:=1 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 = True .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute If Selection.Find.Found = False Then Windows(2).Activate Selection.MoveLeft Unit:=wdCharacter, count:=2 Else b = Selection.text Selection.MoveRight Unit:=wdCharacter, count:=1 Windows(2).Activate Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Font.Color = 49407 ' اللون البرتقالي 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 End If Selection.Find.Execute Replace:=wdReplaceAll Next i Beep MsgBox "تم تشكيل الكلمات غير المشكولة وتلوينها باللون البرتقالي" & Format(Now - t, " والوقت المستغرق = h:n:s ") Exit Do Exit Sub Loop ActiveDocument.Save Beep End Sub
  13. هذا ماكرو لاستخراج عبارات بلون محدد آخر الملف مع رقم الصفحة، وهذا أيضا ينفع للفهرسة: On Error Resume Next strFontColor = InputBox(" : اختر لون الخط - رقمه " & vbNewLine & _ vbTab & "تلقائي" & vbTab & vbTab & "0" & vbNewLine & _ vbTab & "أسود" & vbTab & vbTab & "1" & vbNewLine & _ vbTab & "أزرق" & vbTab & vbTab & "2" & vbNewLine & _ vbTab & "أخضر فاتح" & vbTab & "4" & vbNewLine & _ vbTab & "أزرق غامق" & vbTab & vbTab & "9" & vbNewLine & _ vbTab & "أحمر غامق" & vbTab & vbTab & "13" & vbNewLine & _ vbTab & "أصفر غامق" & vbTab & "14" & vbNewLine & _ vbTab & "رمادي 25" & vbTab & vbTab & "16" & vbNewLine & _ vbTab & "رمادي 50" & vbTab & vbTab & "15" & vbNewLine & _ vbTab & "أخضر" & vbTab & vbTab & "11" & vbNewLine & _ vbTab & "قرنفلي" & vbTab & vbTab & "5" & vbNewLine & _ vbTab & "أحمر" & vbTab & vbTab & "6" & vbNewLine & _ vbTab & "نهري" & vbTab & vbTab & "10" & vbNewLine & _ vbTab & "تركواز" & vbTab & "3" & vbNewLine & _ vbTab & "بنفسجي" & vbTab & vbTab & "12" & vbNewLine & _ vbTab & "أبيض" & vbTab & vbTab & "8" & vbNewLine & _ vbTab & "أصفر" & vbTab & vbTab & "7", "قائــــــــــــــمة الألــــــوان") With Selection Dim dic As Object Dim r As Range, k Dim s As String, p As Long Dim Tbl As Table, n As Long Set dic = CreateObject("scripting.dictionary") Set r = ActiveDocument.Content r.Collapse With r.Find .Font.ColorIndex = strFontColor Do While .Execute s = Trim(r.Text) If Len(s) > 1 Then If Not dic.Exists(s) Then Set dic(s) = CreateObject("scripting.dictionary") End If p = r.Information(wdActiveEndPageNumber) dic(s)(p) = Empty End If Loop End With If dic.Count = 0 Then Exit Sub Set r = ActiveDocument.Bookmarks("\EndOfDoc").Range Set Tbl = ActiveDocument.Tables.Add(r, dic.Count, 2) For Each k In dic n = n + 1 Tbl.Cell(n, 1).Range.Text = k Tbl.Cell(n, 2).Range.Text = Join(dic(k).Keys, "، ") Next End With Selection.EndKey Unit:=wdStory Beep End Sub
  14. كثيرا ما يحتاج الباحث إلى استخراج كلمات أو جمل لها لون معين للنظر فيها، أو فهرستها. وهذا الماكرو يقوم باستخراج كل العبارات الملونة بأي لون عدا اللون الأسود، ويضعها في آخر الملف مع أرقام الصفحات. فتستطيع مثلا أن تجعل كل الأعلام باللون الأحمر، والقبائل بالأخضر، والأماكن بالأزرق، وهكذا أثناء تصفحك للمستند. وفي آخر العمل تقوم باستخراج كل هذه الألوان دفعة واحدة مع أرقام صفحاتها. وهذا الماكرو: Dim char As Range For Each char In ActiveDocument.Characters If char.Font.Color <> wdColorAutomatic And char.Font.Color <> wdColorBlack Then ' إذا كان لون النص غير تلقائي أو أسود char.HighlightColorIndex = wdTurquoise End If Next Dim dic As Object Dim r As Range, k Dim s As String, p As Long Dim Tbl As Table, n As Long Set dic = CreateObject("scripting.dictionary") Set r = ActiveDocument.Content r.Collapse With r.Find .Highlight = True '.Font.ColorIndex = strFontColor Do While .Execute s = Trim(r.Text) If Len(s) > 1 Then If Not dic.Exists(s) Then Set dic(s) = CreateObject("scripting.dictionary") End If p = r.Information(wdActiveEndPageNumber) dic(s)(p) = Empty End If Loop End With If dic.Count = 0 Then Exit Sub Set r = ActiveDocument.Bookmarks("\EndOfDoc").Range Set Tbl = ActiveDocument.Tables.Add(r, dic.Count, 2) For Each k In dic n = n + 1 Tbl.Cell(n, 1).Range.Text = k Tbl.Cell(n, 2).Range.Text = Join(dic(k).Keys, "، ") Next Selection.EndKey Unit:=wdStory Beep End Sub
      • 1
      • Like
  15. بارك الله فيك أستاذ شحادة.. فعلا الماكرو يعتبر المسافة، ولا بد أن يكون هناك تطابق بين الكلمتين أو الجملتين في علامات الترقيم كذلك. لأن احتمال الخطأ الأغلب في هذه الصورة، أما إذا زادت علامة ترقيم في إحدى الكلمتين أو الجملتين، فالغالب أن النص صحيح. مع مراعاة أن هذه الخاصية لاكتشاف ما إذا كان المدخل أعاد كلمة أو جملة دون قصد. وفي كل الأحوال المقصود من عرض هذا التكرار إعادة النظر فيه، لأنه قد يكون صوابا، وقد يكون خطأ. تحياتي لشخصكم الكريم، مع تقديري لمجهودكم الواضح
  16. قد يوجد في المستند الواحد العديد من العبارات المميزة بألوان مختلفة (أصفر، أخضر،..)، وقد تحتاج إلى نقل تمييز بلون محدد إلى ملف آخر للنظر فيه. وهذا الماكرو يقوم بذلك: ss = InputBox(" : اختر رقم لون التمييز " & vbNewLine & _ vbTab & "تلقائي" & vbTab & vbTab & "0" & vbNewLine & _ vbTab & "أسود" & vbTab & vbTab & "1" & vbNewLine & _ vbTab & "أزرق" & vbTab & vbTab & "2" & vbNewLine & _ vbTab & "أخضر فاتح" & vbTab & "4" & vbNewLine & _ vbTab & "أزرق غامق" & vbTab & vbTab & "9" & vbNewLine & _ vbTab & "أحمر غامق" & vbTab & vbTab & "13" & vbNewLine & _ vbTab & "أصفر غامق" & vbTab & "14" & vbNewLine & _ vbTab & "رمادي 25" & vbTab & vbTab & "16" & vbNewLine & _ vbTab & "رمادي 50" & vbTab & vbTab & "15" & vbNewLine & _ vbTab & "أخضر" & vbTab & vbTab & "11" & vbNewLine & _ vbTab & "قرنفلي" & vbTab & vbTab & "5" & vbNewLine & _ vbTab & "أحمر" & vbTab & vbTab & "6" & vbNewLine & _ vbTab & "نهري" & vbTab & vbTab & "10" & vbNewLine & _ vbTab & "تركواز" & vbTab & "3" & vbNewLine & _ vbTab & "بنفسجي" & vbTab & vbTab & "12" & vbNewLine & _ vbTab & "أبيض" & vbTab & vbTab & "8" & vbNewLine & _ vbTab & "أصفر" & vbTab & vbTab & "7", "قائــــــــــــــمة الألــــــوان") Documents.Add DocumentType:=wdNewBlankDocument Windows(2).Activate Selection.HomeKey wdStory Start: Selection.Find.ClearFormatting Selection.Find.Highlight = True With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute If .Found Then If Selection.Range.HighlightColorIndex = ss Then End If AAAM = AAAM + 1 GoTo Start Else End If End With Selection.HomeKey wdStory For X = 1 To AAAM + 1 Selection.Find.ClearFormatting Selection.Find.Highlight = True With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute End With If Selection.Range.HighlightColorIndex = ss Then ' لو كان النص المظلل باللون المحدد Selection.Copy On Error Resume Next Windows(1).Activate Selection.PasteAndFormat (wdFormatOriginalFormatting) Selection.TypeParagraph Windows(2).Activate ' Selection.range.HighlightColorIndex = 0 ' احذف التمييز End If Selection.Collapse (wdCollapseEnd) Next Beep MsgBox "تم نسخ التمييز المطلوب إلى ملف آخر، والحمد لله رب العالمين" Selection.HomeKey Unit:=wdStory Beep End Sub
  17. أحيانا تحتاج إلى البحث عن الكلمات أو الجمل المكررة، لأن التكرار قد يكون خطأ، وهذا الماكرو يقوم بتحديد الكلمات أو الجمل المكررة بشكل متتالي وتمييزها باللون الأخضر: Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = True Options.DefaultHighlightColorIndex = wdBrightGreen With Selection.Find .Text = "(<* ){2}" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Beep End Sub
  18. يحتاج الباحث كثيرا إلى استخراج الجداول فقط إلى ملف مستقل للنظر فيها، خصوصا إذا كانت مشتملة على أبيات شعرية، لترتيبها، أو ذكر بحرها ووزنها. وهذا الماكرو يقوم بذلك: ' 'ماكرو لنسخ كل الجداول من الملف إلى ملف آخر ' Dim Source As Document Dim Target As Document Dim Tbl As Table Dim tr As Range n = ActiveDocument.Tables.Count If n = 0 Then MsgBox "لا يوجد جداول ", vbOKOnly Exit Sub Else End If Set Source = ActiveDocument Set Target = Documents.Add For Each Tbl In Source.Tables Set tr = Target.Range tr.Collapse wdCollapseEnd tr.FormattedText = Tbl.Range.FormattedText tr.Collapse wdCollapseEnd tr.Text = vbCrLf Next Beep End Sub
  19. يحتاج الباحث كثيرا إلى استخراج النصوص المميزة إلى ملف آخر مع أرقام الصفحات للنظر فيها بشكل مستقل، وهذا ماكرو لذلك: Dim oRng, oNrng As Range Dim oSource, oDoc As Document Dim oTable As Table Dim iRow, iPage, ILen As Integer Dim iPara, iIst, iLast As Integer Dim sFont, SComp, sNext, sWords As String Dim sColor As WdColor Set oSource = ActiveDocument Set oDoc = Documents.Add Set oTable = oDoc.Tables.Add(oDoc.Range, 2, 2) With oTable .Cell(1, 1).Range.Text = "النص المميز" .Cell(1, 2).Range.Text = "الصفحة" '.Cell(1, 3).Range.Text = "Font" لاستخراج اسم الخط '.Cell(1, 4).Range.Text = "Comments" لاستخراج لون التمييز With .Rows(1).Range .ParagraphFormat.Alignment = _ wdAlignParagraphCenter .Font.name = "Arial" .Font.Size = "12" .Bold = True End With End With oSource.Activate With Selection .HomeKey Unit:=wdStory With .Find .ClearFormatting .Replacement.ClearFormatting .Text = "" .Highlight = True .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False Do While .Execute = True Set oRng = Selection.Range With oRng iIst = .Start - .Words.First.Start + 1 iLast = .Words.Last.End - .End sNext = .Next.Characters(1) sColor = .HighlightColorIndex If .Start <> .Words.First.Start Or _ .End <> .Words.Last.End - 1 And _ sNext <> "" Then Select Case sNext Case ",", ".", "?", "!", ":", ";" SComp = "" iLast = iLast + 1 Case Else SComp = "Partly highlighted" End Select Else SComp = "" End If .Start = .Words.First.Start .End = .Words.Last.End If .Characters.Last = Chr(32) Then .End = .Words.Last.End - 1 End If sFont = .Font.name If Len(sFont) < 1 Then sFont = "Mixed fonts detected" iPage = .Information(wdActiveEndPageNumber) iRow = oTable.Rows.Count oTable.Cell(iRow, 1).Range.FormattedText = oRng.FormattedText oTable.Cell(iRow, 2).Range.Text = iPage oTable.Cell(iRow, 2).Range.ParagraphFormat.Alignment _ = wdAlignParagraphCenter 'oTable.Cell(iRow, 3).Range.Text = sFont لاستخراج اسم الخط 'oTable.Cell(iRow, 4).Range.Text = SComp لاستخراج لون التمييز oTable.Rows.Add End With Loop End With End With oTable.Rows.Last.Delete oDoc.Activate Beep End Sub
  20. يحتاج الباحث أحيانا إلى استبدال العديد من الكلمات المتباعدة (المتفرقة) في الورد دفعة واحدة، وهذا ماكرو لتنفيذ هذا الأمر. الطريقة: بعد إضافة الماكرو إلى الورد وتشغيل الماكرو: 1- سيظهر لك مربع حوار أول للكلمات التي تريد استبدالها، فتكتبها مفصولة بفاصلة (،) ثم تضغط على (ok) 2- سيظهر مربع الحوار الثاني للكلمات الجديدة، فتكتبها أيضا مفصولة بفاصلة (،) بشرط أن يكون عدد الكلمات في مربع الحوار الثاني مساويا لعدد الكلمات الموجودة في مربع الحوار الأول ثم تضغط على (ok) * النتيجة: سيتم استبدال كل كلمة بما يقابلها مع أن هذه الكلمات متباعدة. وهذا هو الماكرو: Dim xFind As String Dim xReplace As String Dim xFindArr, xReplaceArr Dim i As Long Application.ScreenUpdating = False xFind = InputBox("أدخل هنا مجموعةالكلمات التي تريد استبدالها، مفصولة بفاصلة: ", "الكلمات المطلوب استبدالها") xReplace = InputBox("أدخل الكلمات التي تريد استبدالها مكان السابقة، مفصولة بفاصلة: ", "الكلمات الجديدة") xFindArr = Split(xFind, "،") xReplaceArr = Split(xReplace, "،") If UBound(xFindArr) <> UBound(xReplaceArr) Then MsgBox "يجب التطابق في عدد الكلمات المطلوب استبدالها", vbInformation, "صل على المبعوث رحمة للعالمين" Exit Sub End If For i = 0 To UBound(xFindArr) With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = xFindArr(i) .Replacement.Text = xReplaceArr(i) .Format = False .MatchWholeWord = False End With Selection.Find.Execute Replace:=wdReplaceAll Next Application.ScreenUpdating = True Beep End Sub
  21. 1- افتح alt + f11 2- كليك يمين على normal 3- import file 4- حدد مكان الماكرو 5- NewMacros.rar أضف هذا الملف (فيه الماكرو) 6- ستجده ضمن قائمة الماكروهات داخل الورد 7- اجعل له (زر) على الشريط الأعلى للورد من قائمة الأوامر الإضافية 8- اضغط على هذا الزر إذا أردت تنفيذ الماكرو
  22. يحتاج الباحث كثيرا إلى ترقيم ملف بالكامل، كترقيم الكتب والأبواب والأحاديث، ويحتاج إلى عمل مسلسل لكل جزئية، لذا يجب أن يضع رمزًا للكتب، وآخر للأبواب، وآخر للحديث، ثم يختار الرمز الذي يرقم عليه، ليكون للكتب ترقيم مسلسل، وللأبواب والأحاديث كذلك، وهذا هو الماكرو: On Error GoTo 5 ss = InputBox("اكتب الرمز المطلوب الترقيم بدلالته، مثل: = أو * أو # أو @") For i = 1 To 100000 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = ss .Replacement.Text = " :" .Forward = True .Wrap = wdFindStop .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 Selection.Copy Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.TypeText Text:=i Selection.MoveRight Unit:=wdCharacter, Count:=1 Next i 5: End Beep End Sub
×
×
  • اضف...

Important Information