-- 更新履歴 --

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


2019年

2019/12/30 VBA基本」「実行時エラーの対処方法」を再作成しました。
公開から結構年数が経っていて見直さなければならないページもたくさんあるのですが、その中でも優先度が高いページでした。
当サイトはVBAの解説が多く、どちらかと言うと中級者向けであることから「VBA基本」といえども内容は深い方へシフトするように変更しています。
2019/12/22 「ダウンロード」「自由設定のCSVファイル出力」を再作成しました。
主要動作部分をクラス化した他、簡単設定版と詳細設定版の2種類を盛り込みました。
また、セル内の制御文字登録やセル内改行への対応も行ないました。
「ダウンロード」「フォルダの参照」を再作成しました。
Application.FileDialog」は初期表示フォルダを「InitialFileName」プロパティで指定するわけですが、 起動後に「フォルダの参照」を複数回呼び出すということは「まれ」なはずなので、カレントフォルダを汚さずに元に戻すことをデフォルトにするように変更しました。
このサンプルの中には「ファイルを開く」「名前を付けて保存」の新旧サンプルも含まれますが、これらについても同様の対応を行なっています。
2019/12/08 VBA応用」「ユーザーフォーム表示位置の制御」を追加しました。
内容はダブルクリックした指定セルの直下にユーザーフォームを表示させるというもので、 単にそれだけなら以前から「カレンダー入力用フォーム」で行なっていたものなのですが、 今回の対応はそれだけではなく、指定セル直下にユーザーフォームを表示させる場合にユーザーフォームがスクリーンからはみ出すか判断し、 はみ出す場合は指定セルの直上に表示させるように制御を追加させたものです。 スクリーン右端からはみ出る場合は、スクリーン右端いっぱいに合わせてユーザーフォームを表示させます。



但し、VBAには限度があり複数ディスプレィではこの「はみ出し」判定がうまく行かないことがあります。 この件についても、ページの最後に説明しています。



「ダウンロード」「カレンダー入力用フォーム」についても同様の対応を行ないました。
2019/11/24 「ダウンロード」MDB(ACCDB)生成/テーブル定義取得ツール」及びVBA応用」MDB(ACCDB)関連各ページを更新しました。
更新内容は「64ビット版Officeの対応」と「MDBACCDBの統合(共用化)」です。
VBA応用」の更新ページは以下になります。
「データベースへの接続方法」
DAOでデータを取得する。」
ADOでデータを取得する。」
Excelでデータベースを更新する。」
Accessなしでデータベースを作成する。」
「ワークシートからデータベースに一括登録」
MDBのテーブル定義内容を取得する。」
これらのページはサンプルは重複しています。
特にDAOについて従来は「Microsoft DAO 3.6 Object Library」の参照設定で説明していましたが、 今回から「Microsoft Office 1x.0 Access Database Engine Object Library」に変更しています。 64ビット版の動作確認で判明したことですが、この2種類の参照設定は32ビット版、64ビット版で使い分ける必要はなく、どちらも「Microsoft Office 1x.0 Access Database Engine Object Library」で済むことが判りました。
Excel単体版等で「Microsoft Office 1x.0 Access Database Engine Object Library」が参照設定リストにない場合は「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」をマイクロソフトサイトからダウンロードさせてインストールして下さい。
※既にサポート切れとなって年数経過したOffice2007以前のバージョンには対応していません。
2019/11/10 「ダウンロード」「カンマ数不定のCSVファイル読み込み」にサンプルを追加しました。
Excel2016以降では「カンマ区切り」が「コンマ区切り」という名称に変わっています。



元々「CSV形式ファイル」というのは仕様があいまいで多種多様なものです。 いろいろなWebシステムから「CSV形式ファイル」がエクスポートできることが多いわけですが、この「中間編集」などにExcelが多用されています。



以前から「カンマ数不定のCSVファイル読み込み」で提示していたサンプルは古い仕様であって、 例えばExcelで「セル内での改行」や「セル内にカンマ」がある状態でファイルの種類を「CSV(カンマ区切り)(*.csv)」にして保存されたものは正しく読み込めませんでした。



