-- 更新履歴 --

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

2017年

2017/12/18 VisualBasic「ファイルの検索」を追加しました。
これはVBA応用」「ファイルの検索」とつながるのですが、 VBAでは「FileSearchオブジェクト」が廃止されたために大量なファイル群から少量のファイルをワイルドカードで検索するのが効率が悪くなってしまいました。
ならば、VBAはやめてVB.NETで作成してみてはどうだろうという紹介です。
2017/11/12 「ダウンロード」「テキストコピーツール」を修正しました。
前回、2017/03/30にリリースした以降の細かい改善項目のリリースになります。ページの一番下に更新履歴を作成していますのでご覧下さい。 今回は不具合修正も含んでおりますので、ご利用中の方はぜひご覧下さい。
上記の「テキストコピーツール」で不具合を見つけたのですが、その内に共通クラスに起因するものがありました。
登録ボタンを持つ画面で、登録ボタンをクリックせずに閉じようとした時に「キャンセルが選択されました。入力途中の内容は更新されませんが終了しますか?」と確認メッセージを表示させるものを共通クラス化させているものと、 ボタン上でダブルクリックした時にクリックイベントが複数回動作しないようにさせる制御を行なっている共通クラスの組み合わせが不具合を起こしました。
ダブルクリック抑制機能クラスの方ではフォームが閉じる動作(Form_Closing)に入った時にも以降のクリック動作を避けるようにしていますが、 未登録キャンセル抑制クラスもフォームが閉じる動作(Form_Closing)を利用しており、ここでメッセージを表示させてキャンセルを受け付けます。
しかし、ダブルクリック抑制機能クラスの方で一旦、閉じる動作に入ってセットしたスイッチは、未登録キャンセル抑制クラス側でキャンセルされてもセットされたままなので、 これ以降に登録ボタンをクリックしても何も動作しないという問題を生んでしまいました。
「ダウンロード」にあるVB.NETで作成したプログラムの大半が本件の不具合の対象になりました。 同じ共通クラスを利用しているプログラムは同様の不具合が発生するので、単に共通クラス側の修正を適用して再リリースするだけで事象は解決できるのが「共通クラス化」のメリットでもあります。
「ダウンロード」にあるVB.NETで作成したプログラムの各ページには更新履歴を追記してありますので、ご利用のプログラムがあれば確認をお願いします。 対象であれば再度ダウンロードさせてアップデートして下さい。

