-- 更新履歴 --

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

2006年

2006/12/03 「VBA応用」「ワークシートからデータベースに一括登録」を追加しました。 また、前回追加したCSV形式ファイルからデータベースに一括登録」もこれに合わせて再作成しました。
どちらもサンプルデータ、サンプルMDBを含めてダウンロードできるようにしてありますから、実際に動作を確認させることができるようになっています。
2006/11/19 「VBA応用」CSV形式ファイルからデータベースに一括登録」を追加しました。 一括登録関連の質問が多かったことから考えていたものですが、ダウンロードのツールにするところまでは至らず、前提条件を満たせばそのまま利用できるコードです。
でも、それほど長いコードではないし、中核部分だけのコードも提示していますので、そのまま利用できない場合でも元データに合わせて多少の改造を加えれば、ほとんどのケースで利用できると思います。
2006/11/12 「VBA基本」「動的配列の勉強」を追加しました。
配列の関する質問は結構多いです。私自身もプログラムに関する「初心者」の領域を超えるのには「配列操作を体得すること」は無視できないと思っているので、このあたりは皆さんにもきちんと学んでいただきたいと思います。
2006/11/05 「計算式」「コードから名称を表示」VLOOKUP関数の参照元とリストで「数値」と「文字列」のデータ型の違いでヒットしない場合の対応方法の紹介を追加しました。
2006/10/23 「VBA応用」SQL文を使ってポイント計算する。」を更新しました。
2006年最終戦までの順位データを登録したのと、コード記述が「2004年」の固定されていたのをシートの右上セルに登録した年度で計算できるように変更しました。
2006/10/09 「計算式」「時間数計算で30分単位に四捨五入!」を追加しました。
2006/10/01 今回は内容的なアップデートではないのですが、従来、各ページの上部にあるメニューで現在表示中のページを黄色い三角のマークで示していたのですが、 「判りにくい」とのご意見をいただきましたので、そのマークの色を赤に変更するのと合わせて、メニュー名を太字表示されるように変更してみました。
これで、現在のページ位置と、前後に何があるのかが多少は直感的に判るようになったと思います。
2006/09/04 「VBA応用」「計算式をVBAから書き込む。」に誤記が見つかったので修正しました。

    If ((COL <= 2) And (COL > 4)) Then Exit Sub
  となっていたのですが、脱出条件なので、この「And」は誤りです。

    If ((COL <= 2) Or (COL > 4)) Then Exit Sub
これが「正解」です。本件については、「佐藤」さんよりご連絡をいただき訂正することができました。「佐藤」さん、ありがとうございました。
2006/09/03 おかげさまで、当サイトも3周年を迎えることができました。
「VBA応用」「固定長形式テキストデータの読み込み」を追加しました。
  この逆の「固定長形式テキストデータの書き出し」を先に作成してありましたので、その逆の説明になります。
「VBA基本」「番地だけ書いて郵便は届くか(セル指定の話)」の中で、

    Sheets("Sheet1").Range("A1").Copy Destination:=Sheets("Sheet2").Range("A1").Value
などというサンプル記述を書いていました。コンパイルは通りますが、これでは実行時エラーになってしまいます。

    Sheets("Sheet1").Range("A1").Copy Destination:=Sheets("Sheet2").Range("A1")
これが「正解」です。この方法では書式込みでのコピーしかできません。どうやら、手前の値転記の記述からコピーして、「.Value」を消し忘れていたようです。
本件については、「土倉大尚」さんよりご連絡をいただき訂正することができました。「土倉大尚」さん、ありがとうございました。
2006/08/27 「配布の問題」「アドイン動作のサンプル」のアドイン側のコードを一部修正しました。
  結果的には、「画面描画停止」⇒「ツールバー制御」⇒「画面描画再開」となるべきところの「画面描画停止」が抜けていた点の修正ですが、これが抜けていても画面上ではどちらにしてもツールバー切り替えの一瞬の明滅は見えてしまうのです。 ところが、これが別の形で不具合となって現われました。「ツールバー制御」⇒「画面描画再開」という動作を行なうと、Excelウィンドウ内の各ブックのウィンドウ(最大化でない場合)がマウスでドラッグ等ができなくなるのです。 Excelのバグのようにも見えるのですが、この現象を調べているうちに、「画面描画停止」が抜けているのを見つけて、追加すると直ってしまうという結果になりました。
この事象をお知らせいただいた「中村」さん、ありがとうございました。
2006/08/20 「VBA応用」「固定長形式テキストデータの書き出し」を追加しました。
  私も10年以上前にはCOBOL言語でのシステム開発に関わっていましたが、このようなシステムは未だに「現役」なのでしょうか、この手の質問はなくなりません。 そこで、Excelのシート上のデータから固定長形式データを出力するサンプルを用意してみました。
