-- 更新履歴 --

ここでは「誤字脱字の修正」「書式表現の訂正」「画像の差し替え(Windows、Officeのバージョン変更等)」といった微細な修正は記載していません。

2018年

2018/12/24 VBA応用」「祝日パラメータを社内で一元化したい」を追加しました。
外部ファイルから祝日パラメータを取り込む方法として、共有ファイルサーバやWebサーバ上にテキストファイルとして配置した祝日パラメータを取り込みます。
2018/12/16 VisualBasic「年間カレンダー作成」に祝日パラメータの変更に関するサンプルを追加しました。このページの最後の方です。

このサンプルでは、設定の保持した「祝日パラメータ」を祝日パラメータテーブルに読み込んで、以降は他のサンプルと同様にカレンダー作成等を行なう他、 この設定の「祝日パラメータ」の変更画面も設けています。

「祝日パラメータ」に関しては、プログラム変更とは切り離したいが結局はシステム管理者の仕事になるという見方が多く、 ならば「プログラム変更の担当=システム管理者」なのかになると思いますが、この質問だと「違う」という回答が多いようです。
今回のサンプルではプログラム内の設定に「祝日パラメータ」を保持させていますが、 保持方法はテキスト形式なので、共有サーバの既定フォルダに指定ファイル名で保持させる方法や、 社内用のWebサーバがあるならそこから読み出す方法も採れると思います。
サンプル内の「祝日パラメータ」変更画面は多少変更すればこれらにも利用できるでしょう。
2018/12/09 以前からお知らせしていた「天皇即位に関する祝日の追加」が秋の臨時国会で可決・成立しました。
当サイトではVBA応用」「年間カレンダーの作成2」など関連ページを更新しました。 但し、祝日名がまだはっきりしないようなので名称は「暫定」としています。
また、「年間カレンダーの作成(祝日パラメータシートを使わない方法)」を追加しました。
こちらは祝日パラメータテーブルをソースコードの記述で作成するもので、祝日パラメータシートを追加できないような環境に対応するものです。
「ダウンロード」「カレンダー入力用フォーム」を修正しました。
こちらは祝日の話ではなく、カレンダー入力用フォーム自体の記述変更です(動作は変わりません)。 フォーム上にラベルがたくさん配置されており、クリックイベント等が従来はこれらのクリックイベントをフォーム上に直接数十件書き込んでおりましたが、 今回はこれを2種類のイベントクラス(WithEvents利用)に分ける方法に変更しました。 一方のイベントクラスは各日付ラベル(45件)に関連付けられClickイベントによる日付選択と、MouseMoveイベントによるステータス域への表示変更を行ない、 もう一方のイベントクラスはそれ以外のラベル(12件)に関連付けられMouseMoveイベントによるステータス域への表示変更を行ないます。 こちらもClickイベントを拾う必要があるのですが、それぞれ動作が違うのでClickイベントは従来通りフォーム上に記述しています。
フォーム自体の記述はこれによりシンプルな方向に改善されたと思います。
VisualBasic「年間カレンダー作成」を追加しました。
VBA応用」「年間カレンダーの作成2」などと同様ですが、 VB.NETで使える祝日判定ロジックの紹介と、その検証を行なうものです。
結果はExcelシート上に出力される年間カレンダーで確認できます。
VisualBasicDPI制御の問題」を追加しました。
近年では「高DPIノートPC」が当たり前のように出荷される時代になっております。 Windows8.1Windows10では「DPI仮想化」が働くので問題は起こりませんが、 Windows7では従来型のWindowsフォームアプリケーションだとフォーム画面が崩れてしまう問題が発生します。
Windows7MSのサポート期間も約1年残っていることもあり、対策の説明を行ないました。
2018/11/04 「ダウンロード」「メール送信(CDO利用)」を修正しました。
修正箇所は「CDOメール送信クラス(clsSendMailByCDO1)」の中の 「プロパティ項目チェック(FP_CheckPropertyItem)」で送信認証を行なわない場合でもユーザー、パスワードを指定しなければならないようになっておりました。
ご利用の方は本クラスモジュールの差し替えをお願いします。
2018/10/08に行なった「ダウンロード」VB.NETプログラムのDPI値に関する変更が 一部のWindows7環境でインストールできないなどの不具合が起きることが判明し、これを修正しています。
対象となるケースの方は今回リリースのバージョンで再インストールさせて下さい。
2018/10/14 このところ何度も話題に上げておりました「祝日」についてですが、 既に施行されている「天皇誕生日の移動」「東京五輪特別措置法による2020年限定の祝日移動」だけでなく、 それ以前から論議されていました「天皇即位に関する祝日の追加」がいよいよ秋の臨時国会に提出される模様です。
2020年の祝日が変わるならまだ猶予があったのですが、この時期になって2019年(来年)の祝日が変わる模様です。
(この件はこのページの2月18日の記事でも触れています)
10連休が実現」かどうかはどうでも良くて、問題は「どこに祝日判定の仕組みを提供しているか」です。

