جایگزینی یک کد اسکی با کدی دیگر در اکسل

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

    • 2014/01/14
    • 55

    جایگزینی یک کد اسکی با کدی دیگر در اکسل

    با سلام
    من ماکرو زیر رو ضبط کردم

    کد PHP:
    Sub Macro2()
    '
    Macro2 Macro
    '

    '
        
    Columns("B:B").Select
        Selection
    .Replace What:="ی"Replacement:="ي"LookAt:=xlPart_
            SearchOrder
    :=xlByRowsMatchCase:=FalseSearchFormat:=False_
            ReplaceFormat
    :=False
        Range
    ("A1").Select
    End Sub 
    هدف از ضبط ماکرو : جایگزینی حرف ی فارسی با ي عربی در ستون A1 (می خوام تمام "ی"ها عربی شوند.)

    مشکل : کد اسکی "ي" عربی (ALT+239) و کد اسکی "ی" فارسی (ALT+238) می باشد. موقع کپی کردن ماکروی بالا در پنجره ی ویژوال بیسیک، متاسفانه هر دو پارامتر Replace What و Replacement به "ي" عربی تبدیل می شود و عملا ماکروی من کار نمی کند. حالا من می خواهم با برنامه نویسی به اکسل بگم که هرجا کاراکتری با کد اسکی 238 دیدی تبدیلش کن به کاراکتری با کد اسکی 239 . چه جوری باید این ماکرو رو تغییر بدم یا چه برنامه ای بنویسم؟
  • Ali Parsaei
    مدير تالارتوابع اکسل

    • 2013/11/18
    • 1522
    • 71.67

    #2
    سلام،
    يک تکه از کد را اينجوري عوض کنيد:
    کد:
    Selection.Replace What:=Chr(236), Replacement:=Chr(237)
    فقط توجه کنيد که يک مدل "ى" ديگر هم داريم که با دو نوع "ى" که شما گفتيد فرق مي کند، آن "ى" اصلا" بر مبناي کد اسکي شناخته شده نيست و طبق
    unicode کد نويسي شده، اگر از آن نوع "ى" در متنهاي شما باشد مشکل ايجاد خواهد شد!
    [SIGPIC][/SIGPIC]

    کامنت

    • AmirAkbar

      • 2014/02/06
      • 118

      #3
      سلام ..
      بنظرم شما مشکل خاصی نداری ..
      یکی اینکه چرا باید ماکرو رو کپی کنی ؟ .. خوب ماکرو تو همون پنجره ویژوال بیسیک هست دیگه ..!
      دوم اینکه چرا باید موقع کپی کردن چنین مشکلی پیش بیاد ؟ ..

      و از مهمتر اینکه اکسل قبلا برای ما کدنویسی کرده! .. تو همون پنجره find and replace بخش جستجو (within) رو بذار روی کل workbook تا همه رو تعویض کنه ..! مگه هدفتون غیر از اینه ؟
      ...

      کامنت

      • afshin3a

        • 2014/01/14
        • 55

        #4
        نوشته اصلی توسط علي پارسا
        سلام،
        يک تکه از کد را اينجوري عوض کنيد:
        کد:
        Selection.Replace What:=Chr(236), Replacement:=Chr(237)
        فقط توجه کنيد که يک مدل "ى" ديگر هم داريم که با دو نوع "ى" که شما گفتيد فرق مي کند، آن "ى" اصلا" بر مبناي کد اسکي شناخته شده نيست و طبق
        unicode کد نويسي شده، اگر از آن نوع "ى" در متنهاي شما باشد مشکل ايجاد خواهد شد!
        به نکته بسیار مهمی اشاره کردید! این مشکل چند ماهه منو درگیر خودش کرده و هیچ راه حلی براش ندارم! ظاهرا "ی" من از نوع یونیکد هست. چکار کنم که اصلا این "ی" یونیکد نباشه.
        دلیلی که میخوام این این "ی" یای عربی باشه پست زیر است:
        مشکل با میل مرج Mailmerge
        اونجا جوابی نگرفتم! ممنون میشم کمکم کنید!

        کامنت

        • generalsamad
          مدير تالار توابع

          • 2014/06/22
          • 1496

          #5
          با سلام همونطور که دوستان گفتند به نظر من از Find and Replace استفاده کنید هم راحتتر و هم سریعتر میباشد برای تایپ ی عربی کلید shift+x رو بزنید و عمل جایگزینی رو انجام بدید
          [CENTER]
          [SIGPIC][/SIGPIC]
          [/CENTER]

          کامنت

          • afshin3a

            • 2014/01/14
            • 55

            #6
            نوشته اصلی توسط generalsamad
            با سلام همونطور که دوستان گفتند به نظر من از Find and Replace استفاده کنید هم راحتتر و هم سریعتر میباشد برای تایپ ی عربی کلید shift+x رو بزنید و عمل جایگزینی رو انجام بدید
            این کار با Find and Replace عملی هست. ولی من روزانه صدبار با این دیتاشیت کار میکنم. دنبال یه ماکرو هستم که با زدن یک دکمه مسله رو حل کنه و یا چیزی که مشکلمو ریشه ای حل کنه.

            کامنت

            • afshin3a

              • 2014/01/14
              • 55

              #7
              نوشته اصلی توسط AmirAkbar
              سلام ..
              بنظرم شما مشکل خاصی نداری ..
              یکی اینکه چرا باید ماکرو رو کپی کنی ؟ .. خوب ماکرو تو همون پنجره ویژوال بیسیک هست دیگه ..!
              دوم اینکه چرا باید موقع کپی کردن چنین مشکلی پیش بیاد ؟ ..

              و از مهمتر اینکه اکسل قبلا برای ما کدنویسی کرده! .. تو همون پنجره find and replace بخش جستجو (within) رو بذار روی کل workbook تا همه رو تعویض کنه ..! مگه هدفتون غیر از اینه ؟
              ...
              آخه ماکرو کار نمیکنه داداش! ببینید! ماکرو به این شکلی که می بینید ضبط می شه:
              کد PHP:
              Sub Macro2()
              '
              Macro2 Macro
              '

              '
                  
              Columns("B:B").Select
                  Selection
              .Replace What:="ي"Replacement:="ي"LookAt:=xlPart_
                      SearchOrder
              :=xlByRowsMatchCase:=FalseSearchFormat:=False_
                      ReplaceFormat
              :=False
                  Range
              ("A1").Select
              End Sub 
              یعنی اون "ی" فارسی رو نمیفهمه راستش. یعنی در هنگام ضبط هر دو هر دو پارامتر Replace What و Replacement به "ي" عربی تبدیل می شوند. اومدم دستی مقدار Replace What را روی "ی" فارسی تنظیم کردم که جواب نداد بازم.

              کامنت

              • AmirAkbar

                • 2014/02/06
                • 118

                #8
                اگر امکان داره فایل یا بخشی از اون رو که مشکل داره اینجا قرار بدید ..
                ...

                کامنت

                • afshin3a

                  • 2014/01/14
                  • 55

                  #9
                  نوشته اصلی توسط AmirAkbar
                  اگر امکان داره فایل یا بخشی از اون رو که مشکل داره اینجا قرار بدید ..
                  ...
                  Click image for larger version