なお、VisualBasicにこれらVB.NETによる共通クラス化のサンプルがありますが、 これらサンプルは複雑化できないことの配慮により、ダブルクリック抑制機能クラスにフォームが閉じる動作(Form_Closing)イベントを実装させていないので、今回の不具合の対象ではありません。
VBA応用」Application.Quitの誤解」を再作成しました。
元の記事はWindowsXP+Excel2003時代のもので「自ブックのマクロでExcelを閉じるにはApplication.Quitの後でThisWorkbook.Closeを実行する」と説明していました。
これ自体は誤りではないのですが、最近になって「Application.Quit」だけでワークブックも閉じられている現象が見つかったので、その検証を含めて記事を再作成しました。 是非、ご覧下さい。
2017/10/29 「ダウンロード」Excelテンプレート・アドイン作成」を修正しました。
元々、1つの作成元ファイル名に対して、複数の作成先ファイル名を登録することはできるようになっていたのですが、 実際の作成作業は1つの作成先ファイル名ごとに選択し直さなければならなかったので、 これを1回指定するだけで連続して作成されるように変更しました。
元々はコンボボックスで1つずつ選択する方法だったものを、チェックボックス付きリストボックスに変更してあります。
ワークフローなどで用いる依頼書・申請書をデザインしたテンプレートなどでは、場合によっては全く同じレイアウトでタイトルだけ異なることがあり、 このような時は「元となる」ワークブック1つでデザインを行ない、「初期化マクロブック」を必要数用意してマクロでタイトルを差し替えるようにします。 これだと依頼書・申請書のレイアウトが変更されても、「元となる」ワークブックするだけで本処理で一括してそれぞれのテンプレートを再作成させることができます。
2017/10/15 「ダウンロード」の以下のページについて再作成しました。
「メール送信(BASP21利用)」
「メール送信(CDO利用)」
「ファイル圧縮(UNLHA32利用)」
「ファイル圧縮(7-ZIP32利用)」
主要機能モジュールをクラスモジュールに変更し、古いOfficeに関する記述の削除などを行なった上で再作成させています。
クラスモジュールにしたことにより、従来はエラーメッセージを返していたものが処理成否(Boolean)を返す方式に変更されています。 処理成否が「否(False)」の場合はプロパティよりエラーメッセージを取り出して表示させる方法になっています。
特に「メール送信(CDO利用)」のついては、 送信認証に関するプロパティ項目を追加するなどの対応も行なっています。
2017/09/18 さらに先々週に続いて「ダウンロード」「シンプルなパスワード管理ツール」を修正しました。 機能追加なのですが、結果的に「小出し」みたいになってしまって申し訳ありません。
シークレットの表示順番号帯を特定する機能を追加して、登録時の「表示順」番号のチェックを行なうのと、新規登録時の「表示順」番号のデフォルト表示からシークレットの表示順番号帯を除く対応を取りました。
また、パスワードのコピー画面に「コピー実施後本画面を閉じる」のチェックボックスを追加し、ここにチェックを付けて「コピー」ボタンをクリックした時は、クリップボード保持秒数経過後にパスワードコピー画面自体を閉じるようにしました。
さらに、検索機能の指定文字列は全角・半角。大文字・小文字関係なくヒットするように変更しました。
2017/08/27 先週に続いて「ダウンロード」「シンプルなパスワード管理ツール」を修正しました。
登録画面の「表示順」の番号は実は分類等である程度区切った番号帯を使いたくなるものですが、毎日使用する業務ではないので自分でどういう番号帯を設定したのか忘れてしまいます。 全件の一覧を見れば類推はできるのですが、どう決めたのかを表示できる機能が欲しかったので「オプション」に「表示順説明」のタブを追加して説明文で登録できるようにしました。
MDBの制約で255文字までですが、ここに登録すると、登録画面の「表示順」のところにToolTipで表示されるようになります。
「表示順」の番号帯が分類によるものというシステム的な制限はない上、アカウントに帯する分類も複数登録できることから、これは「ガイド表示」の域のものであって、仕組みとして制限するものではありません。
2017/08/20 「ダウンロード」「シンプルなパスワード管理ツール」を修正しました。
登録画面に「このアカウントはイントラネット内等のローカルアカウントなので使い回し判定を行なわない」というチェックボックスを追加しました。 ここにチェックを付けると一覧表示で「パスワード使い回し」を示すピンク色の塗りつぶしはされなくなります。
これは、社内系アプリケーションのログインアカウントなど社外からの漏洩等の危険性がないアプリケーションで、 本プログラムへの登録はパスワード等の失念対策としてであり、頻繁に利用する複数の対象アプリケーションへのログインをあくまでも記憶したパスワード(同じパスワード)を入力するというケースに対応するものです。 但し、内部的な同一パスワード重複利用件数のカウントは従来通り行なわれており、赤太字の警告メッセージが青字で表示されるように変更されます。
2017/08/15 「ダウンロード」Excelテンプレート・アドイン作成」を修正しました。
ワークブックを閉じる時の処理でBeforeCloseイベントとの衝突が見つかったので、これを修正しました。
2017/08/06 「ダウンロード」「シンプルなテキストリーダー」に機能を追加しました。
右クリックの「オプション」メニューに「行高の変更」メニューを追加しました。
テキストの表示に使用しているRichTextBoxコントロールはプロパティでの行高(行間)の設定ができないため、 当初はコントロールの標準値での表示のみだったのですが、自分自身が使用していて行高の調整ができないことが気に入らない状態で ネット上の情報などを探していたところAPIの「SendMessage」関数にて設定ができることが判って、 それでも日本語の情報が少なく苦慮したのですが、試行錯誤の上で実現できました。
複数のテキストファイルをライブラリに登録できて、それぞれの最終表示行を次回再現して表示できるので、それらも合わせてご利用下さい。
2017/06/18 MS-Office2003がサポート切れになって数年経過し、MS-Office2007の今年の10月でサポート切れとなります。
もう、MS-Office2007以降で追加されたワークシート関数も普通に説明しても良いだろうということで「IFERROR関数」、「EDATE関数」、「SUMIFS関数」などの説明を既存ページにですが追加しました。
IFERROR関数」については昨年からバージョン制限の説明を挟んで何カ所かで説明していたのですが、今回、エラー処置そのものの説明であるVLOOKUPで見つからなかったら「???」を表示する」に説明を載せました。 このページのようにエラー時に代替値に置き換える用途の場合は式がコンパクトにできるので一般事務でも知っておくと便利です。
EDATE関数」については今回初めて載せるもので、「日付から前日、翌日の日付を算出」に説明を載せました。 「前日、翌日」ではなく、その下に「日付から前月同日、翌月同日の日付を算出」というブロックを追加してDATE関数との違いを説明しています。 「nヶ月後の日付(マイナス時は前)」を算出するものなのですが、31日が起算日だと月末補正が働くので「1231日の2ヶ月後」で算出すると「228日」になってくれます。
但し、月末日を算出する用途であれば本来は「EOMONTH関数」なので、この説明も追加してあります。
EOMONTH関数」でのサンプル説明は、「今日の日付から月初/月末日を算出する。」にも追加しました。