祝日法の改正は「待ったなし」です。さらにプログラム等の修正を行なっても、修正前のものが運用上で利用されたままであってはなりません。 これは当サイトでは当初から「配布の問題」として取り上げていることです。
「祝日が変わるかどうか」に関心を持つのではなく、変わった時に「どこにあるどれだけの仕組みを入れ替える必要があるのか」を管理して下さい。
来年5月の祝日が変わるとなると、それまでにプログラム等を修正すれば良いのではなく、それまでに全運用現場のプログラム等を確実に入れ替えなければならないということです。 さらに言えば全運用現場のプログラム等が全て「入れ替わったかどうか」が確認できなければなりません。
「ダウンロード」Excelテンプレート・アドイン作成」を修正しました。
「初期化マクロブック」を利用しない場合でもExcelワークブックの参照形式(ReferenceStyle:A1形式、R1C1形式)の指定ができるように機能追加しました。 登録済一覧画面のメニューから登録済分についての一括更新機能も実装しています。
2018/10/08 「ダウンロード」「スタートアップ遅延起動プログラム」を追加しました。
本件はクラウドストレージを利用するプログラムをWindowsのスタートアップに登録運用する時に起きうる問題で、 クラウドストレージ側が更新される前にWindowsのスタートアップに登録したプログラムが起動されてしまうことを回避するため、 該当プログラムの起動を指定秒数遅延させる機能を持つものです。
「ダウンロード」の下記の各プログラムについて、 DPI値が異なる複数スクリーン環境(高解像度のノートPCに外部ディスプレィを拡張モードで接続するようなケース)で、 外部ディスプレィ側で終了させたプログラムが、次回起動させた時に表示場所がスクリーン表示域の外になってしまって表示されなくなってしまうという問題についての対策による修正です。
「シンプルなパスワード管理ツール」(前回2件目の再修正)
Excelテンプレート・アドイン作成」
ExcelVBAキーワード使用一覧」
ExcelVBAモジュール状況一覧」
VB.NETキーワード使用一覧」
VB.NETソースファイル退避」
「タイムスタンプ変更ツール」
「テキストコピーツール」
ExcelSQLServerツール」
「通常使うプリンタの変更」
「テキストキーワード使用一覧」
「ファイル名の条件設定による一括変換」
「シンプルJPEGビューワー」
2018/09/30 「ダウンロード」「シンプルなパスワード管理ツール」を修正しました。
今回の修正要件は2点あります。

1件目は細かいことですが機能改善です。
一覧表示で列見出しをクリックすると、その列の内容で並び替えられるのですが、「分類」列の見出しをクリックした時にその分類列の表示文字列ではなく、 オプションの設定で「SEQ」で設定されている「表示順№」の順で並び替えられるように対応しました。

