本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。


マイクロソフト西暦 2000 年対応情報開示リソース センター ホーム

よく寄せられる質問

製品ガイド
(日本語)


西暦 2000 年問題に対するマイクロソフトの考え方

技術文書(ホワイト ペーパー)

そのほかの情報
マイクロソフト西暦 2000 年対応情報開示リソース センター


 

Visual Basic for Applications (VBA) 5.0 32-Bit Win

開発製品:

Visual Basic for Applications (VBA)

バージョン:

5.0 32-Bit Win

デザイン時: 対応

このツールを使って 「マイクロソフト西暦 2000 年対応」 に準拠するアプリケーションを構築できますか

はい

言語: English, Chinese (Simplified), Chinese (Traditional), French, German, 日本語, Korean, Portuguese, Spanish, Czech, Danish, Dutch, Greek, Finnish, Hungarian, Italian, Norwegian, Polish, Russian, Swedish, Turkish, Iberian Portuguese, Slovenian

対応期間: システムに依存

発売日:

1997 年 5 月 1 日

必要なソフトウェア: なし

依存する製品: Windows 95, または Windows NT 3.51 with Service Pack 5 以上, または Windows NT 4.0 (Service Pack 2以上を推奨)

依存するクロック: システムクロック

カテゴリ: 開発製品

このツールを使って 「マイクロソフト西暦 2000 年対応」に準拠するアプリケーションを構築できますか?

はい。開発者が Visual Basic for Applications (VBA) に用意されている DATE データ型および日付処理関数を使用し、VBA を使用するアプリケーションから渡されたデータは日付に 4 桁の西暦を使用する場合。

Visual Basic for Applications 5.0 を含む製品には、Excel 97、Access 97、Word 97、Word 98、PowerPoint 97 および Project 98 などがあります。

日付の処理

VBA は内部的に 8 バイトの浮動小数点数の値で日付を保存します。値は、1899 年 12 月 30 日 0 時 0 分 0 秒からの経過日数 (整数と分数) を表わします。この値の整数部は日数を表わし、小数部は一日の分数値を表わします。たとえば、1997 年 5 月 22 日 午後 3 時 0 分の場合には、35572.625 が保存されます。つまり、1997 年 5 月 22 日は、1899 年 12 月 30 日から計算すると 35,572 日になり、午後 3 時 0 分は、一日の 625/1000 になります。VBA では、100 年 1 月 1 日~ 9999 年 12 月 31 日までの日付を保存することができます。

VBA には、日付処理のための関数が多数あります。これらの関数は、VBA の対応期間内で正確に日付を処理するように設計されています。日付を処理する組み込み関数には、次のものがあります。

Now ()

CDate()

CVDate()

DateValue()

Date()

Date$()

Format()

DateAdd()

DateDiff()

DatePart()

IsDate()

Day()

Month()

Weekday()

Year()

Time()

Now()、Date()、および Time() 関数から返される日付と時刻は、オペレーティング システムのクロックから取得されます。

日付は下 2 桁の西暦形式で表示されますが (Visual Basic の format 関数などを使用して)、値は 4 桁の長い西暦で処理されます。

西暦の下 2 桁のみが指定された場合、次に説明する規則に従って上 2 桁が取得されます。

下 2 桁の西暦の処理

日付に下 2 桁の西暦のみが指定された場合、次の規則に従って上 2 桁の西暦が取得されます。規則は次のとおりです。

  • 下 2 桁が 00 ~ 29 年の場合は、上 2 桁は 20XX 年と解釈されます。
  • 下 2 桁が 30 ~ 99 年の場合は、上 2 桁は 19XX 年と解釈されます。

これらの規則は、Windows 95 と Windows NT 4.0 でのデフォルトの設定です。ただし、VBA では OLE オートメーションを使用して日付が解析されます。そのため、OLE オートメーションの規則に従って、下 2 桁の西暦が処理されます。旧バージョンの OLE オートメーション (2.30.00.0000 より前のバージョン) を使用しているマシンでは、西暦の上 2 桁は現在の西暦として解釈されます。 Windows 98 の場合は、新しいバージョンの OLE オートメーションでは、この 100 年ウィンドウはコントロール パネルで設定できます。