MS-Office2007以降で追加されたワークシート関数でこの他に着目すべき関数といえば「複合条件集計関数」でしょう。
従来のSUMIF関数、COUNTIF関数が単一列に対して検索条件を指定できたのに対し、 SUMIFS関数、COUNTIFS関数などが追加されています。
最後に「S」が付くのは「複数形なのでしょうか、複数列に対してのAND条件の集計ができるようになりました。 今までも不可能だったわけではありませんが、配列数式やSUMPRODUCT関数では理解が困難だったのかも知れません。
SUMIFS関数のサンプルを「条件集計(複数条件)に追加しました。
2017/04/26 「ダウンロード」Excelテンプレート・アドイン作成」を修正しました。
起動イベントマクロがあるワークブックの処理で起動イベントとの衝突が見つかったので、これを修正しました。
2017/03/30 「ダウンロード」「テキストコピーツール」を修正しました。
前回、2016/11/27にリリースした以降の細かい改善項目のリリースになります。ページの一番下に更新履歴を作成していますのでご覧下さい。
Excel環境」64ビット版Excelについて」を更新しました。
当サイトでは現段階では特にVBAについて64ビット版Excelへの対応は行なわないというスタンスは変わりません。 これは「必要がない」という判断からなのですが、何で必要がないと判断したのかや将来的にも必要がないのかや、 この判断に至る要素となるマイクロソフトの記事へのリンクを含めて説明を追加しました。
これらの説明の中には将来的にはVBAについて32ビット版と64ビット版を見分けて処理する必要性が発生するだろうことから、 VBA応用」「条件付きコンパイルについて」にもシステム環境によって動作を切り分ける方法の説明を追加しています。

64ビット版Excelで当サイトで提示しているマクロが動かないというような問合せは数件いただいています。 その都度回答はしていますが、そもそも何で「64ビット版Excel」なのかを質問者の問うような説明が必要だと思いました。
今のところ、明確に64ビット版Excelが必要だとされる要件を持っているケースはありません。 これに対して、VBAでの64ビット版対応の可否・難易度や、32ビット版と併存させる場合の管理ボリュームの増加などから大きなコスト増になってしまうのです。

現段階では「この機能が必要であれば32ビット版Excelを利用して下さい」と回答して済むわけですから、64ビット版Excelへの対応は行なわないと判断していますが、 何もしないのではなく調査や準備に掛かるキーワードは持たせたつもりです。

上記のような「誤解」が多いせいなのか判りませんが、Office2016ではダウンロード購入の場合は全て32ビット版に限定されるようです。 ダウンロード購入のサイトを見ると、そもそも「32ビット版Office」「64ビット版Office」の選択に触れる記述も見つかりません。
このような点から見てもマイクロソフト側も64ビット版を推奨していないし、以前よりトーンダウンしていることがよく解ります。
2017/03/12 「ダウンロード」MDB生成/テーブル定義取得ツール」に機能追加しました。
別のテンプレートを追加してMDBではなく、ACCDBの生成やテーブル定義取得が行なえるようになりました。 元々「MDB」がファイルのタイトルになっていたため、同一ファイル内での機能追加ではなく、同形式ワークブックを別に作成しての対応となりました。 動作確認ができているのはOffice2010、2013、201632ビット版のみとなります。 これにより、ページタイトルもMDB(ACCDB)生成/テーブル定義取得ツール」に変更しました。
この他、当サイト内の各MDBにもACCDBに関する対応方法の案内を追加しています。

ここからは私見ですが、ACCDBについてはMicrosoftからの情報がなぜか少ないようで、ACCDBへの移行を強く勧めているようにも見えません。 パスワードの暗号化強度向上などがあるようなので「移行不要」とは判断しませんが、今までのMDBの利用方法に比較しての目立ったメリットは残念ながら見いだしにくいようです。

さらにはMDBとの互換でOfficeDAOに制限があること、移行用の「互換パック」も見当たらないこと、ACCDB自身に32ビット版と64ビット版でファイル自体の互換がないようであることなど、移行を踏みとどまらせる要因が目立ちます。
これに加え、DAOでのACCDB操作は、従来のDAOのようにOfficeなしでも動くというものではないようです。 参照設定のライブラリはOffice環境内のものを指定するのでこういう見解になるのですが、手元にOffice無しのPCが見当たらないので検証できていません。