2件目は複数スクリーンでの対応方法の変更です。実際に発生している不具合の対応でもあります。
私も先日、DPIのノートPCを購入しまして、この事象を検証することができるようになりました。 「高DPI」への対策はこれらのプログラムには実装させているのですが、Windows8.1以降ではWindows側が DPI仮想化機能を使って「通常のDPI」だとしてこちらのプログラムに通知してくるので、 プログラム内の高DPI対応は機能しません。 そればかりか、高DPIディスプレィとそうでないディスプレィを併用した時に誤動作を起こすのでこの対応を行なっています。
上のリンクのノートPCのディスプレィは1920×1080の解像度で文字サイズは150%に設定されています。 しかし、当方のプログラム内でスクリーンサイズ等を見ると、1280×689の解像度で文字サイズは100%と判断されています。
問題は、ここに外部ディスプレィを拡張モードで接続した時で、例えば22~24インチクラスのフルHDディスプレィを右側に設定したとすると、 そのディスプレィは1920×1080の解像度で文字サイズは100%となり、 Windows側のディスプレィ設定では同じ解像度のスクリーンが横に並んだ状態になります。
本プログラムにかかわらずこれらのフリーソフトは一度閉じた後に再起動させた時に前回表示していた位置にウィンドウ表示させるように対応していますが、 閉じた位置を保持させていてその位置で再表示させようとすると、実際はスクリーン外にいってしまいタスクバーにアイコンは表示されるもウィンドウが表示されないという事象が見つかりました。
退避していた横位置は2700程度だったので、2つのスクリーンの幅の合計(1280+1920=3200)には収まっているので表示されるはずですが 表示されないのです。 これは「おそらく」ですが、外部ディスプレィ側もDPI仮想化機能が1280×689の解像度だと誤認処理しているのだろうを思われます。 本プログラム側は「DPI仮想化機能」の結果でしか受け取れないのでこの問題には対応できません。
このため、保持させていた閉じた位置での位置再現はメインスクリーンのみとなるように対応変更しています。
公開している他のフリーソフトについては順次同様の対応を致します。
2018/09/24 再度、当サイトで扱っている「祝日」に関する話です。
本年は、2019年の天皇の退位・即位関連と2020年の東京五輪特別措置法に関する祝日の追加・変更に伴いVBAのカレンダー関連の ページの変更を行なってきましたが、いろいろなご意見もいただいたので再度変更いたしました。
現時点で施行されている祝日法に合った部分はすでに2018/06/16に対応済でしたが、変更方法等の説明は既に既成事実なのでとりやめて、 その代わりに下記の追加を行ないました。
・実処理部分をクラスに分割し、処理レスポンスの向上を目論む
VBAソースコードを見ずに最新バージョンか判別する手段の提供
・「祝日パラメータ」シートを利用しないで同じ機能を実現させるサンプルの提供
特に3番目は結局ソースコードで祝日判断する方法に戻るようなものですが、「祝日パラメータ」シートから祝日パラメータテーブルを作成するのと同様に ソースコードには書くものの、「祝日パラメータ」シートと同じ行数で同じ列数の記述だけで実現できるようにしてあります。

VBA応用」「年間カレンダーの作成2」をご覧下さい。
2018/08/19 「配布の問題」の先頭ページを更新しました。
もともとは「アドインありき」といった説明でしたが、そもそもの「配布の問題」を「バージョン管理⇒バージョンによる改廃」と捉え直して説明しています。
難しい話ではなく「社内に便利なマクロを作ってくれる人がいて...」といった説明から始めるように変更しています。
2018/08/11 「ダウンロード」の以下のフリーソフトを更新しました。
Excelテンプレート・アドイン作成」
ExcelVBAキーワード使用一覧」
ExcelVBAモジュール状況一覧」
内容は全てExcelワークブックの判定に「バイナリ形式ワークブック(*.xlsb)」を追加したというものです。 「バイナリ形式ワークブック(*.xlsb)」は別に新しいものではありませんが、ひとえに私が不勉強だったということに漬きます。
2018/06/16 当サイトで扱っている「祝日」に関する話です。
2020年東京五輪に関する祝日移動の特別措置法が2018613日に成立しました。 また、2020年から「体育の日」を「スポーツの日」に改める改正祝日法も可決・成立しています。 「海の日」「山の日」「スポーツの日(旧体育の日)」は2020年だけ東京オリンピックの開会式、閉会式に合わせて移動し、 2021年以降は元に戻ります。 「海の日」「山の日」は数日移動するだけなのですが、「スポーツの日(旧体育の日)」は10月から7月への移動となり、 これにより、202010月は祝日がないことになります。
(これらは2018620日施行となりました)

この前に「天皇誕生日」の件があることが認識できているでしょうか?
現状は1223日なのですが、即位後は223日になります。 即位が20195月なので既に新天皇の誕生日を過ぎているため、2019年は「天皇誕生日」がないことになります。 即位の前後を祝日とするのかとか、現状の1223日の「天皇誕生日」を別の名前の祝日として引き継ぐのかについても決まっていないようです。

