社内にOffice2007、2010、2013、2016などが混在するような環境の方もたくさんいるのではないでしょうか。
このような環境下で意外に苦しむのが、社内開発等で多用される「カレンダーコントロール」です。
カレンダーコントロールはある時期から仕様が変更になっていますので注意が必要です。この記事ではそのあたりのことについて解説します。
1.Excel2007までのカレンダーコントロール
ExcelでDatePickerを実装する場合、Accessに付属の「カレンダーコントロール」を使用することになります。このため、Accessがインストールされていることが必須となります。
細かくいうと、Access 付属の「MSCAL.ocx」がカレンダーを表示するためのコントロールのことです。
Excelでこれを使用する場合は、UserFormを一つ作成し、MSCALを貼り付けて使用するという方法がExcel2007までは一般的でした。
2.Excel2010以降のカレンダーコントロール
Excel2007まではMSCALで実装するが一般的でしたが、Access2010からはなんとMSCAL.ocx というものがなくなってしまいました。
以下はMicrosoftが公開している「Excel2010での変更点」です。
カレンダー コントロール (mscal.ocx) は、Access ワークシートで使用できる Microsoft Access の機能でした。Access 2010 ではカレンダー コントロールが削除されており、Excel 2010 で使用できません。
あたり前ですが、旧バージョン(~Excel2007まで)のExcelでカレンダーコントロールを実装し、それをExcel2010の入った端末で開いてカレンダーを起動しようとしてもうまく動きません。
以下のようにエラーが出てしまいます。
これを回避するための代替策が必要となります。
3.代替策
「Excel2010での変更点」(上記の続き)にはこうあります。
代わりに、日付の選択を使用するか、独自のカスタム カレンダー コントロールを使用します。
噛み砕いてみていきます。
まず上記の「日付の選択」とは何でしょうか?
実は Access2007 および Excel2007 からはMSCAL.ocx の代わりとして「日付選択コンテンツコントロール」が 追加されており、この日付選択コンテンツコントロールのことを「日付の選択」と呼んでいるようなのです。
ではもう一方の「独自のカスタム カレンダー コントロール」とは何でしょうか?
これはそのまま「カレンダーコントロールくらい自作したら?」というふうに読み取れます。わたしはそのように解釈しました。
「excel カレンダーコントロール 自作」などでググってみると自作の参考になるサイトはたくさん出てくるので参考にしてみてください。
参考サイト
http://ponto.jp/tools/calendar.html
以上のように、MicrosoftOfficeのバージョンアップによる仕様変更で、過去に作り込んでいた機能が急に使えなくなるというのは「よくある話」ですので、その都度 Office (IT 担当者向け) などを参照するようにしておくとよいでしょう。
Excelをもっと使いたおす方法
Excelをもっと使いたおす方法については以下にまとめています。