詳細については、次の OLE オートメーションの Web サイトを参照してください。
http://www.microsoft.com/japan/year2k/2kwhitepaper/auto_jp.htm

西暦 2000 年問題に対応するアプリケーションの開発に関する注意点

西暦 2000 年対応のアプリケーションを開発する場合、次の事項に注意してください。

  1. 日付が VBA 関数にどのように渡されるか
  2. 日付が VBA 関数でどのように処理されるか
  3. 日付が VBA 関数からどのように返されるか、また表示されるか

日付値を VBA 関数に渡す場合は、組み込み DATE データ型を使用します。たとえば次の関数は、日付を入力値として受け取ります。

Function DaysInMonth(AnyDate As Date) As Integer

DaysInMonth = DateSerial(Year(AnyDate), Month(AnyDate) + 1, 1) - _

DateSerial(Year(AnyDate), Month(AnyDate), 1)

End Function

VBA は、プロシージャに渡されているデータを解析するルーチンを実行します。値が日付以外の場合に、ランタイム エラーが発生します。

また、ユーザー指定の値が直接またはユーザー インターフェイス経由で関数に渡される場合には、4 桁の値が日付の西暦部分を表わしていることを確認してください。

関数内の日付処理に関しては、組み込み VBA 関数のみが使用されていることを確認してください。上記の例では、DateSerial、Year、および Month 関数を使用して1ヶ月の日数を計算しています。

データが VBA 関数から返される場合は、DATE データ型を使用してそのデータを定義する必要があります。

西暦 2000 年問題に関するよくある開発時のエラー

ユーザー定義の関数は、日付処理で起こる問題の大きな要因です。関数が正しく定義されていないと、問題が起こる場合があります。 前のセクションで説明されているガイドラインに従って開発するようにしてください。

文字列として保存できる日付も、その情報の中に間違いがあると、問題を引き起こします。Visual Basic では、年/月/日の順序を並び替えることで有効な日付を取得できた場合、文字列は日付として解釈されます。たとえば、 87/3/1 (1987 年 3 月 1 日) と 3/30/98 (1998 年 3 月 30 日) は年/月/日の順序が違いますが、有効な日付として解釈されます。

文字列関数を使用して日付を処理しないでください。日付形式 (2 桁または 4 桁の西暦) が結果に影響するからです。

通常、VBA のカスタム ルーチンでは、日付の保存には組み込みの DATE データ型を使用する必要があります。

 

ガイドラインと推奨事項

