
لینک کوتاه : https://magicfile.ir/?p=4622
دانلود برنامه ساخت سالنامه شمسی در اکسل با VBA
در این پست قصد داریم یک ماکرو پیشرفتهی سالنامه شمسی در Excel VBA را معرفی کنیم که به صورت خودکار، تقویم کامل یک سال شمسی را به تفکیک ماهها ایجاد کرده و اطلاعات دقیق روزها، تعطیلات رسمی، مناسبتها و تاریخ میلادی را نمایش میدهد. این ماکرو با دریافت سال شمسی از کاربر (مثلاً ۱۴۰۳) شروع میکند و با استفاده از توابع اختصاصی تاریخ شمسی، صفحات جداگانهای برای هر ماه ایجاد مینماید.
در هر شیت ماهانه، جدول کاملی شامل شماره روز، تاریخ شمسی، معادل تاریخ میلادی، نام روز هفته، وضعیت تعطیلی، و یک ستون برای یادداشتهای شخصی نمایش داده میشود. همچنین رنگبندی هوشمند برای تمایز بین روزهای کاری، جمعهها و تعطیلات رسمی در نظر گرفته شده که خوانایی و زیبایی تقویم را به شکل قابل توجهی افزایش میدهد. روزهای تعطیل با پسزمینه قرمز کمرنگ و روزهای جمعه با زرد مشخص شدهاند.
ماکرو به کمک یک دیکشنری از تعطیلات رسمی تعریفشده، مناسبتهای ملی را در تقویم وارد میکند. این لیست اولیه قابل توسعه است و کاربر میتواند بهراحتی مناسبتهای دلخواه را اضافه کند. همچنین برای تبدیل تاریخ شمسی به میلادی و تعیین روز هفته از توابع سفارشی مانند ShamsiToMiladi
و DayWeek
استفاده شده که دقت بالایی دارند.
در بالای هر شیت، یک هدر بزرگ و زیبای عنواندار درج میشود که نام ماه و سال را نمایش میدهد و با فونت فارسی و رنگآمیزی حرفهای طراحی شده است. علاوه بر آن، دکمههای ناوبری "ماه قبل" و "ماه بعد" در هر شیت تعبیه شدهاند تا کاربر بتواند به راحتی بین ماهها جابجا شود؛ این قابلیت با استفاده از یک تابع جداگانه به نام CreateNavigationButtons
پیادهسازی شده است.
در پایان اجرای ماکرو، Excel به صورت خودکار به اولین ماه (فروردین) منتقل میشود و پیامی برای اطلاع از موفقیت عملیات به کاربر نمایش داده میشود. این ابزار نهتنها برای کاربردهای شخصی، بلکه برای محیطهای کاری، مدارس، و برنامهریزیهای سالانه نیز بسیار مفید و کارآمد است و میتواند مبنای توسعه سیستمهای جامعتری مانند مدیریت حضور و غیاب، تقویم آموزشی یا زمانبندی پروژهها قرار گیرد.
نمونه تصاویر در زمان اجرا
یک ماکروی پیشرفته Excel VBA را معرفی میکنیم که با استفاده از آن میتوانید تنها با وارد کردن یک عدد (سال شمسی)، یک 📅 سالنامه شمسی کامل و گرافیکی در اکسل ایجاد کنید. این تقویم به صورت خودکار شامل اطلاعاتی از جمله تاریخ شمسی، معادل میلادی، روز هفته، تعطیلات رسمی و امکان درج یادداشت است.
✅ امکانات اصلی این ماکرو:
-
دریافت سال شمسی از کاربر (مثلاً 1403)
-
تولید 12 شیت جداگانه برای هر ماه سال شمسی
-
محاسبه تعداد روزهای هر ماه بر اساس سال وارد شده
-
نمایش:
-
تاریخ شمسی (با فرمت ۱۴۰۳/۰۱/۰۱)
-
معادل میلادی
-
نام روز هفته (شنبه تا جمعه)
-
مشخصکردن تعطیلات رسمی با رنگ متفاوت
-
جمعهها با رنگ مجزا و عنوان "تعطیل هفتگی"
-
روزهای عادی با رنگبندی راهراه جهت خوانایی بیشتر
-
ستون مخصوص "یادداشت" برای هر روز
-
-
طراحی گرافیکی زیبا شامل:
-
هدر با فونت بزرگ و رنگ آرام
-
رنگبندی متفاوت برای نوع روزها (تعطیل رسمی، جمعه، عادی)
-
فونت فارسی خوانا (مانند B Nazanin)
-
-
ایجاد دکمههای ناوبری "ماه قبل / ماه بعد" در هر ماه برای حرکت سریع بین شیتها
-
حذف خودکار شیتهای قبلی با همان نام برای جلوگیری از تکرار
🧠 نکات فنی و کدنویسی:
-
استفاده از توابع کمکی مانند
MahName()
،MahDays()
،ShamsiToMiladi()
،DayWeek()
وSlash()
برای محاسبه دقیق اطلاعات تاریخ شمسی. -
استفاده از شیء
Dictionary
برای ثبت و بررسی تعطیلات رسمی. -
کنترل دقیق رنگبندی و استایل سلولها با دستورات VBA مانند
.Interior.Color
,.Font.Color
,.Font.Bold
. -
استفاده از
Application.InputBox
برای دریافت ورودی کاربر. -
ایجاد دکمههای قابل کلیک با
.Buttons.Add
و تعیین رویدادهای مربوطه با.OnAction
.
🛠 توابع مورد نیاز (باید جداگانه تعریف شوند):
برای اجرای صحیح این ماکرو، لازم است توابع زیر نیز در ماژول دیگری در فایل شما موجود باشند:
-
MahName(mah As Integer) As String
: برگرداندن نام فارسی ماه. -
MahDays(sal As Integer, mah As Integer) As Byte
: محاسبه تعداد روزهای ماه. -
ShamsiToMiladi(shamsiDate As String) As Date
: تبدیل تاریخ شمسی به میلادی. -
DayWeek(shamsiDate As String) As String
: نام روز هفته شمسی. -
Slash(dateString As String) As String
: نمایش تاریخ با اسلش (مثلاً ۱۴۰۳/۰۱/۰۵).
🎯 کاربردها:
-
مناسب برای مدیران، دبیران، مدارس، ادارات و شرکتهایی که با تقویم شمسی کار میکنند.
-
مناسب برای برنامهریزی و ثبت رخدادهای ماهانه و روزانه.
-
پایهای برای ساخت تقویمهای کاری، ثبت حضور و غیاب یا حتی سالنامههای آموزشی.
📥 دانلود و استفاده:
برای استفاده از این کد کافی است:
-
در محیط VBA اکسل یک ماژول جدید ایجاد کنید.
-
کد اصلی
سالنامه_شمسي_پيشرفته
را در ماژول قرار دهید. -
توابع مورد نیاز را نیز به ماژول جداگانهای اضافه کنید.
-
فایل را ذخیره کرده و با اجرای ماکرو از تقویم شمسی حرفهای خود لذت ببرید!
در مجموع، این ماکرو پیشرفته تقویم شمسی در Excel VBA، ابزاری کاربردی و قدرتمند برای مدیریت زمان، برنامهریزی روزانه و مشاهده مناسبتها در یک نگاه فراهم میکند. با توجه به استفاده از توابع سفارشی دقیق برای تاریخ شمسی، عملکرد آن بسیار قابل اعتماد بوده و نتایج تولید شده با دقت بالا و بدون نیاز به افزونههای جانبی قابل استفاده هستند.
از آنجا که طراحی کد بهصورت ماژولار انجام شده، توسعه و سفارشیسازی آن برای نیازهای خاص کاربران (مانند افزودن تعطیلات سازمانی، مناسبتهای شخصی، یا اتصال به سایر شیتهای کاری) به سادگی امکانپذیر است. کاربران حرفهای میتوانند با کمی تغییر در کد، قابلیتهایی مثل هشدار موعدهای مهم، پیوند با فایلهای دیگر یا ارسال ایمیل یادآوری نیز اضافه کنند.
در صورتی که به دنبال تقویمی دقیق، زیبا و کاملاً شمسی برای اکسل هستید که قابلیت شخصیسازی بالایی نیز داشته باشد، این پروژه میتواند انتخابی عالی باشد. همچنین میتوانید نسخه کامل کد VBA این تقویم را از طریق لینک زیر دریافت کرده و آن را به پروژههای خود اضافه کنید یا برای انتشار در سازمان و وبسایتهای خود از آن استفاده نمایید.
برای شما کاربران عزیز پیشنهاد دانلود داده می شود.