VBA応用」「年間カレンダーの作成2」では、 プログラムのソースコードの改変なく祝日の改正に対応する方法を公開していますが、今回の法改正についての対応とその説明を追加しました。
祝日の設定を「祝日パラメータ」シートで設定するだけで動作するのですが、これにより「祝日」に関するソースコードのバージョン管理から解放されることになります。
2018/06/03 「ダウンロード」「シンプルなパスワード管理ツール」を修正しました。
前回同様にカスペルスキーインターネットセキュリティが行なっている「保護ブラウザ」の対応になりますが、 本ソフト側の秒数経過後にクリップボードをクリアする処理で失敗するのは「クリップボードにテキストがあるか」を参照する段階であることが判明しました。 カスペルスキーインターネットセキュリティ側が行なっているのはクリップボードからの情報詐取のようでこの動作がブロックされているようです。
クリップボードへのパスワード投入は元々エラーにはならないので、これをクリアする動作も同様です。 前バージョンではこの「クリップボードにテキストがあるか」でエラー脱出してしまっているのでクリアできていないものと思われます。 今回のバージョンではこの「クリップボードにテキストがあるか」の判定は行なわずに単にクリップボードをクリアさせるように変更しています。

また、ガイドメニュー内に「最新バージョンチェック」メニューを追加しました。
「ダウンロード」ExcelSQLServerツール」を修正しました。
まず、VBAプログラム用項目定義テーブル記述の出力機能を追加しました。
また、項目定義テーブル変数に表意するテーブルIDについて先頭方向の除外桁数の指定機能を追加しました。
さらに、処理概要に「SQLテーブル定義書と実際のデータベースの項目同期の重要性について」の説明を追加しました。 SQLServerに独自にテーブルを作成してそれを利用するプログラムを用意する場合にはぜひお読みお読みいただきたいと思います。 本ソフトが何をしようとしているのかがご理解いただけると思います。
2018/05/27 「ダウンロード」「シンプルなパスワード管理ツール」を修正しました。
今回の修正はカスペルスキーインターネットセキュリティが行なっている「保護ブラウザ」が他のソフトの表示に悪影響を及ぼしている件の対応です。 本ソフトで完全に防衛できるわけではないのですが、「保護ブラウザ」が起動するのは銀行、証券あるいは大手の通販会社なのでログインに本ソフトが使われるわけです。 このため、影響を極力抑えるように対応しています。
当該ページの先頭の方に「セキュリティソフトの保護ブラウザ使用中に不具合がある方へ」という説明を追加しています。

また本ソフトは「日経PC21 20187月号」の「フリーソフトでズバッと解決!」という連載コーナーで2ページ見開きで紹介していただきました。
(有償の月刊誌なので先頭の一部のみ画像で紹介します)
日経PC21 2018年7月号紙面の一部

2018/05/07 「ダウンロード」ExcelSQLServerツール」を修正しました。
Excelの「SQLテーブル定義」にワークシートがたくさんあった場合の処理過程が判りにくいというご意見があり、これに対応しようとする中で、 どうせなら現在の5つの機能メニューボタンについて、チェックボックスに変更して一度に複数の機能を順次一括処理できるようにするということを含めた操作性に関する変更です。
VB.NETDataGridViewを使用する場合に、利用者が部門等をメニューで切り替えて一覧を再表示させるような動作を行なった時に、 DataGridViewの縦横スクロールバーが消えてしまうという現象が最近、見つかりました。
発生頻度は少ないようで記述上で同じであっても再現する場合としない場合があります。 また、10年来使用している仕組みでも最近になって発覚していることから、WindowsUpdateによるものかもかも知れません。
これ以前に一覧の再表示で縦スクロールバーの長さが表示された一覧表示の全件を指しておらず、最終行までスクロールできないという現象はかなり以前から見つかっていたのですが、 今回の縦横スクロールバーが消えてしまうというのは全く異なる事象です。

以前からあった「スクロールバーの長さ不正」については画面描画上の問題だったので、強引にどこかの列を非表示⇒表示させることで復旧させるように仕組んでいましたが、 今回の「縦横スクロールバーが消えてしまう」件も画面描画上の問題のようで、ウィンドウサイズを変更するだけで復旧してしまうものです。 対応方法を考えたところ、
  ①縦横スクロールバーを一旦消去(非表示)する
  ②DataGridViewを一旦消去(非表示)する
  ③DataGridView上の一覧表示を再セットさせる
  ④DataGridViewを再表示する
  ⑤縦横スクロールバーを再表示する
