تکرار یک ماکرو

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • bnyamin

    • 2013/05/29
    • 111

    تکرار یک ماکرو

    با عرض سلام و ارادت
    بنده یک ماکرو در word ایجاد کردم که یک کد رو در اول برخی از پاراگرافها سرچ میکنه مثلا کد A رو و یک اوتلاین مثلا سطح یک ایجاد میکنه ولی مشکل اینجاست وقتی ماکرو رو اجرا میکنم فقط یک بار عمل میکنه بدین معنی که اولین کدی رو که فایند میکنه اوتلاینشو ایجاد میکنه و تموم میشه .
    حالا میخواستم بدونم انتهای این کد ماکرو باید چه عبارتی رو اضافه کنم که تا آخر متنم تموم کد ها رو سرچ کنه و اوتلاینشو ایجاد کنه؟
    البته ببخشید که سوال WORDE بودش بالاخره اکسل حق VBA بر گردن بقیه مجموعه آفیس داره .
    با تشکر
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    سلام دوست عزيز
    لطفا كدي كه استفاده كردين يا فايلتون رو بذارين ببينم از چه روشي استفاده كردين

    کامنت

    • bnyamin

      • 2013/05/29
      • 111

      #3
      نوشته اصلی توسط amir ghasemiyan
      سلام دوست عزيز
      لطفا كدي كه استفاده كردين يا فايلتون رو بذارين ببينم از چه روشي استفاده كردين
      با عرض سلام و ارادت - فایلی هم در پیوست قرار دادم - چی می خواهم انجام دهم ؟ به عنوان مثال ما متنی فارسی داریم که در اول هرکدام ار پاراگرافهای ان یک حرف انگلیسی به عنوان یک کد قرار دارد حالا با سرچ هر کدوم از این کدها مثلا سرچ A ؛ اون پاراگراف سطح یک (در حالت اوت لاین) بشود و همینجور الی آخر یعنی با سرچ B اون پاراگراف سطح دو بشود و ...
      در فایلی که در ذیل هست برای این کار بنده یک ماکرو ذخیره کردم ولی وقتی ران میکنیمش فقط یک بار عمل سرچ و تبدیل به حالت اوت لاینو انجام میدهد و این روند رو تا آخر متن و نوشته ها ادامه نمیدهد .
      کد PHP:
      Sub Macro4()'' Macro4 Macro''    Selection.Find.ClearFormatting    With Selection.Find        .Text "A"        .Replacement.Text ""        .Forward True        .Wrap wdFindAsk        .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.Range.Paragraphs.Style ActiveDocument.Styles(wdStyleHeading1)    Selection.Find.ClearFormatting    With Selection.Find        .Text "A"        .Replacement.Text ""        .Forward True        .Wrap wdFindAsk        .Format False        .MatchCase False        .MatchWholeWord False        .MatchKashida False        .MatchDiacritics False        .MatchAlefHamza False        .MatchControl False        .MatchWildcards False        .MatchSoundsLike False        .MatchAllWordForms False    End WithEnd Sub 
      فایل های پیوست شده
      Last edited by bnyamin; 2014/10/27, 21:24.

      کامنت

      • Javid Mokhtari
        مدير تالار ويژوال بيسيك

        • 2012/01/16
        • 1212
        • 73.00

        #4
        با سلام.
        خب کدتون رو تو یک حلقه قرار بدین:

        کد PHP:
        For 1 To 5
        .   
        .
        .
        Next i 
        [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
        بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

        شرکت در دوره:
        [/FONT][/SIZE]
        [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
        [/B][/FONT][/SIZE]
        [/CENTER]
        [/INDENT]
        [/FONT]

        کامنت

        • bnyamin

          • 2013/05/29
          • 111

          #5
          نوشته اصلی توسط jansiz hayat
          با سلام.
          خب کدتون رو تو یک حلقه قرار بدین:

          کد PHP:
          For 1 To 5
          .   
          .
          .
          Next i 
          با تشکر از پاسختون .
          اینو باید در خط چندم تا چندم قرار بدم - بنده اصلا آشنایی با برنامه نویسی ندارم ممنون میشم راهنمایی بفرمایید - البته در جند حالت این کدو قرار دادم ولی چون نمیدونستم دائما ارور می داد
          در ضمن چرا وقتی کدی رو در انجمن پیست میکنم همه کد ها دنبال هم نوشته میشوند و هر کدوم در یک خط مجزا نوشته نمی شوند و قرار نمیگیرند ؟

          کامنت

          • Javid Mokhtari
            مدير تالار ويژوال بيسيك

            • 2012/01/16
            • 1212
            • 73.00

            #6
            البته چون ماکرو برخی شرایط دیگر رو هم بررسی میکنه بنابراین کدهای اضافه زیادی داخلش هست.کدی که شما گذاشتین بیشترشون لزومی به وجودشون نیست.

            کد PHP:
            Sub Macro4()
            For 
            1 To 5
                Selection
            .Find.ClearFormatting
                With Selection
            .Find
                    
            .Text "A"
                    
            .Replacement.Text ""
                    
            .Forward True
                    
            .Wrap wdFindAsk
                End With
                Selection
            .Find.Execute
                Selection
            .Range.Paragraphs.Style ActiveDocument.Styles(wdStyleHeading1)
                
            Selection.Find.ClearFormatting

            Next i
            End Sub 
            Last edited by Javid Mokhtari; 2014/10/28, 10:25.
            [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
            بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

            شرکت در دوره:
            [/FONT][/SIZE]
            [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
            [/B][/FONT][/SIZE]
            [/CENTER]
            [/INDENT]
            [/FONT]

            کامنت

            • bnyamin

              • 2013/05/29
              • 111

              #7
              نوشته اصلی توسط jansiz hayat
              البته چون ماکرو برخی شرایط دیگر رو هم بررسی میکنه بنابراین کدهای اضافه زیادی داخلش هست.کدی که شما گذاشتین بیشترشون لزومی به وجودشون نیست.

              کد PHP:
              Sub Macro4()
              For 
              1 To 5
                  Selection
              .Find.ClearFormatting
                  With Selection
              .Find
                      
              .Text "A"
                      
              .Replacement.Text ""
                      
              .Forward True
                      
              .Wrap wdFindAsk
                  End With
                  Selection
              .Find.Execute
                  Selection
              .Range.Paragraphs.Style ActiveDocument.Styles(wdStyleHeading1)
                  
              Selection.Find.ClearFormatting

              Next i
              End Sub 
              با تشکر فراوان- کاملا دقیق و درست و راه گشا
              چند تا سوال
              اول این که درج عدد 5 که لزومی نداره و بنده میتونم اونو به مثلا 10000 ارتقا بدمش ؛ برای متنی که مثلا 2000 کد a در اون هست ؟ جون عملا نمیدونم که چند تا از اون کد تو متن من هست ....
              دوم : این کدی که شما بیان فرمودید از استایل ها استفاده میکنه دیگه ؟ حالا اگه بخواهم level سطح دو رو داشته باشم ؛ بدین معنی که بعد از جستحوی b به عنوان کد دوم اونو به level سطح دو ببره ؛ فقط کافیه عبارت a رو با b تعویض کنم و wdStyleHeading1 رو به wdStyleHeading2 تغییر بدهم دیگه ؟ یعنی متغیر هاش فقط همین دوتا است دیگه؟

              کامنت

              چند لحظه..