تقویم شمسی پراجکت ۲۰۱۰-Shamsi-Jalali- calendar-Project

مهمترین کاربرد پرنیان ارائه‌ی تقویم شمسی در محیط نرم‌اقزار مایکروسافت پراجکت بوده است.و اینک برای ما افتخار برانگیز است که نسخه‌ی 6 این نرم‌افزار را برای استفاده در آفیس 2010 ارائه میکنیم. پرنیان در نسخه‌ها و ویرایش‌های متفاوتی ارائه می‌شود، نسخه‌ی سبک این نرم‌افزار به صورت رایگان ارائه می‌شود، و نسخه‌های پیشرفته‌تر آن فروخته میشود،

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

اما با تست هایی که انجام دادم نتوانستم تقویم شمسی project 2010 را فعال کنم.چون در هنگام اجرا Project 2010 پیغام خطای قفل سخت افزاری نمایش داده می شود.ولی لینک آن را برای شما کاربران قرار می دهم تا اگر دوست داشتید ان را دانلود و تست کنید.و چنانچه موفق شدید اطلاع دهید تا این مطلب اصلاح شود.

لینک دانلود تقویم شمسی برای Project 2010 نسخه 32 بیتی

لینک دانلود تقویم شمسی برای Project 2010 نسخه ۶۴ بیتی

پسورد:www.office-learning.ir

اما در ادامه مطلب دو روش دیگر که با ماکرو انجام می شود ذکر می شود:

 

============================================

روش اول

از اینجا دانلود کنید.

این روش از این وب سایت برداشت شده است.

============================================

روش دوم:(این مطلب از این لینک برداشت شده است)

یکی از روشهایی که می توان تاریخها را در Microsoft Project به صورت شمسی نمایش داد با استفاد از Macro می باشد . در این روش باید برنامه ای با فرمت Visual Basic که تاریخ میلادی را به شمسی تبدیل نماید وجود داشته باشد و این برنامه به صورت یک ماجول در برنامه تعریف شود و با استفاده از یک ماکرو این ماجول را روی یکی از فیلدهای انتخابی اجرا نمود.
در ادامه به توضیح این روش خواهیم پرداخت

نخست از بخشهای Tools> Macro > Visual Basic Editor را انتخاب نمایید . در قسمت چپ صفحه با زدن کلیک راست Insert > module را انتخاب نمایید. پس از ایجاد ماجولی به نام module1کد های زیر را در این ماجول کپی نمایید .

[vbnet]Option Base 0

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[/vbnet]

سپس مجدداً ماجول جدیدی ایجاد و پس از ایجاد module2 کدهای زیر را در این ماجول کپی نمایید.

[vbnet]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[/vbnet]

پس از این مراحل به شکل زیر باشد .

تقویم شمسی پراجکت1

این ماجولها ماکرویی را به نام shamsi_date بوجود می آورند که با اجرای این ماکرو تاریخهای شمسی به ترتیب زیر در ستونهای Text1 و Text2 کپی میگردند. تاریخ شروع شمسی در Text1 و تاریخ پایان شمسی در Text2 که جهت رویت تاریخ های شمسی می بایست این دو ستون کنار ستونهای دیگر اضافه گردند ، بدین ترتیب پس از هر بار تغییر می بایست این ماکروی Shamsi_date را اجرا نمایید. نتیجه این عمل در شکل زیر قابل مشاهده می باشد . البته می توانید نام ستونها را به shamsi Start Date و Shamsi Finish Date تغییر دهید.

تقویم شمسی پراجکت 2

جهت مشاهده روش پیاده سازی و اجرای ماکروها این فایل را دانلود کنید و به ترتیب عکس ها پیش بروید:(لینک ها در وبلاگ مرجع قابل دیدن نبودند به همین علت در یک فایل ذخیره و اینجا قرار داده شد)

1- ایجاد یک پروژه جدید در نرم افزار مایکروسافت پروجکت
2- وارد شدن به محیط ویژوال
3- ایجاد یک ماجول در محیط ویژوال
4- کپی کردن کدهای موجود در فایل Ms Project shamsi_date_Module1.txt در ماجول 1
5- ایجاد یک ماجول دیگر در محیط ویژوال
6- کپی کردن کدهای موجود در فایل Ms Project shamsi_date_Module2.txt در ماجول 2
7- راهنمای مسیر اجرای ماکروها
8- اجرای ماکروی shamsi_date
9- ایجاد ستون با کلیک راست
10- نامگذاری ستون تاریخ شمسی شروع فعالیت
11- نامگذاری ستون تاریخ شمسی خاتمه فعالیت
12- نمایش تاریخ شروع و خاتمه در دو ستون متنی ( text )

 

11 دیدگاه برای “تقویم شمسی پراجکت ۲۰۱۰-Shamsi-Jalali- calendar-Project

  1. زینب گفته:

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

  2. محمد گفته:

    با سلام و تشکر
    من رویه شما را اجرا کردم اما با پیغام خطای زیر مواجه شدم
    Compile error
    Invalid outside procedure

    در ضمن نرم افزار پرنیان هم تجاری است و برای استفاده از نسخ شش که در سایت شما معرفی شده باید یک قفل سخت افزاری خریداری شود که برای هر کاربر 270000 تومان قیمت دارد. نسخه‌های بعدی این نرم افزار هم بالای 300000 تومان قیمت دارند.

    • اسماعیل گفته:

      با سلام
      فایل روش اول در لینک مبدا مشکل داشت که اصلاح و جایگزین شد.
      ممنون از شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *