قبلا مطلبی با عنوان حل مشکل نمایش مشکل حروف فارسی در اکسل داشتیم ، اما با وجود انجام آن تنظیمات هم متاسفانه بعضی از سیستمها همچنان هر جا که برنامه نویس از حروف فارسی استفاده کرده حروف به هم ریخته نمایش می دهد که نمونه آن را در تصویر زیر مشاهده می کنید .
اگر تنظیمات Region ویندوز را انجام داده باشید و همچنان با این مشکل مواجه شوید ، باید بگویم که این مورد باید توسط برنامه نویس برطرف شود و در ادامه آموزش لازم را خواهم داد.
فهرست محتوا
اسکی کد چیست و معادل حروف فارسی در اکسل
برای هر حرف یک کد وجود دارد که مثلا معادل کد حرف “آ” عدد 1570 می شود و معادل حرف “ا” عدد 1575 یعنی چی ؟ با مثال توضیح می دهم.
در اکسل ما دو تابع داریم یکی تابع UNICHAR و دیگری تایع UNICODE که وقتی از تابع اول استفاده کنیم و آرگومان داخل آن را عدد 1570 قرار دهیم نتیجه حرف “آ” خواهد شد .
و برعکس اگر از تابع دوم استفاده کنیم و در آرگومان آن حرف “آ” را قرار دهیم ، نتیجه عدد 1570 خواهد شد .
خب این چه ربطی به مشکل حروف فارسی در اکسل دارد ؟
در استفاده عادی شاید خیلی اهمیت نداشته باشد ولی در قسمت کدنویسی VBA اهمیت بالایی دارد ، چرا که همانطور که در افزونه تبدیل عدد به حروف در ورد مشاهده کردید ، هر جا که من مستقیما از کلمه فارسی در کدنویسی استفاده کرده بودم نتیجه روی بعضی از سیستمها با وجود انجام تنظیمات مربوطه درست نبود .
استفاده از UNICODE برای حل مشکل حروف فارسی در اکسل
فرض کنید در محیط VBA میخواهیم کدی بنویسیم که یک پیغام فارسی نمایش دهد ، مثلا “سلام دنیا” را نمایش دهد .
روش اولی که میتوانیم بنویسیم :
MsgBox "سلام دنيا ", vbMsgBoxRight + vbInformation, "آفيس باز"
این روش روشی است که خیلی از افراد از آن استفاده میکنند و مشکلی هم ندارد ، ولی اگر قرار باشد که برنامه شما در اختیار تعداد زیادی از افراد قرار بگیرد ، این احتمال وجود دارد که برخی از کاربران با نمایش حروف به هم ریخته مواجه شوند و این همان مشکل حروف فارسی در اکسل است که باید برطرف شود .
روش دوم :
Dim strMsg As String Dim strMsgTitle As String strMsg = ChrW(1587) & ChrW(1604) & ChrW(1575) & ChrW(1605) & ChrW(32) & ChrW(1583) & ChrW(1606) & ChrW(1740) & ChrW(1575) strMsgTitle = ChrW(1570) & ChrW(1601) & ChrW(1740) & ChrW(1587) & ChrW(32) & ChrW(1576) & ChrW(1575) & ChrW(1586) MsgBox strMsg, vbMsgBoxRight + vbInformation, strMsgTitle
هر دو کد بالا نتیجه یکسان را نمایش می دهد ولی روش دوم در صورتی که تنظیمات ویندوز به درستی انجام شده باشد دیگر به صورت حروف به هم ریخته نمایش نخواهد داد چرا که از تابع chrw در آن استفاده شده است.
چگونه کلمه را تبدیل به ASCII کنیم ؟
یک فایل اکسل آماده کرده ام که در ادامه برای دانلود رایگان قرار داده ام و به راحی کافیت که کلمه یا جمله خود را بنویسید و معادل حروف فارسی در اکسل را تحویل بگیرید .
برای درک بهتر کافیست تصویر زیر را ببینید.
مشاهده ویدیو اول این مطلب آموزشی از آفیس باز به شما در درک بهتر موضوع کمک خواهد کرد ، اگر سوال یا ابهامی داشتید در قسمت نظرات مطرح نمائید.