今回追加したサンプルはこれらを解決するものです。 実際の処理部分はクラス化させており、そのクラスを使って「CSV形式ファイル」を読み込んでExcelシートに書き出すサンプルで、 「CSV形式ファイル」をそのままExcelで開いたものと比較検証ができるようになっています。
ページのタイトルは「カンマ数不定の...」ですが、このサンプルは「不定」ではなく「可変」としておりクラスの呼び出し時にカラム数をプロパティで引き渡して実データをチェックできるようになっています。(カンマ数チェック有無指定可)



このサンプルの結果だけであればマクロなど使わずにそのままExcelで「CSV形式ファイル」を開けば良いことになってしまいますが、 実際にマクロで仕組みを作って処理させる場合はExcelシート上に開くのでは無く、読み込んだものを後続する仕組みに渡すことを目的とすることになります。



Webサイトから様々なサンプルコードが得られる時代ですが、この方法のサンプルはあまり見かけません。 3重ループ構成になるなど構造が難しいことが影響していると思いますが、 本件を「ダウンロード」に置いているのは、クラスとしてそのまま利用していただくことを目論んでおり、 クラスの中身までを細かく理解しなくてもご利用いただけると思います。
2019/10/27 「ダウンロード」「シンプルなパスワード管理ツール」をバージョンアップしました。
今回の更新は処理速度改善をもくろんだデータベース構造の大幅変更とパスワードコピー画面の経過時間での自動消失などの機能追加です。 特にタスクトレイモードでの改善点が数多く含まれています。
昨今、ニュースなどでも「リスト型攻撃」という言葉が出てきますが、これらは「パスワードの使い回し」を前提とした犯罪です。 ネット利用者がアカウント毎にパスワードを変えていれば成り立たないことなのです。 このアプリケーションはそのためのツールなので、ぜひご利用いただきたいと思います。
ちなみに、このアプリケーションは32ビット版のみなのですが、Excel連携する時のExcel64ビット版でも問題なく動作しています。
2019/10/22 64ビット版Excelの対応を行ない始めました。
突然この手の問い合わせが増えてきて、どうやらOffice2019以降はデフォルトが64ビット版になるということのようです。
このサイトのサンプルコードにはAPIを使用したものが数多くあります。
Declare」で検索しただけでも数十ヶ所あるので、すべて対応するには時間が掛かりますが、 とりあえずAPI関連」の各ページと、 リクエストが多い「ダウンロード」「カレンダー入力用フォーム」について対応を行ないました。
どれもAPIの宣言部分に「#If VBA7 Then」の判断・分岐を行なうだけで対応できています。(64ビット版Excelでの動作確認も行ないました。)
また、Excel環境」64ビット版Excelについて」を更新し、さらにAPI関連」32ビット版、64ビット版での共用利用」を追加しています。



なお、64ビット版Excelの動作確認はExcel2019のみです。
当サイトのサンプル等で64ビット版Excelでエラーになるといったことがあれば情報をお寄せいただくと助かります。
2019/08/25 下記の「2019/07/06」の後半で触れたことですが、.NET Framework 3.5に関してはきちんと説明した方が良いと判断し、 当該ページを追加しました。 「デフォルトでインストールされない」は「2019/07/06」の説明で合っているのですが、「どうしてそうなった」かの説明もしています。
といっても当方もこれらの対応は情報を検索して対処しているので「受け売り」でしかありません。

しかし、.NET Framework 3.5のインストールについては何台も経験しており、方法としてはお勧めできるものですのでご覧下さい。
2019/08/20 VBA応用」「年間カレンダーの作成2」などの年間カレンダーサンプルですが、 そのまま印刷させると年間カレンダーが1ページに収まらない現象が見つかりました。

この仕組みは、年間カレンダー作成(05_AboutCalendar2.xlsm等)のマクロブック内に年間カレンダーの「原紙」となるシートが隠してあり、 作成段階ではこのシートを新規ワークブックに転出してカレンダーを作成していく方法を採っていますが、 新規ワークブックに転出した時点で、Excelのデフォルトのスタイルが適用されてしまうことが原因だと判りました。

