وبسایت شخصی مصطفی مرادی کردی

عمومی - گرافیک - فناوری اطلاعات

هدایت به بالای صفحه

کسب درآمد
فناوری اطلاعات و ارتباطات - سیاسی - اجتماعی - فرهنگی - هنری - عمومی - جالب و خواندنی - ورزشی - افتخارات - تسلیت - بازار - آموزشی

ایمیل : moradikordi@gmail.com
همراه : 09115766189
آخرین نظرات

تقویم شمسی

تقویم

وضعیت آب و هوا

کسب درآمد

تبدیل اعداد انگلیسی به فارسی و بالعکس در ورد

در تهیه بسیاری از گزارشات در نرم‌افزار ورد نیاز است تا اعداد بصورت فارسی نمایش داده شوند. اگرچه روش‌های سریعی برای انجام اینکار وجود دارد ولی این روش‌ها موقتی می‌باشند و با توجه به تنظیمات متفاوت زبان در رایانه‌های مختلف، اعداد بطور دائمی بصورت فارسی نمایش داده نمی‌شوند. در ادامه مطلب با ما همراه باشید تا با نحوه انجام این کار بصورت دائمی و با امکان نمایش صحیح در تمام رایانه‌ها آشنا شوید.  

اگر در بخش Numeral تنظیمات نرم افزار Word، گزینه Context را انتخاب کنید اعدادی را که به فارسی تایپ می‌کنید و یا قبلا تایپ شده اند، بصورت فارسی و اعدادی را که به انگلیسی تایپ می‌کنید و یا قبلا تایپ شده‌اند، بصورت انگلیسی نمایش داده می‌شوند و یا اگر گزینه Arabic یا System را انتخاب کنید تمام اعداد (چه فارسی و چه انگلیسی) بصورت انگلیسی نشان داده می‌شوند و اگر گزینه Hindi را انتخاب کنید، تمام اعداد (چه فارسی و چه انگلیسی) بصورت فارسی نشان داده می‌شوند.

در مطلب حاضر، هدف ما این نیست که صرفا نحوه نمایش اعداد را در یک سیستم تغییر دهیم بلکه هدف این است که اعداد نوشته شده‌ی انگلیسی را به طور دائمی به فارسی تبدیل کنیم و یا بالعکس، چون اگر صرفا نحوه نمایش را تغییر دهیم در سیستم دیگر با تنظیمات دیگری اعداد بصورت متفاوت نمایش داده می‌شوند.  


روش اول: با استفاده از قابلیت جستجو و جایگزینی پیشرفته‌ی نرم افزار Word

در نرم‌افزار Word، برای تبدیل اعداد انگلیسی به فارسی و بالعکس از قابلیت جستجو و جایگزینی پیشرفته‌ی نرم افزار Word استفاده می‌کنیم.

۱- تبدیل اعداد انگلیسی به فارسی:

در نرم‌افزار ورد با فشار دادن کلیدهای Ctrl+H، کادر Find and Replace با تب فعال Replace باز می‌شود. برای جستجوی اعداد ابتدا در قسمت Find What کد #^ را تایپ کنید. سپس در قسمت Replace With کلیک کنید و از قسمت Format گزینه Language را انتخاب کنید. در پنجره Replace Language زبان Persian یا Farsi را انتخاب کنید و روی Ok کلیک کنید. اگر فونت خاصی هم مدنظرتان است از قسمت Format گزینه Font را انتخاب کنید و در قسمت Complex Script فونت را انتخاب نمایید و سپس و روی Ok کلیک کنید. در پایان روی گزینه Replace (اگر می‌خواهید بصورت موردی چند عدد را تبدیل کنید) یا Replace All (اگر می‌خواهید همه اعداد را تبدیل کنید) کلیک کنید تا فرآیند جایگزینی انجام شود.


🔵 تبدیل نقطه به ممیز در اعداد اعشاری:

با استفاده از روش فوق، امکان تبدیل اعداد انگلیسی به فارسی و بالعکس فراهم می‌شود اما آن چیزی که در حین این تبدیل، بسیار اهمیت دارد تغییر نماد جداکننده عدد اعشاری از عدد صحیح می‌باشد که در زبان فارسی ممیز () و در زبان انگلیسی نقطه (.) است. در حین این تغییر یا به عبارتی جایگزینی، بهتر است از علامت ممیز فارسی () استفاده کرد نه از علامت اسلش (/).

نماد ممیز فارسی () را نباید با کج‌خط (اسلش /) اشتباه گرفت. کج‌خط در صفحه کلید استاندارد ۹۱۴۷، در همان جای اصلی‌اش است و در متون فارسی برای درج تاریخ استفاده می‌شود، مانند ۱۳۸۹/۷/۲۳