という手順を行なうことで、以前からあった問題と今回の問題が解決できるので、対象となる各ページを更新しています。
2018/04/29 「ダウンロード」Excelテンプレート・アドイン作成」を修正しました。
最近になってExcel2013以降で「初期化マクロブック」の利用時に初期化マクロ内のシートのSelectに失敗するケースが見られるようになりました。 最近の現象なので、WindowsUpdateによる動作の仕様変更なのかも知れません。 本体プログラム側では「初期化マクロブック」を開いてから、元の処理ワークブックをアクティブに戻して初期化マクロを起動させていますが、 これで失敗するのであればマクロが起動されたワークブックがアクティブに替わっているということになります。

対処としては、初期化マクロ側で処理ワークブックをアクティブにする記述を追加しています。 既に「初期化マクロブック」を利用されている場合はExcelテンプレート・アドイン作成」の先頭の方のコラムをご覧下さい。
また、今までのバージョンでは「初期化マクロブック」の存在が希薄だったので、「初期化マクロブック作成」のメニューを追加しています。 「初期化マクロブック」については今までは配布する圧縮ファイル内に「初期化マクロブック(サンプル).xlsm」を同梱させていただけだったのですが、 今回よりテンプレートに変更しており、いつでも起動させることができるようになりました。
「初期化マクロブック」として機能させるためには、このテンプレート内で初期化を行なうマクロの実装を行なって、しかるべくファイル名で「マクロブック収容先」のフォルダに名前を付けて保存させた上で 対象となるテンプレート等に登録させて下さい。
2018/04/22 「ダウンロード」にあるVB.NET系フリーソフトをVectorに登録しました。
今回登録したのは以下のフリーソフトです。作者は「Excelでお仕事!」となっています。以下はVectorのページにリンクします。
「シンプルなパスワード管理ツール」 (当サイトの解説ページは⇒ こちら )
「シンプルJPEGビューワ」 (当サイトの解説ページは⇒ こちら )
VB.NETキーワード使用一覧4 (当サイトの解説ページは⇒ こちら )
VB.NETキーワード使用一覧3 (当サイトの解説ページは⇒ こちら )
ExcelVBAキーワード使用一覧」 (当サイトの解説ページは⇒ こちら )
「テキストキーワード使用一覧」 (当サイトの解説ページは⇒ こちら )
VB.NETソースファイル退避」 (当サイトの解説ページは⇒ こちら )
「テキストコピーツール」 (当サイトの解説ページは⇒ こちら )
Excelテンプレート・アドイン作成」 (当サイトの解説ページは⇒ こちら )
ExcelSQLServerツール」 (当サイトの解説ページは⇒ こちら )
当サイトがExcelためか、Excelとは関係ないフリーソフトはなかなか反響が少ないので、他のダウンロードサイトも利用してみようということで、今回の出品となりました。
「シンプルなパスワード管理ツール」についてはVector様側にソフトレビュー記事を挙げていただきました。 実際に試用していただいて2ページにもなる機能解説記事にしていただいています。

Vector新着レビュー記事の一部