新規ワークブック転出時にスタイルのフォント(.Styles.Item("Normal").Font)をいじった程度ではうまく行かないので、 フィットページで1シート(年間カレンダー)が1ページに収まるようにページ設定を追加しました。
2019/07/27 API関連」「コンピュータ名やログインユーザ名の取得。」を修正しました。
API関連」のページだったのですが、このページの内容もAPIを利用せずに機能できるようになっていました。 更新が遅くなって申し訳ありません。
API」「非API」のボタンを横に並べてあるので結果を比べられます。
どちらでも問題ない場合は「非API」の方法を選択された方が賢明でしょう。 というのも将来的に「Microsoft Office」の64ビットが主流になるかも知れないことを考えると、 「Declare」の記述の対応が要らない方法の方が良いだろうと考えられるからです。
「パソコン環境」「ノートパソコン」を更新しました。
「薄型高性能」にジャンルされるノートパソコンなので、室温が30度近くなる夏場はルームエアコン以外に「冷却」が必要なようです。
この対策に関する説明を追加しました。市販の「ノートクーラーパッド」そのままでは本ノートパソコンには作用が真逆なことが判りました。
2019/07/06 「配布の問題」を見直しています。
全体の見直し修正完了はまだですが、中でも「アドイン動作のサンプル」は全面的な再作成を完了しています。

*.xlsm」「*.xlam」というファイル形式だけではなく、モジュールすべてを見直しました。 以前はブックを閉じる時にアドインも閉じて良いかの判断は閉じようとしているブック側で行なっていましたが、 この判断もアドイン側で行なうようにしてブック側でのマクロ上の判断動作を極力減らしています。

さらにはツールバーは使用していますが、これは当該ページで説明しているようにリボン操作では細かい制御が難しいことがあるためです。 その代わりですが、対象ブックを開いてツールバーが作成された時にアドインタブを自動選択させるように対応しました。
「ダウンロード」.NET Framework作成プログラム各ページの「インストール」の説明を修正しました。

私の.NET Frameworkの上位互換に関する認識が誤っていたらしく、機能としては上位互換なのですがインストールレベルでは「境い目」があるようです。 現時点ではサポート切れであってもWindowsの旧バージョンユーザーがあるため、作成側では.NET Framework 2.0~3.5をターゲットとしていますが、 これらは現在のWindows10の新規PCでは初期環境としてインストールされていません。
このこと自体は経過年数を見ればしかたないのですが、今までの説明では「Windows 7以降であればそのままインストールするだけで動作できます。」としていたので これを訂正させていただきました。

Windows10環境で当サイトの.NET Framework作成プログラムがインストール時にエラーになるのはほぼこれが原因ですが、 環境面での解説は当サイトの領分ではないと思いますので本件は解説サイトへの案内に止めさせていただいています。

Windows10のインストールメディアには.NET Framework 3.5が含まれているものの リリースから10年以上経過していて「デフォルトでインストールされない」というのが正しい説明のようです。
2019/06/24 おかげさまで、トップページのアクセス数が400万件を超えました。

ほとんどのご来訪者は検索サイトから目的のページに直接入るので、そのまま戻ってしまうとこのカウントには含まれません。
しかもスマートフォン時代になって若い方がパソコンに関心が薄れていて、かつ、検索主体なのでトップページから入る方が大きく減ったことで、 このサイトの人気も減ったのかも知れませんがトップページのアクセス数は大きく減っています。
ですが、なんとかこの数字にはたどり着けました。 ありがとうございました。
今後も「Excelでお仕事!」をよろしくお願いします。
2019/06/01 VBA応用」ColorIndex色見本」を修正しました。
ColorIndex」というのは現在も使えますがExcel2003(*.xls)までのものでした。
Excel2007以降(*.xlsx *.xlsm)では「Color」が使えます。 このColor」の色見本作成機能を追加しました。
Color」では2563乗で1677万色が使えることになります。
しかし、これをセルに縦に並べるマクロを作る場合は行数限度が104万行であり、ブック内の固有セル書式数の限度が64,000という限度があるので、 8ずつ間を飛ばすことにしており、それでも36,000件近くになります。
2019/05/06 「パソコン環境」「自作パソコン」を更新しました。
GW期間を利用してですが、PCケース、マザーボード、CPU、メモリ、SSDHDDなど、ほぼ全部入替えとなりました。
2019/04/07 「ダウンロード」ExcelSQLServerツール」を修正しました。
"timestamp"型を追加する対応及びフィールドの初期値投入記述(DEFAULT)対応を行ないました。