علامت ممیز () در صفحه‌کلید استاندارد تازهٔ فارسی بر اساس استاندارد شمارهٔ ۹۱۷۴ ماتصا، با کلیدهای Shift + 3 تایپ می‌شود. پس از نصب صفحه کلید استاندارد اگر این شرتکات عمل نمی‌کند می‌توانید این علامت را با وارد کردن کد یونیکد آن یعنی 066B در قسمت Symbol پیدا کنید . بنابراین کافیست مطابق شکل زیر نقطه (.) را با ممیز فارسی () جایگزین کرد. اگر دقت کنید مشاهده می‌کنید که هنگام تایپ  در قسمت Replace With، ظاهرا علامت ویرگول لاتین (,) درج می‌شود اما نگران نباشید پس از جایگزینی در متن، علامت  نمایش داده می‌شود. البته دقت کنید که برای مشاهده این علامت، باید صفحه کلید استاندارد را نصب کرده باشید.

اگر به هر دلیلی نتوانستید ممیز فارسی را پیدا کنید و می‌خواهید از علامت اسلش (/) استفاده کنید باید دقت کنید که برای جایگزینی نقطه (.) با اسلش (/) یک مشکل بزرگ وجود دارد. 

مشکل این هست که همزمان با جایگزینی نقطه با ممیز مشاهده خواهید کرد که جای ارقام صحیح و اعشاری عدد مورد نظر عوض می‌شود (اینکار را انجام دهید تا نتیجه را ببینید). ضمنا حتما متوجه شده‌اید که این مشکل در هنگام تایپ نیز وجود دارد. وقتی از اسلش استفاده می‌کنید، جای قسمت اعشاری و صحیح جابجا می‌شود و شما باید اول اعشاری را تایپ کنید و بعد قسمت صحیح را (یعنی درست برعکس). این مشکل در هنگام استفاده از ممیز فارسی () وجود ندارد. بنابراین باید کاری کرد که هم نقطه با ممیز جایگزین شود و هم مشکل عوض شدن حل شود. در ضمن عدد هم فارسی شود.

------------------------------------------------------------------------------------------------------

۲- تبدیل اعداد فارسی به انگلیسی:

روش کار مشابه روش ارائه شده برای حالت ۱ یعنی تبدیل اعداد انگلیسی به فارسی است تنها باید در پنجره Replace Language زبان English را انتخاب کنید و روی Ok کلیک کنید.

🔵 تبدیل ممیز به نقطه در اعداد اعشاری:

بعد از انگلیسی کردن اعداد فارسی برای تبدیل ممیز به نقطه در اعداد اعشاری، اگر ممیز بکار رفته ممیز فارسی () باشد و کج‌خط (اسلش /) نباشد کافیست با استفاده از قابلیت جستجو و جایگزینی، ممیز فارسی را با نقطه جایگزین کرد اما اگر از اسلش استفاده شده باشد باید در قسمتFind What عبارت زیر را تایپ کنید.

([0-9]{1,})/([0-9]{1,})

سپس عبارت زیر را قسمت Replace With تایپ کنید.

\2.\1

در پنجره Replace Language زبان English را انتخاب کنید و روی Ok کلیک کنید. در پایان روی گزینه Replace یا Replace All کلیک کنید تا فرآیند جایگزینی انجام شود.

توجه: اگر پس از کلیک بر روی گزینه Replace با خطای زیر روبرو شدید، در کدی که در قسمت Find وارد کردید بجای ویرگول (,) از نقطه ویرگول (;) استفاده کنید.
The Find What text contains a Pattern Match expression which is not valid.
([0-9]{1;})/([0-9]{1;})

روش دوم: ماکرونویسی


 مراحل کار:

۱- در ورد ۲۰۰۳، از منوی Tools بر روی دکمه Macro و از آنجا Record New Macro را بزنید. به جای این مراحل می‌توانید به ترتیب کلیدهای Alt+T و M و R را تایپ کنید.

در نسخه‌های ورد ۲۰۱۰ به بعد به ترتیب کلیدهای Alt+T و M و R را تایپ کنید یا در ورد ۲۰۰۷ از تب ،View گروه Macros، گزینه Record Macros را انتخاب کنید.

با این کار، کادر Record Macro باز می‌شود.

۲- در قسمت Macro Name عبارت En2Fa را تایپ کنید.

۳- بر روی شکل صفحه کلید کلیک کنید یا کلیدهای Alt+K را فشار دهید. کادر Customize Keyboard باز می‌شود.

۴- یک ترکیب از صفحه کلید برای ایجاد میانبر در قسمت Press new shortcut key فشار دهید. مثلاً Alt+F. سپس دکمه Assign را بزنید و Close کنید.