「ダウンロード」「シンプルなパスワード管理ツール」に機能追加しました。また、不具合修正も行ないました。
大きい桁数でのパスワード登録を許可するサイトが多くなっていることから、サイト側の制限に近い桁数・難易度でのパスワード設定が良いわけですが、 例えば乱数発生を繰り返してログインを試行するような詐取行為があるとした場合は「桁数も不定」の方が良いだろうという考えに至りました。
今回の変更ではパスワードの桁数を「最小」「最大」として登録できるようにしてあります。バージョンアップ時点では「最小」「最大」は従来の「桁数」で同じになるようにしており、 この時点では従来とは変わりません。
ですが、上限「50桁」などというサイトも増えてきているので、このような場合は「最小30桁、最大50桁」などに設定すると、 この間で桁数もランダムに可変してパスワードを生成するように動作します。
今回の変更により、Excelエクスポートのシートレイアウトが項目追加で変わっており、またテンプレートのファイル形式が「.xltx」に変更されています。
さらに不具合についても修正を行なっており、本件については変更履歴をご覧下さい。
2018/04/07 「ダウンロード」「シンプルなパスワード管理ツール」を変更しました。細かいことですが度々の修正で申し訳ありません。
当サイトのVB.NETで作成している入力画面を持つアプリケーションは、その入力画面で内容は変更したものの、「登録」ボタンをクリックせずに画面を閉じようとした時に 「キャンセルが選択されました。入力途中の内容は更新されませんが終了しますか?」という警告メッセージが表示されるように全体の共通機能を設けています。
しかし「シンプルなパスワード管理ツール」にはパスワードを「マスクしない」というチェックボックスがあり、ここにチェックを付けるとパスワード文字列が視覚的に表示されるようになっています。 これはパスワードを失念してしまった時の対応なのですが、このチェックボックスの操作は実際にはパスワードを変更しているわけではないのに上記の機能により 「キャンセルが選択されました。....」が表示されてしまう対象になってしまう件を修正しました。
本件の共通機能ではフォーム上の入力コントロールを自動的に検知して内容の変異により登録ボタンをクリックせずに終了しようとしたかを判定していますが、 チェックボックスも処理上では入力コントロールなので今回の事象となっています。 そこで、内容変異チェックの対象としないコントロールを初期処理で登録できるように機能追加することで今回の変更を実現しています。
「ダウンロード」「テキストキーワード使用一覧」を修正しました。
テキストファイルの文字コード判定で判定不能で停止してしまう件や、拡張子指定が正しく動作しなかった件を修正しています。
2018/03/25 VisualBasicClickOnceって何!?」を再作成しました。
Excelから離れてしまいますが、10年来、VB.NETを使っていて、アプリケーションの配布はずっと「ClickOnce」で行なっていますが、 最終的な利用バージョンのチェック以外の実際のバージョン更新インストールについては「ClickOnce」に任せてしまって良く、 全てのクライアントで開発側が設定した最新バージョンで運用させることができるという、すばらしい仕組みなのです。

当サイトでは「配布の問題」という命題を挙げていますが、イントラネット内での利用でExcelにこだわらないのであれば、 「ClickOnce」によるアプリケーションの配布が最もお勧めできる方法です。
「ダウンロード」「シンプルなパスワード管理ツール」を変更しました。
初期表示されるアカウント一覧に「パスワード変更日」「パスワード桁数」の列を追加しました。 これは長期間パスワードを変更していないサイトや、単純文字列でパスワードを登録しているサイトが顕著に把握できるようにする処置です。
以前のバージョンでもパスワード変更の期限を設定している場合は、期限を過ぎると一覧の行が黄色で塗りつぶされるようになっていたのですが、 期限設定を行なっていない場合でも「どれだけの期間変更していないのか」が一覧を見るだけで判るようになりました。
また、最近ではパスワードの桁数上限を長くするサイトが増えているので、この上限に近い桁数で運用する方がより安全です。
なお、バージョンアップ後に追加された列の表示が列幅がおかしい場合は、オプションの「列リセット」を行なうか、 見出しの境界を横方向にドラッグさせて修正して下さい。
そのほか、桁数が多い時のパスワード生成についての不具合修正も含まれています。
2018/03/17 VisualBasicVB.NETから見たVBAの使いにくさ」を追加しました。
もう、10年来、VB.NETを使っています。VBAとの違いも解ってきたのでこのような記事にしてみました。
VBAの直接的な開発は減ってはいますが無くなったわけではありませんし、 VB.NET上でVBAの記述は相当行なっています。
ですから、VBAを否定する気は全くないのですが、逆にVBAからVB.NETへの移行を考えている方や、 移行したもののうまく行っていないと思っている方のために書いてみました。旧VBに比べてVB.NETの方が相当改善されているわけですし、 文字列や配列の処理などは格段に速いです。(具体的な速度比較はしていないので「体感」ですが) それに、なにより「配布の問題」を一気に解決してくれるClickOnceが使えるようになります。
2018/03/10 VBA応用」「年間カレンダーの作成2」を修正しました。 再三の修正で申し訳ありません。
カレンダー作成モジュールで1ヶ月のカレンダーを作成して返される日別テーブルには「週数」という項目があり日曜日になると1加算されるのですが、 1日が日曜日だと最初から「第2週」になってしまっていました。 手元にもこの「週数」を参照する例がなく、勤務先で見つかったのでこれを修正しています。次の機能追加分と合わせた更新になっています。
2月から行なっている祝日関連のロジック変更は「祝日法関連の変更があってもプログラムソースを変更しないで対応できるようにする」というものなのですが、 このサイトではExcelワークシート上の関数でもカレンダーロジックを利用して「営業日数算出」や「営業日かどうかの判定」を行なっているので、これらのページの修正を行ないました。
対象は以下の通りです。
「計算式」「「営業日数」の計算(ユーザー定義関数)」
VBA応用」「「営業日数」の算出」
また、これに伴いVBA応用」「年間カレンダーの作成2」のカレンダー作成モジュールも修正しておりますが、 今回の修正内容はオプション引数の追加で「祝日パラメータ」シートの並び替えを避ける処置だけなので、既存のプログラムには影響しません。 ワークシート関数利用ではシートの並び替えが発生すると関数動作が止まってしまうという現象が確認されたための処置です。 モジュールは入れ替えの有無にかかわらずそのままご利用いただけます。