このツールは「いまいち」人気がないのですが、社内でSQLServerを使った個別業務の仕組みを構築することはあまり需要がないのでしょうか。 あるいは別のテーブル管理方法を導入していて「変更」のアクションが採れないのでしょうか。

このツールの意義は「Excelシート上でテーブル定義を作成すると即座にテーブル作成のスクリプト(SQL文)が作成できる」ということなのです。 テーブル定義書と実際のテーブルの同期が取れるほか、実際のテーブル作成までの時間が掛からないので開発作業が迅速に行なえます。

さらに、VB系言語用のフィールド名テーブルの出力機能もあるため、テーブル更新のSQL文編集にも役立つようになっています。
2019/04/03 「ダウンロード」「シンプルなパスワード管理ツール」を修正しました。
不具合の修正になります。
登録済のアカウントの変更登録を行なう時に一覧表示側で表示選択されていない分類に変更した場合、登録には問題ないものの、一覧表示に戻った時にシステム例外が発生することが判明し、これを修正しました。
修正前のバージョンではシステム例外発生時にエラーメッセージが表示された後でプログラム終了してしまいますが、再度起動すれば変更登録が反映された状態で一覧表示されるので登録内容には問題ありません。 このような変更登録を行なうこともまれですが、不具合ではあるのでぜひ最新プログラムにアップデートさせて下さい。
2019/03/31に一旦変更登録分について対応を行ないましたが、新規登録でも同様の事象となるため再修正を行ないました。
2019/03/17 「計算式」「生年月日から満年齢を算出」を追加しました。
ある程度Excelを使っている方からすると「何を今さら」と思われるかも知れませんが、この説明がないのはおかしいと思って追加したものです。 但し、「DATEDIF関数」を調べてみると、これはMicrosoft的には「非サポート関数」という扱いなのです。 こういった説明も最後に追加しています。
「計算式」「今日の日付から翌週の月曜日を算出する」を追加しました。
「日付」のExcel上の取り扱いがなかなか理解してもらえないようで、この手の質問は減りません。 VBAをある程度理解されている方なら「日付はシリアル値」という理解があると思いますが、計算式レベルだと難しいのかも知れません。
そういった説明を含めています。
VBA応用」「計算式をVBAから書き込む。」を修正しました。
「数量、単価以外は無視」という列判定が「Or」でなければならないところが「And」で記述されていました。 計算式をセットする前に不要行でセットに行かないように判定するところであって、数量・単価が入力されなければどちらにしてもゼロなので実害はなく、 長い間にわたって指摘もなかったのですが、今回「くんちゃん」さんから指摘をいただきました。
「くんちゃん」さんありがとうございました。誤りのご指摘をいただけるのは大変助かります。
2019/02/03 「計算式」「文字列操作の例(商品コードに英字が含まれているか)」を追加しました。
「商品コード」と題しましたが、「コード」類では全て同じです。
あるところから「コードに英字が含まれているか」の判定方法を質問されたので、解説ページの題材にさせていただきました。 結局は数通りの方法があるので、ぜひご覧下さい。
「ダウンロード」「パスワード生成クラス」を追加しました。
「シンプルなパスワード管理ツール」などパスワードに関するページはいくつかありますが、 今回は会社がクラウドサービスを利用するのあたり、全社員のアカウントを作成するなどで難易度が高い多数のパスワードを一括して生成するような目的で利用いただけるものです。

クラス化してあるので既存の仕組みに組み込めますが、現実問題としては社員リストが既にあるのであればサンプルで必要件数を生成した後でパスワード列にコピー・貼り付けだけで要件は完了してしまいます。