-- 更新履歴 --

ここでは「誤字脱字の修正」「書式表現の訂正」「画像の差し替え(Windows、Officeのバージョン変更等)」といった微細な修正は記載していません。
ブラウザによっては以前のページ情報がキャッシュに残っていて新しいページに置き換わらない場合があります。 各ページのメニュー右側の「Last Update : 」が更新履歴にある日付より古いままの場合は、F5キーなどでページを更新して下さい。
Chromeブラウザ等で利用されている場合はキャッシュの画像、ファイルが更新されない(変更前の画像が表示されるとか、新しいページがメニューメンバの表示されない等)ことがあるので、 そのような場合は「ブラウザのリロードについて」を参考にして下さい。


2018年

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

以前からあった「スクロールバーの長さ不正」については画面描画上の問題だったので、強引にどこかの列を非表示⇒表示させることで復旧させるように仕組んでいましたが、 今回の「縦横スクロールバーが消えてしまう」件も画面描画上の問題のようで、ウィンドウサイズを変更するだけで復旧してしまうものです。 対応方法を考えたところ、
  @縦横スクロールバーを一旦消去(非表示)する
  ADataGridViewを一旦消去(非表示)する
  BDataGridView上の一覧表示を再セットさせる
  CDataGridViewを再表示する
  D縦横スクロールバーを再表示する
という手順を行なうことで、以前からあった問題と今回の問題が解決できるので、対象となる各ページを更新しています。
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ページにもなる機能解説記事にしていただいています。
「ダウンロード」「シンプルなパスワード管理ツール」に機能追加しました。また、不具合修正も行ないました。
大きい桁数でのパスワード登録を許可するサイトが多くなっていることから、サイト側の制限に近い桁数・難易度でのパスワード設定が良いわけですが、 例えば乱数発生を繰り返してログインを試行するような詐取行為があるとした場合は「桁数も不定」の方が良いだろうという考えに至りました。
今回の変更ではパスワードの桁数を「最小」「最大」として登録できるようにしてあります。バージョンアップ時点では「最小」「最大」は従来の「桁数」で同じになるようにしており、 この時点では従来とは変わりません。
ですが、上限「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月くらいから作業していたのですが、古い記述の整理や、一部「ダウンロード」と重複しているのでリンクとして整理しています。

 過去年度の更新履歴は以下のリンクからどうぞ
 なお、過去の更新履歴の中には廃止したページへのリンクが残っている場合があります。ご了承下さい。
   2017
   2016
   2015
   2014
   2013
   2012
   2011
   2010
   2009
   2008
   2007
   2006
   2005
   2004
   2003