また、「祝日パラメータ」シートの欄外のL1セルを「祝日パラメータ」シート自身の「更新日付」として利用するように変更しました。 現在、掲載している仕組みからこのセルの参照を行なうことはありませんが、将来、この「祝日パラメータ」シートの「新旧」を判断する場合の判断材料になると思います。 「祝日パラメータ」シートを変更する場合はこの「更新日付(L1セル)」をその処理日で更新するように義務づけて運用して下さい。
「祝日パラメータ」シートに関する項目説明や変更方法については「年間カレンダーの作成2(VBA応用)の中段の説明をご覧下さい。
2018/03/04 「ダウンロード」ExcelSQLServerツール」を修正しました。
VisualBasicプログラム用項目定義テーブル記述でテーブルIDは先にまとめて出力して、フィールド項目の定義テーブルはその後で出力するように変更しました。

そもそも、このツールのメリットが皆様に伝わっているのか反響がないので疑問になり、各ページに説明を追加しています。
このツールの機能は以下の通りなのです。ご存じない方も、ぜひご利用下さい。
機能 内容
Excelの「SQLテーブル定義」に従ってSQLServer用のテーブル作成スクリプトを出力します。 実際のSQLServer上のテーブルを直接作成するものではなく、「CREATE TABLE」「CREATE INDEX」を含めたスクリプトファイルを出力します。
このスクリプトファイルを「Microsoft SQL Management Studio」上のクエリ画面で実行することによりテーブルが作成されるものです。
これにより、Excelの「SQLテーブル定義」と実際のSQLServer上の実際のテーブルと「同期」が取れているということを確保するのが目的です。
SQLテーブル定義」には該当データベースの全テーブルを登録するのが一般的だと思いますが、本プログラムでも登録されている全シート分のテーブル作成スクリプトが出力されます。 一部のテーブルのみの追加やフィールド追加の場合は出力されたスクリプトファイルをテキストエディタで編集してご利用下さい。
Excelの「SQLテーブル定義」に従ってVisualBasic(.NET)プログラムからSQLServerにアクセスする時の テーブル情報のソース記述をテキストファイルに出力します。 出力されるのは「テーブルID」の定数定義と「フィールドIDテーブル」「フィールド項目タイプテーブル」の定義記述です。
これらが「SQLテーブル定義」に従って出力されることにより、これらの利用プログラム側のテーブル内容と実際のSQLServer上の実際のテーブルと「同期」が取れているということを確保するのが目的です。