今回、ACCDBに関する記事追加に至ったのは、これに関連する問合せが増えてきたことや、関連情報がいただけたことによります。 情報をお寄せいただいた皆様にはお礼を申し上げます。ありがとうございました。
「ダウンロード」MDBデータ取得ツール」に機能追加しました。
上記同様にACCDBへの対応を追加しました。上記のように別ブックにするのではなく、同一ブックでMDBACCDBへの対応が取れるように対応し、 この段階ですからファイル形式もテンプレート形式(*.XLTM)での供給に変更しました。
これにより、ページタイトルもMDB(ACCDB)データ取得ツール」に変更しました。
VBA応用」と、Visual BasicにあるMDB関連ページに、 ACCDBへのアクセスでの記述変更箇所の説明を各ページの一番下に追加しています。
2017/02/20 「ダウンロード」Excelテンプレート・アドイン作成」を修正しました。
見た目で判るような機能修正ではありませんが、大きなアドインの作成で失敗するケースが散見されたので工程途中にウェイトを入れるなどの対応を入れてみました。
ここでの「大きなアドイン」というのはこちらの事例で、ソースコードが20,000行を超えているものですが、ソースコードを保存させたワークブックに対してアドインのサイズが結構大きかったものが、 今回リリースしたもので作成し直すと半分程度の大きさになっているので修正の方法は正しいのだろうと判断しています。
「ダウンロード」にある下記をを修正しました。
VB.NETキーワード使用一覧」
ExcelVBAキーワード使用一覧」
「テキストキーワード使用一覧」
内容は同一で、起動画面に「シート上の表示内容を列幅内で自動的に折り返す」の指定機能を追加しています。 従来は「検索結果に前後の行も抽出」にチェックを付けていても列幅の調整は行なっていませんでしたが、 今回の「シート上の表示内容を列幅内で自動的に折り返す」ではA4横で100%で印刷できるように列幅を調整して表示します。
2017/02/12 VBA応用」「セルのコメントの操作する。」を更新しました。
コメントの文字の一部の色を動的に変えるサンプルを一番最後に追加しました。
さらにコメント操作部分はセル値変異のイベント記述から分離させたので、応用もしやすくなったと思います。
Visual Basic「データベースを参照してみます。」とそのグループの各ページを更新しました。
前回のVBA応用」「データベース操作」関連の更新と同様で、数年経過したものが多く、記述形式も古かったためほぼ再作成となりました。 サンプルはVBA応用」「データベース操作」と同じものを使用しています。
今回は、データベース関連の更新だけでなく、フォーム上の動作の合理化などを含めてサンプルを作成しました。 Visual Basicについては全体を見直したいのですが、充分な時間が取れないこともあり、 中核となるデータベース関連のページをまず更新したというものです。
MDBSQLServerI/Oに関する共通クラスをはじめとして、DataGridViewに関する共通クラス、 登録更新画面での登録ボタンをクリックせずに終了しようとした時に警告を表示させるための共通クラス、.NET Framework特有のボタンをダブルクリックした時の不正動作を抑制するためのクラスなども公開しています。

データベースの固有部分に関与しない範囲ではMDB版とSQLServer版は何も変わりません。 画面動作関連で関心がある方はMDB版だけをご覧いただければ、こちらでやっていることの意味が解ると思います。 例えば、登録更新画面で項目の変更を行なった後のテーブルへのUPDATE文の編集では、SET句には変更を行なったフィールドの記述のみが編集されるように配慮されています。 サンプルはフィールド数が少ないからできるということではなく、フィールド数の大小に影響が」あまりないようにできる方法を採っています。 このことは、更新SQL文の長短くらいで運用側には何も影響がないことですが、結果としてはプログラムの動作テストをも簡単にできるというメリットがあることです。
2017/01/09 VBA応用」「データベース操作」とそのグループの各ページを更新しました。
これらのページのサンプルは10年以上経過したものが多く、記述形式も古かったためほぼ再作成となりました。 これは私自身がデータベースに関しての経験が当時と比べるとかなり深まったことによる部分も影響しています。
サンプルの素材も「部署・役職・社員・配属」をマスタ化した一般的な会社の組織をイメージしたサンプルに刷新させています。
中には、RDOなどの現在のWindows/Officeで利用できないコンポーネントの説明ページがあったりしていたのでこれらのページは削除しています。
この再作成にはMDBSQLServerも含まれており、 連動して「ダウンロード」MDB生成/テーブル定義取得ツール」SQLServerテーブル定義ツール(VBA版)も再作成しています。
Chromeブラウザなどではメニューメンバの表示がJavaScriptで行なわれている関係で、古いメニューメンバの表示が残ってしまうことがあります。 このような場合は上記の赤字で説明している方法で閲覧履歴データを消去して下さい。