Name:	2015-03-20_005053.jpg
Views:	1
Size:	201.9 کیلو بایت
ID:	125767
                  به تصویر بالا با دقت نگاه کنید! من در صفحه ی ویژوال بیسیک کلید "ی" فارسی را فشار می دهم، به طرز عجبیی اون "ي" عربی رو تایپ می کنه!! در نهایت کد به این صورت درمیاد که "ي" عربی را با "ي" عربی جایگزین کن!! در صورتی که من توی شیت اکسلم اصلا "ي" عربی ندارم!!! (چون صفحه کلیدم فارسیه) به همین خاطر ماکرو کار نمیکنه!
                  فایل های پیوست شده

                  کامنت

                  • afshin3a

                    • 2014/01/14
                    • 55

                    #10
                    با سلام
                    خودم حلش کردم!
                    ببینید شما باید کد اسکی را تغییر بدید!

                    کد PHP:
                    Sub Macro2()
                    '
                    Macro2 Macro
                    '

                    '
                        
                    Columns("B:B").Select
                        Selection
                    .Replace What:=ChrW(1740), Replacement:=ChrW(1610), LookAt:=xlPart_
                            SearchOrder
                    :=xlByRowsMatchCase:=FalseSearchFormat:=False_
                            ReplaceFormat
                    :=False
                        Range
                    ("A1").Select
                    End Sub 

                    کامنت

                    چند لحظه..