۵- از منوی View گروه Macros، بر روی دکمه Stop Recording کلیک کنید یا از کلیدهای Alt+T و M و R استفاده کنید.

۶- کلیدهای Alt+F8 را فشار دهید تا کادر ماکروها باز شود. ماکروی En2Fa را پیدا نموده و روی آن کلیک کنید. دکمه Edit را فشار دهید تا وارد محیط Visual Basic شوید.

۷- تمام عبارت‌های بین Sub En2Fa() و End sub را پاک کنید و به جای آن‌ها، کدهای زیر را عیناً بین این دو عبارت کپی و پیست کنید.

Dim Ch, Ch2, MyRange, MyNumber As String
'pctarfand.ir & tarfandha.blog.ir'
    Dim Dot As Integer
    Dim IsItNumber As Boolean
    Dim EmptyRange As Range
    IsItNumber = True
    Dot = 0
    With Selection.Find
        Do
            .ClearFormatting
            .Execute FindText:="^#", Forward:=True, Wrap:=wdFindAsk
        Loop While (Selection.LanguageID = 1065 And Selection.Find.Found = True)
    End With
    Selection.MoveEnd Unit:=wdCharacter, Count:=-1
    Do
        If Ch = "." Then
            Dot = Dot + 1
            Selection.MoveEnd Unit:=wdCharacter, Count:=1
            Ch2 = ActiveDocument.Range(Start:=Selection.End, End:=Selection.End + 1)
                If (Ch2 = "1" Or Ch2 = "2" Or Ch2 = "3" Or Ch2 = "4" Or Ch2 = "5" Or Ch2 = "6" Or Ch2 = "7" Or Ch2 = "8" Or Ch2 = "9" Or Ch2 = "0") Then
                    IsItNumber = True
                Else
                    IsItNumber = False
                    Selection.MoveEnd Unit:=wdCharacter, Count:=-2
                End If
        End If
        Selection.MoveEnd Unit:=wdCharacter, Count:=1
        Ch = ActiveDocument.Range(Start:=Selection.End, End:=Selection.End + 1)
    Loop While (IsItNumber = "false" Or Ch = "1" Or Ch = "2" Or Ch = "3" Or Ch = "4" Or Ch = "5" Or Ch = "6" Or Ch = "7" Or Ch = "8" Or Ch = "9" Or Ch = "0" Or Ch = "." Or Ch = ",")
    MyRange = ActiveDocument.Range(Start:=Selection.Start, End:=Selection.End)
    MyNumber = MyRange
    Selection.Delete
    Application.Keyboard (1065)
    Selection.LanguageID = 1065
    Set EmptyRange = Selection.Range
    EmptyRange.Start = Selection.Start
    Selection.TypeText Text:="ا"
    EmptyRange.End = Selection.End
    If (Dot > 0) Then
        Spl = Split(MyRange, ".")
        If (Dot = 1) Then
            Selection.TypeText Text:=Spl(1) & "/" & Spl(0)
        Else
            For i = 0 To (Dot - 1)
                Selection.TypeText Text:=Spl(i) & "-"
            Next
            Selection.TypeText Text:=Spl(Dot)
        End If
    Else
        Selection.TypeText Text:=MyNumber
    End If
EmptyRange.Text = ""
Application.Keyboard (1033)
Selection.LanguageID = 1033
دو خط آخر اصلاحاتی کمی است که به انتهای کد اضافه شده است.

۸- کلیدهای Ctrl+S را بفشارید تا کد ماکرو ذخیره شود. حال پنجره Microsoft Visual Basic را ببندید.

۹- مراحل درست کردن ماکرو تمام شد. اکنون اگر در محیط ورد کلیدهای Alt+F را بزنید، نرم‌افزار ورد اولین عدد انگلیسی فایلتان را پیدا می‌کند، پاک می‌کند و آن را به فارسی تبدیل می‌کند.

توجه: اگر در فایل وردتان از Fieldهای خودکار استفاده کرده‌اید از این برنامه برای فارسی کردن آن‌ها استفاده نکنید.

🔵 تبدیل اعداد فارسی به انگلیسی (اعشاری و صحیح):

کد زیر مشابه کد فوق است البته با کمی تغییر که خودم انجام دادم تا بتوان اعداد صحیح و اعشاری فارسی را به انگلیسی تبدیل کرد.

مراحل کار:

۱- در ورد ۲۰۰۳، از منوی Tools بر روی دکمه Macro و از آنجا Record New Macro را بزنید. به جای این مراحل می‌توانید به ترتیب کلیدهای Alt+T و M و R را تایپ کنید.

