home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 January / VPR9701A.ISO / PROJ95 / VBATOOLS.TXT < prev    next >
Text File  |  1996-08-21  |  4KB  |  117 lines

  1. '*********************************************************************
  2. '               Microsoft Project for Windows 95
  3. '
  4. '                          VBA マクロ ツール
  5. '
  6. '*********************************************************************
  7.  
  8.  
  9. '*********************************************************************
  10. 'このマクロは国民の祝日を非稼働日に設定し、それを
  11. '標準カレンダーとするサンプル マクロです。
  12. '春分の日、秋分の日の日付は "暦日大監 (新人物往来社 西澤宥綜 編著)" を参考にしました。
  13. 'また、2033年については閏11月を採用しました。
  14. '*********************************************************************
  15. option base 1
  16. Sub JPN_Holiday()
  17.  
  18.     Dim PublicHoliday(15) As Variant
  19.     dim ph as variant
  20.     
  21. '基本的な国民の祝日をテーブル形式で定義します。
  22.     PublicHoliday(1) = Array(1, 1, "元旦")
  23.     PublicHoliday(2) = Array(1, 15, "成人の日")
  24.     PublicHoliday(3) = Array(2, 11, "建国記念日")
  25.     PublicHoliday(4) = Array(3, 21, "春分の日")     '年によって日付が異なります
  26.     PublicHoliday(5) = Array(4, 29, "みどりの日")
  27.     PublicHoliday(6) = Array(5, 3, "憲法記念日")
  28.     PublicHoliday(7) = Array(5, 4, "国民の祝日")
  29.     PublicHoliday(8) = Array(5, 5, "子供の日")
  30.     PublicHoliday(9) = Array(9, 15, "敬老の日")
  31.     PublicHoliday(10) = Array(9, 21, "秋分の日")    '年によって日付が異なります
  32.     PublicHoliday(11) = Array(10, 10, "体育の日")
  33.     PublicHoliday(12) = Array(11, 3, "文化の日")
  34.     PublicHoliday(13) = Array(11, 23, "勤労感謝の日")
  35.     PublicHoliday(14) = Array(12, 23, "天皇誕生日")
  36.     PublicHoliday(15) = Array(7, 20, "海の記念日")
  37.        
  38.     For Each y In ActiveProject.Calendar.Years
  39.         For i = 1 To 15
  40.             
  41.             ph = PublicHoliday(i)
  42.             m = ph(1)
  43.             d = ph(2)
  44.             Select Case ph(3)
  45.  
  46.             Case "春分の日"
  47.                 Select Case y
  48.                     Case 1984, 1988, 1992, 1993, 1996, 1997, 2000, 2001, 2004, 2005, 2008, 2009, 2012, 2013, 2016, 2017, 2020, 2021, 2024, 2025, 2026, 2028, 2029, 2030, 2032, 2033, 2034, 2036, 2037, 2038, 2040, 2041, 2042, 2044, 2045, 2046, 2048, 2049
  49.                         d = 20
  50.                 End Select
  51.  
  52.              Case "秋分の日"
  53.                 Select Case y
  54.                     Case 2012, 2016, 2020, 2024, 2032, 2036, 2040, 2044, 2045, 2048, 2049
  55.                         d = 22
  56.                 End Select
  57.             End Select
  58.  
  59.             If (WeekDay(DateSerial(y, m, d)) = 1) Then '祝日が日曜日の場合は月曜日を振り替え休日に設定します
  60.                 d = d + 1
  61.             End If
  62.             
  63.             y.Months(m).Days(d).Working = False
  64.             
  65.             Next
  66.         Next
  67.  
  68. End Sub
  69.  
  70.  
  71.  
  72. '*********************************************************************
  73. 'このマクロは土曜日を非稼働日に設定し、それを
  74. '標準カレンダーとするサンプル マクロです。
  75. '*********************************************************************
  76. Sub JPN_NonSat()
  77.     Dim Day1, Day2 As Date '日付用の変数として Day1 と Day2 を定義します。
  78.     Dim NewCalendarName, y, z  'テンポラリ用の変数を定義します。
  79.     
  80. '新規に作成するカレンダー名を定義します。
  81.     NewCalendarName = "JPN NonSaturday"
  82.     
  83. '新規に作成するカレンダーを基本カレンダーとして定義します。
  84.     BaseCalendarCreate Name:=NewCalendarName
  85.     
  86. '1995年1月1日から1998年12月31日(1460日)までのカレンダーで非稼働日を日曜日だけに定義します。
  87. 'Microsoft Project では カレンダーの例外指定が250までという制限があります。
  88. ' 'y' はループ用のカウンタです。
  89.  
  90.     Date1 = "1995/1/1 0:00"
  91.     For y = 0 To 1460
  92.         Day1 = CDate(Date1) + y
  93.         Day2 = Day1 & " 0:00"
  94.         z = Day2
  95.         If (WeekDay(z) = 7) Then 'WeekDay 関数の戻り値 7 は土曜日に該当します。
  96.             BaseCalendarEditDays Name:=NewCalendarName, StartDate:=z, EndDate:=z, Working:=True
  97.         End If
  98.     Next
  99.  
  100. 'カレンダー ビューでこのカレンダーを標準カレンダー(使用するカレンダー)として定義します。
  101.     ViewApply Name:="カレンダー(&C)"
  102.     CalendarDateShading BaseCalendarName:=NewCalendarName
  103.     ProjectSummaryInfo Calendar:=NewCalendarName
  104.  
  105. 'ガントチャート ビューでこのカレンダーを標準カレンダー(使用するカレンダー)として定義します。
  106.     ViewApply Name:="ガント チャート(&G)"
  107.     TimescaleNonWorking Calendar:=NewCalendarName
  108.  
  109. End Sub
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.