توضیحات کامل در مورد فایل
دانلود کد تبدیل عدد به حروف و بالعکس در اکسل (فارسی)
در این پروژه حرفهای با استفاده از VBA در اکسل، یک سیستم کامل برای تبدیل عدد به حروف فارسی و برعکس طراحی شده است که نهتنها قابلیت محاسبات دقیق را فراهم میکند، بلکه دارای رابط گرافیکی کاربرپسند نیز هست. در بسیاری از گزارشهای مالی، فاکتورها، اسناد حسابداری یا قراردادها، نیاز است اعداد به صورت حروف نوشته شوند تا از خطا، سوءبرداشت یا تقلب جلوگیری شود. همچنین در بعضی مواقع، اطلاعات بهصورت متنی وارد شدهاند و باید به عدد تبدیل شوند تا بتوان روی آنها محاسبات انجام داد. این ابزار دقیقاً برای همین منظور طراحی شده و با رعایت اصول برنامهنویسی ماژولار و ساختیافته، عملکردی حرفهای در اختیار کاربر قرار میدهد.
هسته اصلی این ابزار، دو تابع اصلی با نامهای NumToPersianText
و PersianTextToNumber
هستند. تابع اول وظیفه دارد عدد ورودی را به صورت حروف فارسی بازنویسی کند. در این فرآیند، ابتدا عدد به گروههای سهتایی تقسیم شده و برای هر گروه، ترکیبی از صدگان، دهگان و یکان با کمک آرایههایی از کلمات فارسی تشکیل میشود. سپس این ترکیبها با نامهای مقیاسی مانند «هزار»، «میلیون»، «میلیارد» و «تریلیون» همراه میشوند تا ساختار نهایی جمله عددی شکل بگیرد. در کنار آن، واحد پولی نیز بهصورت اختیاری (تومان، ریال، دلار یا یورو) در انتهای جمله افزوده میشود. ساختار ماژولار تابع ThreeDigitToText
نیز باعث شده بتوان این تبدیل را بهصورت دقیق و قابل توسعه انجام داد.
از سوی دیگر، تابع PersianTextToNumber
عکس عملیات قبل را انجام میدهد؛ یعنی یک متن فارسی شامل کلمات عددی مانند «پانصد و بیست و دو هزار و سیصد و ده» را گرفته و آن را به معادل عددی خود (مثلاً: 522310) تبدیل میکند. این تابع از یک دیکشنری هوشمند برای نگاشت کلمات به اعداد استفاده میکند و با تحلیل ساختار جمله عددی فارسی، مقدار نهایی را استخراج مینماید. همچنین عباراتی مانند «و»، «تومان» و سایر واژههای غیرمؤثر حذف میشوند تا پردازش دقیقتری انجام شود. استفاده از منطق تجمیع عددی و تفکیک مقیاسها باعث شده این تابع حتی برای متون پیچیده و طولانی نیز بهدرستی عمل کند.
نکته درخشان دیگر در این پروژه، سابروتینی با نام Create_ConverterSheet
است که یک شیت گرافیکی را بهطور کاملاً خودکار در فایل اکسل ایجاد میکند. این شیت شامل دو بخش اصلی است: بخش اول مربوط به تبدیل عدد به حروف است که شامل یک فیلد عددی، انتخاب لیست کشویی واحد پول، فیلد خروجی حروفی و یک دکمه برای اجرا است. بخش دوم نیز به تبدیل حروف به عدد اختصاص دارد که با وارد کردن متن عددی فارسی، عدد معادل آن نمایش داده میشود. این رابط گرافیکی به شکلی طراحی شده که کاربران بدون هیچ دانش برنامهنویسی، تنها با وارد کردن اطلاعات و کلیک روی دکمه، از مزایای این ابزار استفاده کنند.
در نهایت، این سیستم یک راهکار کامل و آماده برای فارسیسازی اسناد مالی در اکسل فراهم میکند که هم دقت بالایی دارد، هم کار با آن بسیار ساده است. کاربران میتوانند بدون نیاز به افزونه یا نرمافزار جانبی، از قدرت VBA برای تبدیل دقیق اعداد و حروف فارسی بهره ببرند. اگر شما در حوزه حسابداری، مدیریت مالی، آموزش، یا تهیه گزارشهای حرفهای فعالیت دارید، این ابزار میتواند بهرهوری شما را افزایش داده و از اشتباهات انسانی جلوگیری کند. همچنین این ماژول کاملاً قابل سفارشیسازی است و میتوانید آن را بر اساس نیاز خود توسعه داده یا با سایر سیستمهای اکسل خود یکپارچه کنید.
در این مقاله یک ماژول VBA بسیار کاربردی و حرفهای را معرفی میکنیم که قابلیت تبدیل اعداد به حروف فارسی و تبدیل حروف به عدد را فراهم میسازد. این ابزار بهویژه برای نرمافزارهای حسابداری، فرمهای مالیاتی، فاکتورها، گزارشات بانکی و کاربردهای بومیسازی شدهی اکسل بسیار مفید است.
✅ امکانات این کد:
-
تبدیل عدد به حروف فارسی با واحد پولی دلخواه (تومان، ریال، دلار، یورو)
-
تبدیل متن حاوی عدد فارسی به عدد معادل آن
-
رابط گرافیکی زیبا و اتوماتیک برای استفاده کاربر نهایی بدون نیاز به کدنویسی
-
پشتیبانی از میلیارد و تریلیون برای مقیاسهای بزرگ عددی
📌 بخش اول: تبدیل عدد به حروف فارسی
تابع NumToPersianText
این تابع عدد ورودی (مثلاً 1234567) را گرفته و آن را به صورت متنی فارسی (مثلاً: یک ميليون و دويست و سی و چهار هزار و پانصد و شصت و هفت تومان) تبدیل میکند.
Function NumToPersianText(ByVal MyNumber As Double, Optional CurrencyName As String = "تومان") As String
🔹 پارامترها:
-
MyNumber
: عددی که باید به حروف تبدیل شود -
CurrencyName
: واحد پول (پیشفرض: "تومان")
🔹 ویژگیها:
-
از آرایههایی برای صدگان، دهگان و یکان استفاده شده است
-
گروهبندی هر سه رقم برای اعمال نامهایی مانند هزار، میلیون، میلیارد و ... صورت گرفته
-
تابع کمکی
ThreeDigitToText
برای تبدیل هر گروه 3 رقمی به متن به کار میرود
📌 بخش دوم: تبدیل حروف به عدد
تابع PersianTextToNumber
این تابع متن فارسی شامل عدد (مثلاً: «يک هزار و پانصد و بيست تومان») را گرفته و معادل عددی آن را (مثلاً: 1520) برمیگرداند.
Function PersianTextToNumber(ByVal Text As String) As Double
🔹 ویژگیها:
-
از یک
Dictionary
برای نگاشت کلمات فارسی به اعداد استفاده شده -
کلمات مانند «و»، «تومان»، «ریال»، «دلار» از ورودی حذف میشوند تا تحلیل دقیقتر انجام شود
-
از منطق تجمیع عددی (جمع موقت و ضرب در ضرایب) برای بازسازی عدد استفاده شده است
📌 بخش سوم: ساخت شیت گرافیکی
سابروتین Create_ConverterSheet
این زیرروال یک شیت جدید با نام «تبديل عددحروف» ایجاد میکند و یک فرم ساده ولی کاربردی شامل:
-
ورودی عددی و انتخاب واحد پول
-
دکمه «تبديل به حروف» که تابع
NumToPersianText
را فراخوانی میکند -
ورودی متن حاوی عدد فارسی
-
دکمه «تبديل به عدد» برای اجرای تابع
PersianTextToNumber
Sub Create_ConverterSheet()
🔹 همچنین دکمهها با استفاده از ویژگی .OnAction
به توابع اجرایی متصل میشوند:
-
Run_NumToText
برای عدد به حروف -
Run_TextToNum
برای حروف به عدد
📌 اجرای دکمهها
سابروتینهای زیر برای تعامل کاربر با دکمههای فرم طراحی شدهاند:
Sub Run_NumToText()
Sub Run_TextToNum()
📝 نکات تکمیلی:
-
این کد بدون استفاده از فرمهای UserForm طراحی شده و کاملاً از طریق شیت اکسل تعامل دارد
-
قابل توسعه برای زبانهای دیگر یا واحدهای سفارشی مانند «سکه»، «گرم»، «متر» و ...
-
عملکرد روان حتی برای اعداد بزرگ با دقت بالا
نتیجهگیری
این ابزار هوشمند و ساده، روند تبدیل اعداد به حروف و برعکس را در اکسل برای زبان فارسی بهشکلی دقیق و روان پیادهسازی میکند. شما میتوانید آن را در سیستمهای مالی، حسابداری یا فرمهای الکترونیکی خود بهراحتی به کار بگیرید و تجربهای حرفهای در تعامل با دادهها ایجاد کنید.