MSDN オンライン ライブラリには、Visual Studio および Visual Basic を使用して西暦 2000 年対応のアプリケーションを開発するための情報が含まれています (http://msdn.microsoft.com/library/techart/msdn_vs6y2k.htm を参照)。この文書で説明されているガイドラインは、VBA および VB に適用されます。

Visual Basic で作成されたアプリケーションをテストする場合は、次の点に注意してください。

  1. ユーザー定義の関数。多くのアプリケーションには、Visual Basic で記述されたユーザー定義の関数があり、いろいろな方法で日付が処理されます。通常、これらの関数では、日付は文字列として保存されるか、Put 文を使用してディスク ファイルにデータが書き込まれます。これらの値を間違った方法で操作すると、日付処理でエラーが起こる場合があります。これらのエラーは、2000 年問題に対してマイクロソフトで行われたテストの対象外です。
  2. 前述の日付に関するエラーは、正しく入力されなかった日付をエラー処理のルーチンで対処しようとしている場合に、問題を起こす場合があります。VBA では、文字列で日付が入力される場合、エラーがほとんど生成されません。そのため、エラー処理のルーチンが呼び出されることはあまりありません。ルーチンを使用して正しくない日付を検出するのではなく、コードを使用して日付を検証してください。

  2000年対応状況の開示

マイクロソフトおよび西暦 2000 年問題に関する情報(本書記載の情報の他、西暦 2000 年テスト、評価、対応情況、対応スケジュール、目標、その他に関する、過去、現在および将来の全ての情報を含みますが、これらに限られません。 以下、これらを総称して「マイクロソフト西暦 2000 年ステートメント」といいます。)の送信または伝達は全て、ここに米国の「西暦 2000 年問題に関する情報および対応開示に関する法律」に定義されているところの「西暦 2000 年対応情報開示」として提供されます。 また、かかる情報は、http://www.microsoft.com/japan/year2k/ のマイクロソフトの西暦 2000 年Webサイト(以下「Y2K Webサイト」といいます。)にて参照可能です。 「マイクロソフト西暦 2000 年ステートメント」は、それぞれ、この使用条件、Y2K Webサイト記載の条件並びに「西暦 2000 年問題に関する情報および対応開示に関する法律」の条項に従い、お客様の西暦 2000 年問題に対応するための技術計画を支援させていただく目的でのみ提供されています。 各「マイクロソフト西暦 2000 年ステートメント」には、入手可能な最新情報が含まれますが、それらは逐次更新されます。 従って、マイクロソフトは、お客様が定期的に、Y2K Webサイトを確認して、「マイクロソフト西暦 2000 年ステートメント」の変更を確認されることをお勧めします。 「マイクロソフト西暦 2000 年ステートメント」は、全て、“現状ベース”で提供されるものであり、いかなる保証も伴うものではありません。 従って、マイクロソフトは、商品性の保証および特定目的への適合性を含めて、明示的にも黙示的にもいかなる保証もいたしません。 さらに、マイクロソフトは、いかなる「マイクロソフト西暦 2000 年ステートメント」の使用またはその使用結果についても、その正確性、真実性、信頼性等、いかなる保証もしくは表明も行いません。 マイクロソフトまたはその権限ある代理人による、口頭もしくは書面による一切の情報もしくはアドバイスは、何らの保証を意味するものでもなく、かつ上記の保証の拒絶の範囲を狭めるものではありません。 マイクロソフトおよびその供給者は、いかなる場合においても、「マイクロソフト西暦 2000 年ステートメント」に関連して生じた、直接損害、間接損害、偶発損害、派生損害、事業利益の逸失、懲罰的損害、または特別損害を含むすべての損害について、たとえかかる損害の発生の可能性を知らされていた場合であっても、一切責任を負いません。 派生損害または偶発損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。 各「マイクロソフト西暦 2000 年ステートメント」に含まれる情報は、Y2K Webサイトで参照可能であり、マイクロソフト西暦 2000 年対応状況(YEAR 2000 COMPLIANCE STATEMENT)、マイクロソフトが、その西暦 2000 年製品ガイドにおいて、製品の分類に使用している対応基準に関する説明(DESCRIPTION OF THE CATEGORIES OF COMPLIANCE)およびテスト基準(THE MICROSOFT YEAR 2000 TEST CRITERIA)等、と併せてお読みいただくことを意図して提供されているものです。

マイクロソフトが、西暦 2000 年問題関連の修正版、西暦 2000 年診断ツールまたは修正サービスの提供において、お客様に提供することのある、すべての「マイクロソフト西暦 2000 年ステートメント」は、米国の「西暦 2000 年問題に関する情報及び対応開示に関する法律(112 STAT.2386)」の適用を条件として提供されるものです。 何らかの争いが生じた場合には、かかるステートメントの使用に関するお客様の権利は、お客様との契約書または料金表において、別段の合意がなされていない限り、この法律により制限されます。


  最終更新日 1999 年 7 月 16 日
  ©1999 Microsoft Corporation. All rights reserved. Terms of Use.
本サイトは西暦 2000 年 対応開示 (Year2000 Readiness Disclosure) に該当するものであり、本サイトに含まれている情報は本サイトに記載されている条件および西暦 2000 年問題に関する情報及び対応開示に関する米国の法律 (Year2000 Informationand Readiness Disclosure Act) に基づき提供されるものです。
inserted by FC2 system