この機能を利用した使用サンプルとしては、Visual BasicSQLServerで試してみます。」をご覧下さい。 この利用ページはソースコードの記述がかなり長いのですが、例えば登録済のマスタ情報を呼び出して一部の項目を変更して再登録させる場合、 中段くらいにある「GP_MakeUpdateSqlS」「GP_MakeUpdateSqlH」プロシージャを見ていただくと判りますが、変動があったフィールドだけをUPDATE文に編集するようになっているのです。
この時に活躍するのが本プログラムで作成された「フィールドIDテーブル」「フィールド項目タイプテーブル」なのです。 このプロシージャに関して言えば、フィールド数がもっと多いテーブルだったとしても、データタイプの種類分以外には行数が増えることはないのです。
「ダウンロード」Excelテンプレート・アドイン作成」も修正しました。
こちらは連続生成動作でExcelの状態が不安定になるケースが見られるため、連続動作でのExcelインスタンスを固定することと、処理後は起動画面自体も終了させるように対策しました。
2018/02/28 VBA応用」「年間カレンダーの作成2」を修正しました。 再三の修正で申し訳ありません。
これは「会社休日」を適用する場合の内部処置ですが、「会社休日が法制休日より優先されることはないはず」という指摘を受けました。 とても最もなことなのでこの件を修正することにしました。1月1日を通常通り「振替有り」と設定し、1月2日1月3日を「会社休日」とした時は、 1月1日が日曜日だった場合は1月2日は「会社休日」ではなく「振替休日」となります。
以前にダウンロードされた方は再度ダウンロードして差し替えて下さい。このページの「祝日パラメータ」シートの「会社休日」の説明も1月1日のところが変わっています。
この変更による影響は、サンプルから出力する「年間カレンダー」だと2006年2012年2017年1月2日で発生します。 もちろん、「会社休日」の設定を行なう時だけです。 また、祝日区分と祝日名が変わるだけで、営業日数等は変わりません。
これに伴って、「ダウンロード」「カレンダー入力用フォーム」についても、内部の祝日判定モジュールが同様の変更になっています。
2018/02/21 今月行なっているの祝日判定機能の変更に合わせて「ダウンロード」「カレンダー入力用フォーム」を大幅に再作成しました。
祝日判定を「祝日パラメータ」シートで行なうのは他のページと同じなのですが、カレンダー入力のユーザーフォームの動作を見直して、機能を再作成するとともに、 ワークシートのセルから呼び出しで、そのセルの直下に「カレンダー入力用フォーム」が表示されるように機能改善しました。
2018/02/18 VBA応用」「年間カレンダーの作成2」を修正しました。
先週公開したばかりなのですが、作成した機能要件ではなく処理時間の問題で、AddinBox」の角田さんからもテスト結果付きで指摘をいただいたことにより大幅な変更をしました。処理時間も大幅に改善しています。(AddinBox」の角田さんは祝日等を含めたカレンダー関連にとても詳しい方です)
さらに、月またぎでの「国民の休日」が発生する件での対応ができていなかったので、この件も対応しています。
現在、政府が検討している新しい天皇の即位の日を「祝日」にするか、という件で即位の日となる5月1日の対して、2日前の4月29日も、 2日後の5月3日も祝日のわけですから、現状の法律だと「中1日が祝日でない時は休日とする」となっていて、 これが決定されると2019年は4月27日(土)から5月6日(月)10連休が決まるのです。(現時点では決定ではありません)

2019年は10連休!?

2019年に関しては、2019年5月1日の他、10月11月には「即位の礼 正殿の儀」が予定されますが、これらも祝日となるかも知れないということです。
政府の決定がどうなるかは判りませんが、そのような決定になった場合は「祝日パラメータ」シートに新たな祝日を追加するだけで、ソースコードの変更なくこのようにカレンダーに反映されます。
2018/02/11 VBA応用」「年間カレンダーの作成2」を追加しました。
カレンダー関連の処理や営業日数の計算などを行なう場合「祝日」に関する処理が必須となりますが、当サイトの今までのサンプルや他サイトのサンプルでも「○月は○日が○○の日」というのをソースコード上に「ゴリゴリ」書いていく方法が一般的でした。
ですが、平成天皇の退位が決まって2019年は「天皇誕生日」の祝日がなくなることになり、さらに新しい天皇になると223日が「天皇誕生日」になることになります。 また、政府では「五輪特需」的な祝日の変更(新設ではなく「移動」かも知れない)が検討されているようです。
さらに企業内の処理では年末年始や創立記念日などを「祝日的」な処置にするケースも多いので、これらの処理をプログラムソースコードを変更することなく行なえないかと考えたのです。
「年間カレンダーの作成2」はこれを実現したもので、祝日の定義は「祝日パラメータ」と名付けたシートで行なっています。 祝日の改正があった時はこの「祝日パラメータ」シート上で変更するだけで処理年に応じた祝日が反映したカレンダーが取り出せるようになっています。
営業日数計算の関数も網羅させてあるので、ぜひご覧下さい。
「ダウンロード」にも「カレンダーテーブル取得クラス」を追加していますが、同じ内容のものです。
2018/01/03 API関連」の各メニューを再作成しました。
昨年11月くらいから作業していたのですが、古い記述の整理や、一部「ダウンロード」と重複しているのでリンクとして整理しています。