در نسخه‌های ورد ۲۰۱۰ به بعد به ترتیب کلیدهای Alt+T و M و R را تایپ کنید یا در ورد ۲۰۰۷ از تب ،View گروه Macros، گزینه Record Macros را انتخاب کنید.

با این کار، کادر Record Macro باز می‌شود.

۲- در قسمت Macro Name عبارت Fa2En را تایپ کنید.

۳- بر روی شکل صفحه کلید کلیک کنید یا کلیدهای Alt+K را فشار دهید. کادر Customize Keyboard باز می‌شود.

۴- یک ترکیب از صفحه کلید برای ایجاد shortcut در قسمت Press new shortcut key فشار دهید. مثلاً Alt+E. سپس دکمه Assign را بزنید و Close کنید.

۵- از منوی View گروه Macros، بر روی دکمه Stop Recording کلیک کنید یا از کلیدهای Alt+T و M و R استفاده کنید.

۶- کلیدهای Alt+F8 را فشار دهید تا کادر ماکروها باز شود. ماکروی Fa2En را پیدا نموده و روی آن کلیک کنید. دکمه Edit را فشار دهید تا وارد محیط Visual Basic شوید.

۷- تمام عبارت‌های بین Sub Fa2En() و End sub را پاک کنید و به جای آن‌ها، کدهای زیر را عیناً بین این دو عبارت کپی و پیست کنید.

Dim Ch, Ch2, MyRange, MyNumber As String
'pctarfand.ir & tarfandha.blog.ir'
    Dim Dot As Integer
    Dim IsItNumber As Boolean
    Dim EmptyRange As Range
    IsItNumber = True
    Dot = 0
    With Selection.Find
        Do
            .ClearFormatting
            .Execute FindText:="^#", Forward:=True, Wrap:=wdFindAsk
        Loop While (Selection.LanguageID = 1033 And Selection.Find.Found = True)
    End With
    Selection.MoveEnd Unit:=wdCharacter, Count:=-1
    Do
        If Ch = "/" Then
            Dot = Dot + 1
            Selection.MoveEnd Unit:=wdCharacter, Count:=1
            Ch2 = ActiveDocument.Range(Start:=Selection.End, End:=Selection.End + 1)
                If (Ch2 = "1" Or Ch2 = "2" Or Ch2 = "3" Or Ch2 = "4" Or Ch2 = "5" Or Ch2 = "6" Or Ch2 = "7" Or Ch2 = "8" Or Ch2 = "9" Or Ch2 = "0") Then
                    IsItNumber = True
                Else
                    IsItNumber = False
                    Selection.MoveEnd Unit:=wdCharacter, Count:=-2
                End If
        End If
        Selection.MoveEnd Unit:=wdCharacter, Count:=1
        Ch = ActiveDocument.Range(Start:=Selection.End, End:=Selection.End + 1)
    Loop While (IsItNumber = "false" Or Ch = "1" Or Ch = "2" Or Ch = "3" Or Ch = "4" Or Ch = "5" Or Ch = "6" Or Ch = "7" Or Ch = "8" Or Ch = "9" Or Ch = "0" Or Ch = "/")
    MyRange = ActiveDocument.Range(Start:=Selection.Start, End:=Selection.End)
    MyNumber = MyRange
    Selection.Delete
    Application.Keyboard (1033)
    Selection.LanguageID = 1033
    Set EmptyRange = Selection.Range
    EmptyRange.Start = Selection.Start
    Selection.TypeText Text:="?"
    EmptyRange.End = Selection.End
    If (Dot > 0) Then
        Spl = Split(MyRange, "/")
        If (Dot = 1) Then
            Selection.TypeText Text:=Spl(1) & "." & Spl(0)
        Else
            For i = 0 To (Dot - 1)
                Selection.TypeText Text:=Spl(i) & "-"
            Next
            Selection.TypeText Text:=Spl(Dot)
        End If
    Else
        Selection.TypeText Text:=MyNumber
    End If
EmptyRange.Text = ""
Application.Keyboard (1065)
Selection.LanguageID = 1065

۸- کلیدهای Ctrl+S را بفشارید تا کد ماکرو ذخیره شود. حال پنجره Microsoft Visual Basic را ببندید.

۹- مراحل درست کردن ماکرو تمام شد. اکنون اگر در محیط ورد کلیدهای Alt+E را بزنید، نرم‌افزار ورد اولین عدد فارسی فایلتان را پیدا می‌کند، پاک می‌کند و آن را به انگلیسی تایپ می‌کند.

توجه: اگر در فایل وردتان از Fieldهای اتوماتیک استفاده کرده‌اید از این برنامه برای انگلیسی کردن آن‌ها استفاده نکنید.

۹۵/۱۰/۱۱
مصطفی مرادی کردی

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی