-
آموزش روشهای تبدیل تاریخ میلادی به شمسی در MSP
اغلب یکی از دغدغه های کارشناسان برنامه ریزی و کنترل پروژه هنگام استفاده از نرم افزار مایکروسافت پراجکت ، نبود تقویم شمسی در این نرم افزار است. این کمبود باعث شده است تا کاربران ، مجبور به استفاده از تقویم میلادی در این نرم افزار باشند که خود باعث اتلاف زمان برای پیدا کردن معادل تاریخ شمسی و ملموس نبودن برنامه زمان بندی تهیه شده برای مدیران و کارشناسانی است که می خواهند از آن شده استفاده نمایند. شما بعنوان کارشناس یا مدیر یک پروژه 3 راه پیش رو دارید تا بتوانید تبدیل تاریخ میلادی به شمسی در MSP را پیاده سازی کنید. اگر می خواهید بدانید این سه راه چیست بهتر است با ادامه این مطلب با ما همراه باشید.
یک سناریو واقعی!
فرض کنید قرار است برنامه زمان بندی خود را که با استفاده از تاریخ های میلادی تهیه شده است در جلسه ای با حضور مدیران ارشد سازمان ارائه کنید. هنگامی که اولین اسلاید از نمای گانت چارت را روی پرده نمایش می اندازید و شروع به توضیح دادن برنامه می کنید ، مثلأ می گوئید فعالیت خاک برداری ما 19 دسامبر شروع میشود و 10 روز زمان خواهد برد ، با توجه به محدودیت های موجود باید اجرای بتن مگر در فاز 1 از 6 ژانویه شروع شود و همینطور به ارائه خود ادامه می دهید.
اولین سوالی که ذهن اغلب شنوندگان را به خود مشغول ساخته است تاریخ های گفته شده در برنامه است و اینکه باید برای درک بیشتر برنامه معادل شمسی تاریخ های میلادی ارائه شده را پیدا کنند تا با توجه به منابع مالی سازمان بتوانند تصمیم بگیرند که آیا قادر به تأمین منابع مالی مذکور برای اجرای فعالیت ها هستند یا خیر؟
از جلسه با مدیران که بگذریم نوبت به استخراج برنامه کاری کارگاه ها در بازه های زمانی هفتگی و ماهانه می رسد که آن هم با تاریخ میلادی باید در اختیار سرپرستان و کارشناسان اجرایی قرار گیرد و بالطبع آنان نیز باید برنامه مذکور را در تعامل با پیمانکاران عملیاتی کنند.
تجربه چندین ساله بنده در کارگاه های ساختمانی نشان داده است که ارائه برنامه بدون تاریخ های شمسی ، شانس استفاده و میزان انگیزه در اجرایی کردن آن را در سطح کارشناسان اجرایی به میزان چشمگیری کاهش میدهد. خوب بهتره است برویم و یک راه حل از جنس ایرانی برای این مشکل پیدا کنیم. برای تبدیل تاریخ میلادی به شمسی در MSP سه راه حل پیش رو داریم:
-
استفاده از کد و نمایش معادل تاریخ میلادی به تاریخ شمسی
را توضیح می دهم که البته استفاده از آن نسبت به روش دوم سختی هایی دارد که در ادامه با آنها اشاره خواهم کرد. برای شروع کار می بایست دو ستون را از نوع Text به صفحه کاری در نمای گانت اضافه کنید ، برای این منظور از قسمت Add New Column اقدام کنید. سپس روی یکی از سر ستون هایی که ایجاد کردید راست کلیک کنید و گزینه Custom Fields را انتخاب کنید. از پنجره باز شده بخش Custom Attributes دکمه Formula را فشار دهید.
حالا از طریق لینک زیر فایل فشرده که حاوی دو فایل با فرمت Text یکی با نام Start برای تبدیل تاریخ شروع فعالیت ها از حالت میلادی به شمسی و دیگری با نام Finish برای تبدیل تاریخ پایان فعالیت ها از حالت میلادی به شمسی مورد استفاده قرار خواهد گرفت را دانلود کنید.
فایل دانلود شده را از حالت فشرده خارج کنید!
برای خارج کردن فایل از حالت فشرده می توانید از نرم افزارهایی مانند WinRar استفاده کنید. محتویات آن فایل ها را در پنجره کوچک باز شده Copy و Paste کرده و دکمه Ok را فشار دهید. در پنجره ای که بشکل سوال از شما پرسیده می شود مجددأ دکمه Ok را فشار دهید ، حالا از قسمت calculation for task and group summary rows گزینه use formula را تیک بزنید و در نهایت دکمه Ok را فشار دهید.
ملاحظه خواهید کرد که تاریخ ها به شمسی به نمایش در خواهند آمد. اما معایب استفاده از این روش چیست؟ در زیر به بخش از این معایب اشاره می کنم :
- در این روش ما صرفأ یک نمایش از تاریخ های شمسی معادل سازی شده داریم.
- در نمودار گانت کماکان تاریخ ها بشکل میلادی نمایش داده می شوند.
- امکان انتخاب تاریخ شمسی در بخش ها مختلف نرم افزار مثل تقویم ، تاریخ شروع پروژه ، باکس تاریخ برای بروز رسانی و … وجود ندارد.
- بدلیل استفاده از کدها ممکن است فایل هنگ کند و مجبور به باز و بست کردن برنامه شوید.
شمسی نشدن نمای گانت چارت
مطلب پیشنهادی >> آموزش جامع سفارشی سازی تقویم در MSP
شمسی نشدن تقویم
-
استفاده از ماکرو نویسی در نرم افزار MSP
استفاده از ماکرو نویسی در محیط VBA نرم افزار مایکروسافت پراجکت است. برای استفاده از این روش ابتدا بایستی با ورود به Options نرم افزار وارد بخش Trust Center شده روی دکمه Trust Center Settings و سپس Macro Settings شده گزینه چهارم یعنی Enable All Macros را انتخاب می کنیم و در نهایت روی دکمه Ok کلیک کرده و از پنجره خارج می شویم.
حالا از ستون های موجود در نمای گانت چارت Text1 و Text2 را به صفحه اضافه می کنیم ، در ادامه از منوی View در بخش Macros گزینه Visual Basic را انتخاب کنید یا از کلید ترکیبی Alt+F11 استفاده کنید. در این لحظه وارد بخش کد نویسی می شوید حالا از منوی Insert گزینه Module را انتخاب کرده کدهای زیر را کپی کرده در این قسمت Paste کنید.
برای اجرای ماکرو ایجاد شده ، مجددأ از منوی View در بخش Macros گزینه Wiew Macros را انتخاب و از پنجره باز شده گزینه Run را انتخاب کنید ،ملاحظه خواهید کرد که تاریخ های معادی سازی شده میلادی در Text1 و Text2 به نمایش در می آید.
Option Base 0 ' WebSite : www.mrplanner.ir ' Telegram Channel : @Teachexcel @Mrplanner_ir Public Const SHBaseYear = 1278 Public Const SHBaseMonth = 12 Public Const SHBaseDay = 29 Function SHIsLeap_Year(ByVal ShYear As Long) As Boolean Dim LEAP1 As Single SHIsLeap_Year = False LEAP1 = (8 * ShYear + 22) / 33 - 0.001 LEAP1 = LEAP1 - Int(LEAP1) If (LEAP1 > 0.77) Or (LEAP1 = 0) Then SHIsLeap_Year = True End Function Function SHLeap_Count(ByVal ShYear As Long) As Integer Dim LEAP1 As Integer, LEAP2 As Integer, LEAP3 As Integer LEAP1 = (ShYear - 22) \ 33 LEAP2 = ((ShYear - 22) Mod 33) \ 4 If ShYear >= 22 Then LEAP3 = 6 + (8 * LEAP1) + LEAP2 '6=(22 \ 4) + 1) leap days til Shyear=22 Else LEAP3 = (ShYear + 3) \ 4 'the first leap year as Shyear=1 End If If (ShYear - 21) Mod 33 = 0 Then LEAP3 = LEAP3 - 1 SHLeap_Count = LEAP3 End Function Sub CH_To_SH(ByVal CHDate As Date, Year As Long, Month As Long, Day As Long) Dim DayNum As Long, ReminderDay As Long Dim NewYear As Long, NewMonth As Long, NewDay As Long NewYear = 0 NewMonth = 0 NewDay = 0 DayNum = Round(CHDate) - 80 NewYear = (DayNum \ 365) + SHBaseYear + 1 ReminderDay = (DayNum Mod 365) - (SHLeap_Count(NewYear - 1) - SHLeap_Count(SHBaseYear)) If ReminderDay <= 0 Then NewYear = NewYear - 1 ReminderDay = 365 + (DayNum Mod 365) ReminderDay = ReminderDay - (SHLeap_Count(NewYear - 1) - SHLeap_Count(SHBaseYear)) End If If ReminderDay <= 0 Then NewYear = NewYear - 1 If SHIsLeap_Year(NewYear) Then ReminderDay = 366 Else ReminderDay = 365 End If End If NewMonth = ((ReminderDay - 1) \ 31) + 1 NewDay = ReminderDay Mod 31 If NewDay = 0 Then NewDay = 31 If NewMonth > 6 Then NewDay = NewDay + (NewMonth - 7) NewMonth = NewMonth + ((NewDay - 1) \ 30) NewDay = (NewDay Mod 30) If NewDay = 0 Then NewDay = 30 End If Year = NewYear Month = NewMonth Day = NewDay End Sub Function FDate(ADate As String, Zero As Boolean, Optional Four As Boolean = False) As String Dim Y As Long, M As Long, D As Long Dim ys As String, ms As String, ds As String CH_To_SH CDate(ADate), Y, M, D If Four Then ys = Str(Y) Else ys = Right$(Str(Y), 2) End If If Zero Then If Len(Trim(Str(M))) < 2 Then ms = "0" + Trim(Str(M)) Else ms = Trim(Str(M)) End If If Len(Trim(Str(D))) < 2 Then ds = "0" + Trim(Str(D)) Else ds = Trim(Str(D)) End If Else ms = Trim(Str(M)) ds = Trim(Str(D)) End If FDate = ys & "/" & ms & "/" & ds End Function Public Sub Shamsi_date() Dim tskProjTask As Task 'Reference to a task object. Dim tsksProjTasks As Tasks Set tsksProjTasks = ActiveProject.Tasks For Each tskProjTask In tsksProjTasks If Not (tskProjTask Is Nothing) Then 'Check to see if task exists and that is not a external task. If Not tskProjTask.ExternalTask Then tskProjTask.Text1 = FDate(Format(tskProjTask.Start, "yyyy/mm/dd"), True) tskProjTask.Text2 = FDate(Format(tskProjTask.Finish, "yyyy/mm/dd"), True) End If End If Next tskProjTask End Sub
-
استفاده از فارسی ساز پرنیان (روشی استاندارد و اصولی)
استفاده از فارسی ساز پرنیان است که سال هاست با ارائه تقویم شمسی استاندارد برای نرم افزار مایکروسافت پراجکت توانسته است این امکان را در اختیار کاربران قرار دهد تا آنها بتوانند به آسانی از تقویم شمسی در محیط کاری Microsoft Project استفاده کنند. این نرم افزار به همراه یک قفل سخت افزاری USB از ورژن 2007 تا 2021 نرم افزار MSP بصورت تک کاربره و چند کاربره تحت شبکه در اختیار کارشناسان و مدیران قرار گرفته است. در زیر تصاویری از چگونگی استفاده از فارسی ساز MSP پرنیان را ملاحظه می کنید.