2006/08/06 「データベース関連」Excelでデータベースを更新する。」を変更しました。
  ネットワーク上でできるだけ安全にMDBを共有利用できるように必要都度、再接続する方法のサンプルを追加しました。(2006/08/09)
2006/07/02 「ダウンロード」「プログレスバーのクラス」にモードレスフォームでのサンプルを追加しました。 いただくご質問などで、モーダルなフォームでは理解が難しいようなので作成してみたのですが、やはりモードレスではウィンドウが切り替えられてしまうため、Escキーの中断機能の実装をあちこちに作り込む必要が発生するので、結果としてはお勧めしにくいものになりました。
「ダウンロード」「メール送信(CDO利用)」を追加しました。 内容的には「VBA応用」CDOでメール送信」と変わりませんが 組み込み利用しやすいように送信部分を別モジュールとして、順次連続送信のサンプルを加えてあります。
「ダウンロード」「フォルダの参照」を変更しました。 新しいタイプのダイアログを表示させていましたが、いくつかの問題があって、メインで紹介する方法は従来ダイアログに戻しました。 新しいタイプのダイアログについては、最後に別のサンプルを用意して紹介させています。
2006/06/18 「VBA基本」「BASIC言語の基礎(配列変数)」の中で、Array関数の説明に誤りがあり訂正しました。これはArray関数から返される配列の要素の最小番号がOption Baseステートメントに影響を受けないとする説明で、Excel97以降Excel2003までのVBAのヘルプには同様に明記されている件ですが、実際はOption Baseステートメントの通りに最小番号は変異します。 動作の点ではExcel97よりさらに過去のバージョンから一貫して同じなので、「ヘルプのバグ」との判断で良いと思います。本件については、「塚崎@大阪」さんよりご連絡をいただき訂正することができました。「塚崎@大阪」さん、ありがとうございました。
「VBA応用」「ユーザーフォームで郵便番号住所変換」を変更しました。 生成するデータベースの文字列項目に無駄な空白が埋め込まれていてファイルサイズが大きくかったのですが、項目のデータ型を変更することで約1/6にすることができました。本件については、「佐藤 豊」さんよりご連絡をいただき訂正することができました。「佐藤 豊」さん、ありがとうございました。
「VBA応用」「2つのウィンドウを同期を取ってスクロールさせる。」に、Excel2003の「比較」機能の説明を追加しました。 この機能は、Excel2003以降に限定されますが、以前からこのページで説明していた「同期」とほぼ同様の機能をマクロなしにツールバーからの操作だけで実現でき、しかもシート間、ブック間でも使えるというものです。
「基本操作」「分類ごとに集計がしたい。」に、Excel2003の「リスト」機能の説明を追加しました。 この機能は、Excel2003以降に限定されますが、フィルタ抽出操作に連動した「集計」行を自動追加してくれる処理です。
2006/05/28 「ダウンロード」「パスワード自動生成機能」を追加しました。これは「パスワード」算出のサンプルと同用途の組み込み用モジュールですが、単独の利用も可能なのでネット上での「パスワード」を定期的に変更するような場合にも利用できると思います。
2006/05/08 おかげさまで、トップページのアクセス数が100万件を超えました。
ほとんどのご来訪者は検索サイトから目的のページに直接入るので、そのまま戻ってしまうとカウントされません。 総ページビューは50~60万件/月なので、かなりの方はこのパターンだと思います。 その中でもトップページのカウンタが100万件にまで届いたのは、「お気に入り」などに登録してもらって繰り返しご来訪いただいている方々のおかげだと思っています。
2006/05/07 「埼玉県川口市」を新設しました。管理人が在住している「埼玉県川口市」の紹介ページです。
2006/04/16 「VBA応用」「営業日数の計算」と、「計算式」「営業日数の計算(ユーザー定義関数)」を更新しました。
日数経過後の「営業日」を判定する関数を追加しました。日数にはマイナスも入力できるので起算日から以前の営業日の算出にも使えます。
「ダウンロード」MDB生成/テーブル定義取得ツール」を変更/機能追加しました。 内容は、テーブル作成で「オートナンバー型」が正しく作成できていない件の修正と、既存データベースにテーブルだけを追加する機能のプロシージャを追加しました。
「ダウンロード」「フォルダの参照」Optionの指定値がネットワーク上のフォルダの初期選択を行なうのに問題があるとの指摘があり変更しました。
2006/02/19に追加したADOExcelワークシートに接続」の画像からExcelブックを呼び出すリンクに誤りがありました(Webサーバは大文字小文字が違うだけでアウトです!)。コードは提示しているのでこれまでご指摘はなかったのですが、佐藤豊さんからご指摘のメールをいただき本件を修正することがができました。佐藤豊さん、ありがとうございました。 その他にも不都合な点を見つけた方がおられましたら、お知らせいただけると幸いです。
2006/04/09 「VBA応用」「営業日数の計算」と、「計算式」「営業日数の計算(ユーザー定義関数)」を更新しました。
マクロ部分を1モジュールにまとめたことと、日付ごとにその日が「営業日」かどうかを判定する関数を追加しました。
また、「計算式」「営業日数の計算(ユーザー定義関数)」の方にはモジュールのインポート方法の簡単な説明を追加してあります。
2006/03/26 「パソコン環境」というジャンルを新設しました。何が「良い」「悪い」ということを書くつもりはありませんが、使っているもの、使っていたものについてのレポートです。 自分の使ったものの話なので、別に「新製品レポート」でもありませんが、ひょっとしたら皆さんが購入を検討されている分野のものがあって参考になるようなものがあるかも知れません。
2006/03/19 「VBA応用」「営業日数の計算」を追加しました。
これは、「ユーザー定義関数」として紹介しているため、その利用部分を「計算式」「営業日数の計算(ユーザー定義関数)」として追加しました。
2006/03/05 「VBA応用」CDOでメール送信」に「文字コード」の指定機能と改行コード修正機能を組み込みました。これにより「本文を改行すると送信できない場合の対処方法」の説明は撤去しました。
さらに、「Replace関数」「Split関数」が使われているため、Excel97でも動くように「代替関数」を追加しました。 これらの「代替関数」は、Excel2000以降に標準で搭載されている「Replace関数」「Split関数」を完全に補完するものではありませんが、 省略不可の引数分は同等の機能になっているもので条件付きコンパイルでExcel2000以降でも記述変更なく利用できるので、他のマクロにも応用できるかも知れません。
2006/02/26 「ダウンロード」MDBデータ取得ツール」を追加しました。
これはMDBに対して、直接SQL文を投げかけてその結果を表示する汎用ツールです。 ODBCデータセットなどを使ってMDBに限定しない方法も可能だったのですが、他のデータベース個々の事情は知らないのでMDBに限定した記述にしてあります。
2006/02/19 「VBA応用」ADOExcelワークシートに接続」を追加しました。
2006/02/12 「VBA応用」CDOでメール送信」「本文を改行すると送信できない場合の対処方法」の説明を追加しました。
「配布の問題」「アドイン動作のサンプル」で同一ブックを複数回開くとカスタムツールバーの作成工程で無限ループ状態になってしまう件に対応しました。
2006/02/05 おかげさまで、トップページのアクセス数が90万件を超えました。5月には100万件になりそうです。
「基本操作」「一覧表に[連番]を表示したい。」を追加しました。
内容の大半で計算式が出てくるのですが、計算式が主目的ではないですし、この「機能」を探される方はこのような応用方法を最初から計算式として探すことはないだろうと、 「基本操作」に収容させることにしています。
2006/01/22 「VBA応用」「絶対パス指定と相対パス指定」を追加しました。
初心者の方に多い「カレントフォルダ」の誤解の説明から始まって、「相対パス」が「絶対パス」ではどこを指しているのかの確認方法などを説明しています。
「VBA応用」CDOでメール送信」HTMLメール」を送る場合の変更方法の説明を追加しました。
2006/01/15 「VBA応用」FTPでホストのファイル一覧を作成する。」を追加しました。
私は、このサイトの更新で「FTP」は利用しますが、「FTP」自体は古くからあるファイル転送を目的とした制御方式の一つです。 Windows環境下のネットワークでは「プロトコル」などは意識せずにエクスプローラ上で誰でも自在にコンピュータ間でのファイルのやりとりを行ないますが、 異機種間ではこのようには行かず、現在でも「FTP」は有効利用されています。
今回は、「メール送信」でも利用したフリーのコンポーネントであるBASP21を利用してみました。
2006/01/08 「ダウンロード」「カレンダー入力用フォーム」を追加しました。
昨年末、「VBA応用」「カレンダーによる日付入力」を追加したばかりですが、 祝日名表示などの機能追加ができたので、「VBA応用」の方はコード説明に残して「ダウンロード」に追加し、 マクロ初心者の方にも組み込めるように説明を追加しています。
2006/01/04 「ダウンロード」「フォルダ一覧」が、なんと、MOUG(MicrosoftOfficeUsersGroup)主催のBest フリーソフト大賞 2005に選ばれました!!