شمسی سازی تاریخ در نرم افزار Ms.Project

در این مطلب سعی کرد ه ایم 2 روش شمسی سازی تاریخ در نرم افزار  Ms.Project را مورد برسی قرار دهیم

 روش اول شمسی ساز ی تاریخ با ماکرو نویسی:

 در بروی منوی viewابتدا از ریبون

کلیک نمایید  از قسمت ویژوال بیسیک به داخل نمای ماکرونویسی برویدMacros

در صفحه بازشده به آدرس

 Insert>Moduleبروید

حال پنجره کوچکی باز می شود که نام آن ماژول 1 می باشد فرمول زیر را همانند شکل زیر در آن کپی نمایید

 

Option Base 0

Public ConstSHBaseYear = 1278

Public ConstSHBaseMonth = 12

Public ConstSHBaseDay = 29

Function SHIsLeap_Year(ByValShYear 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(ByValShYear 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 tilShyear=22

   Else

      LEAP3 = (ShYear + 3) \ 4 'the first leap year  asShyear=1

   End If

   If (ShYear - 21) Mod 33 = 0 Then LEAP3 = LEAP3 - 1

SHLeap_Count = LEAP3

End Function

Sub CH_To_SH(ByValCHDate As Date, Year As Long, Month As Long, Day As Long)

Dim DayNumAs Long, ReminderDay As Long

Dim NewYearAs 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_SHCDate(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

حال دوباره  آدرس را تکرار کنید تا پنجره دومی باز شود که نام آن ماژول 2 می باشد ایجاد شود

فرمول زیر را همانند شکل زیر کپی نمایید

 

Public Sub Shamsi_date()

    Dim tskProjTask As Task             'Reference to a task object.

    Dim tsksProjTasks As Tasks

    Set tsksProjTasks = ActiveProject.Tasks

For Each tskProjTaskIntsksProjTasks

        If Not (tskProjTaskIs Nothing) Then            'Check to see if task exists and that is not a external task.

            If Not tskProjTask.ExternalTaskThen

               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

 

 

خوب تا اینجا کار ماکرو نویسی ما به اتمام رسیده با زدن  دکمه F5 پنجره زیر باز خواهد شد.

روی RUN   کلیک نمایید.

مرحله بعدی نمایش تاریخ شمسی در نمای گانت چارت می باشد ،از آنجا که فرمول ها بروی  Text1 & Text2 نوشته است از طریق Add new column

 این دو ستون را فراخوانی کنید.

 

میتوانید برای قابل فهم تر شدن تاریخ ها  Text1را به نام( شروع)  و Text2  به نام (پایان) تغییر نام دهید.

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

View>macros>View records  کلیک نمایید

در پنجره باز شده بروی RUN کلیک نمایید.

معایب این روش:

1-جهت هر بار تغییر تاریخ میلادی باید ماکروی نوشته شده باید بازخوانی شود تا ستون  تاریخ های شمسی نیز تغییر کند.

 

روش دوم: با استفاده از فرمول نویسی 

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

در ابتدا فرمول های این قسمت آموزش را دانلود نمایید.

دانلود فرمول با نقطه ویرگول

 دانلود فرمول با ویرگول

توجه کنید این روش دارای دو مدل فرمول می باشد اولی با نقطه ویرگول می باشد و دومی با ویرگول که در سیستم ها متفاوت می باشد شما باید تست کنید کدام یک برای سیستم شما مناسب است

 با کلیک راست کردن بروی یکی از ستون ها و انتخاب منوی  custom fields 

در پنجره باز شده نوع ستون را از نوع  Text  انتخاب نمایید. 

Text1و Text2 و  را انتخاب نمایید و نام آن ها را به شروع و پایان تغییر دهید.  

Txet1 را انتخاب نمایید 

با کلیک بروی منوی   Formula وارد پنجره مربوطه بشوید و قسمت اول فرمول را که همانند ذیل کپی نمایید.

 Ok کنید و خارج شوید همین مراحل را برای Text2 انجام دهید و قسمت دوم فرمول را کپی نمایید.

 

حالا نوبت فراخوانی ستون های Text2 و Text1 و ازطریق Add New Column می باشد

 

البته لازم ذکر است که با استفاده از این روش با تغییر تاریخ میلادی بلافاصله تاریخ های شمسی نیز تغییر می کند.

نکـــــــــات 

نکته1:  از فرمول های پیوست شده  استفاده نمایید ممکن است از فرمول های  موجود در صفجه سایت تغییر کرده باشد

نکته2:  دربعضی از سیستم ها بجای(;) نقطه ویرگول از (,)ویرگول استفاده می شود در صورت مشگل تغییر دهید

به نظر بنده این روش در حال حاضر  بهترین راه حل جهت نمایش تاریخ شمسی در نرم افزار Ms-Project می باشد.

اگر شما روش بهتری دارید؟ می توانید به ایمیل وب سایت ارسال نمایید تا با نام شما در کافه مدیران منتشر شود.

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

دانلود فایل آماده

 
حرف آخر: دوستان کافه مدیرانی این مطلب رو مدنظر داشته باشید که فرمت این آموزش برای اولین بار از طریق این سایت منتشر گردیده است. و از تمامی افرادی که بدون ذکر منبع به تکثیر مطلب پرداخنه اند دلگیریم.
 موفق باشید...
 فیلم روش دوم را نیز جهت درک بهتر برای شما دوستان قرار دادیم .Wink
 
 

 

این مورد را ارزیابی کنید
(28 رای‌ها)
  • آخرین ویرایش در یکشنبه, 16 آبان 1395 ساعت 22:59
  • اندازه قلم
  • دیدگاه (85)
مجتبی جباری

کارشناس برنامه ریزی و کنترل پروژه و مدیریت کیفیت

پست الکترونیکی این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید

نظرات   

 
0 #85 امید در تاریخ: سه شنبه 28 دی 1395 ، ساعت 05:10 ب ظ
با سلام
از لطفتون بسیار تا بسیار متشکریم
نقل قول
 
 
0 #84 نوید راسخی در تاریخ: چهارشنبه 08 دی 1395 ، ساعت 10:10 ق ظ
بسیار عالی و مفید تشکر ویژه برای کسانی که develop کردن!
نقل قول
 
 
0 #83 مجتبی جباری در تاریخ: سه شنبه 30 آذر 1395 ، ساعت 12:09 ق ظ
نقل قول از محسن:
سلام
در روش ابتکاریتون فرمول ها بصورت عکس هست . من کانورتشون کردم خوب نمی شه ، اگه ممکنه تکستشو برام میل کنید.
با تشکر


سلام دوست گرامی فرمول ها در ابتدا متن جهت دانلود موجود است
نقل قول
 
 
0 #82 محسن در تاریخ: یکشنبه 28 آذر 1395 ، ساعت 11:09 ب ظ
سلام
در روش ابتکاریتون فرمول ها بصورت عکس هست . من کانورتشون کردم خوب نمی شه ، اگه ممکنه تکستشو برام میل کنید.
با تشکر
نقل قول
 
 
0 #81 اميرحسين در تاریخ: سه شنبه 23 آذر 1395 ، ساعت 12:09 ب ظ
سلام
ماژول 1 و 2 رو ايجاد ميكنم.
اف 5 رو كه ميزنم ارور ميده :
تيتر پنجره خطا : Microsoft Visual Basic for Application
و خود خطا:
Compile error:
Expected: end of statement

كامپايلر بيسيك هم نصب كردم.
نشد.
نقل قول
 
 
0 #80 وفا در تاریخ: سه شنبه 16 آذر 1395 ، ساعت 02:09 ب ظ
سلام
باتشکر از کار خوبتون
تاریخ شروع و پایان 8 روز کمتر از میزان واقعی نمایش داده میشوند برای حل این مشکل چه کار میتونم بکنم؟
نقل قول
 
 
0 #79 ظهوری در تاریخ: شنبه 06 آذر 1395 ، ساعت 10:09 ق ظ
با سلام
یعنی امکانش نیست کل تقویم میلادی حتی توی قسمت change working time تبدیل به شمسی بشه؟اگه میشه لطفا روششو بهم ایمیل کنید مرسی
نقل قول
 
 
0 #78 مجتبی جباری در تاریخ: سه شنبه 18 آبان 1395 ، ساعت 12:08 ق ظ
نقل قول از هما:
سلام و خسته نباشید
اولا جدیدا فایلی جهت دانلود فرمول ها وجود ندارد
دوما من قبلا فرمول نقطه ویلگول رو دانلود کرده بودم و به خوبی در برنامه جواب می داد ولی الان از همون فرمول استفاده می کنم یا ارور می ده یا کل تاریخ ها رو تاریخ شروع پروژه میزنه ..به تغییر تاریخ میلادی هم تغییر نمی کنه ..لطفا سریعا راهنماییکنید .. خیلی عجله دارم


سلام دوست گرامی
خدمتتون عرض کنم در زیر متن روش دوم دو فایل متفاوت جهت دانلود موجود است .
برای حل مشگل شما نیز
در قسمت custom fields تیک use formula را بعد از کپی کردن کد ها انتخاب کنید.
موفق باشید...
نقل قول
 
 
0 #77 هما در تاریخ: دوشنبه 17 آبان 1395 ، ساعت 05:08 ب ظ
سلام و خسته نباشید
اولا جدیدا فایلی جهت دانلود فرمول ها وجود ندارد
دوما من قبلا فرمول نقطه ویلگول رو دانلود کرده بودم و به خوبی در برنامه جواب می داد ولی الان از همون فرمول استفاده می کنم یا ارور می ده یا کل تاریخ ها رو تاریخ شروع پروژه میزنه ..به تغییر تاریخ میلادی هم تغییر نمی کنه ..لطفا سریعا راهنماییکنید .. خیلی عجله دارم
نقل قول
 
 
0 #76 شهرام نوربخش در تاریخ: یکشنبه 16 آبان 1395 ، ساعت 01:08 ب ظ
سلام و عرض تشکر
عالی و بدون نقص
نقل قول
 

ارسال نظر


کد امنیتی
بارگزاری مجدد

2254388
بازدید امروز
بازدید دیروز
بازدید هفته جاری
بازدید ماه جاری
بازدید کل
1989
2429
4418
54669
2254388

آی‌پی شما: 54.211.179.232
امروز: دوشنبه، 04 بهمن 1395 - ساعت: 16:11:06

آرشیو

« January 2017 »
Mon Tue Wed Thu Fri Sat Sun
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

ورود به سایت

درباره ما

HTML 5 وب سایت کافه مدیران در دی ماه سال 1392 توسط گروهی از متخصصین ایرانی...

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