=========================================================================== 【ソ フ ト名】GetFileList.xlt Ver.1.31 【登 録 名】GetFLst_xlt130.lzh 【著作権 者】Yamag(receive.yamag@gmail.com) 【開発 言語】MS Excel2000 【対応 環境】Windows 98/2000/XP 【動作 確認】MS Excel97/2000 【必要ソフト】MS Excel97 以上 解凍処理用として LZH 形式の書庫ファイルを解凍できるツール 【掲 載 日】2005.03.07 【種 別】フリーソフト 【転載 条件】自由。事後にでも著作権者までご連絡をいただければ幸いです。 =========================================================================== 【ソフト紹介】 ・MS Word VBA プログラム GetFileList.dot の Excel 版で、ダイアログを表示して ファイル名を取得しリストボックスに格納する、という同じ動きをします。 ・「Visual Basic for Application というプログラミング言語を採用することによっ て、1つの Office 製品の VBA をマスターすることによって他の Office 製品のマ クロ開発を容易かつ統一的にできるようにするとともに、Excel のマクロから Word を制御するといったことも可能にする。」というのが Microsoft の狙いらしいので すが、実際には各アプリごとに独自のオブジェクトがあり、それらについての理解が ないと実用的な VBA アプリを開発することは困難です。 しかも、Excel VBA にあるメソッドが Word VBA には無かったり、あったとしても引 数の指定方法が違うといった微妙な仕様の差異があるため、逆に Excel VBA 開発経 験がアダになるといったこともしばしばです。 そこで、MS Word VBA と MS Excel VBA の共通点と差異を実体験していただこうと、 このサンプルマクロを用意しました。 ・Windows API を利用するための「仕掛け」やファイルリストの格納方法については、 MS Word 版のものをそっくりインポートして使っていますが、組み込みダイアログを 使用する部分では、それぞれ独自のコードになっています。 ソースコードのコメントを参照してください。 ・ご質問・BUG レポートなどは receive.yamag@gmail.com までお願いします。 ただし、作者は、このプログラムを使ったことによる一切のトラブルについて責任 は負いませんし、BUG の修正や機能追加、質問への回答などについても義務は負い ません。 ■著作権について ・GetFileList.xlt に関する著作権は Yamag(receive.yamag@gmail.com) にあります。 このプログラムを作成するにあたって、多くの方のご協力をいただきました。 それに対するお礼の意味も込めて、オープンソースという形で公開し、Excel VBA で の開発効率向上に寄与し、また、より多くの MS Excel ユーザーの方々の作業効率 アップに貢献できればとおもいます。 この趣旨にぜひともご賛同いただき、GetFileList.xlt のソースコードを流用(一部改 変も含む)して作成されたプログラムについても、可能な限りオープンソース・ソフト ウェアとして無償で公開していただきたいとおもいます。 ・なお、一部に、GetFileList.xlt のソースコードを流用(一部改変も含む)して作成さ れたプログラム自体をシェアウェアとして公開したり、もしくはこのプログラムのソ ースコードを流用して作成されたプログラムを独占的に使用する(非公開とし、他で の使用について著作権侵害を主張する)ことで、経済的利益を得ようとする方々もい らっしゃるようでが、このような行為は、残念ながら、私が GetFileList.xlt のソ ースコードを公開しようとした本来の意図とは、大きくかけ離れたものといわざるを 得ません。 したがって、GetFileList.xlt のソースコードを流用して作成されたプログラム自体、 もしくはそのプログラムを独占的に使用することで経済的利益を得ようとする場合は、 事前に GetFileList.xlt の著作権者までご連絡いただき、GetFileList.dot の流用 についての許諾を得るよう、お願いいたします。 ただし、許諾についてはこれを「拒否」もしくは「有償」とさせていただく場合もあ りますのでご了承ください。 ・許諾を得ないまま、GetFileList.xlt のソースコードを流用して作成されたプログラ ム自体、もしくはそのプログラムを独占的に使用することで経済的利益を得ようとす るような行為は、 Yamag(receive.yamag@gmail.com) の著作権を侵害することになり ますのでご注意ください。 ■インストール ・ダウンロードした書庫ファイルを適当なディレクトリに解凍してください。 ・GetFileList.xlt を MS Excel で読み込み、「ツール|マクロ|マクロ」で 「start」を選択して実行してください。 ■制限事項など ・Windows 2000 上の MS Excel97 で、「ディレクトリ単位」モードの「ファイル名順 に処理する(VBA)」を指定して動作させると「エラー 5」が発生する場合があります。 ■参考資料等 ・Excel 2000 VBA 実践プログラミング 著 者:田中 亨 出版社:秀和システム コード:ISBN4-87966-917-2 ・Win32 API オフィシャルリファレンス 編 者:アスキー書籍編集部 監 修:マイクロソフト株式会社 出版社:アスキー コード:ISBN4-7561-1106-8 ・Visual Basic プログラミング 1001 TIPS 著 者:Kris Jamsa Ph.D. Lars Klander 監 修:秋月 巌 出版社:オーム社 コード:ISBN4-274-06247-3 ・@nifty マイクロソフト・ユーザーズ・フォーラム(nifty:FMSOFFC)、Excel 会議室 「お宝リスト」 ・VBA でのプログラミング経験が浅かった私の質問に親切な回答を寄せていただいた @nifty マイクロソフト・ユーザーズ・フォーラム(nifty:FMSOFFC)、Excel 会議室 および Word 会議室のメンバーの方々に、多謝m(__)m ■変更履歴 2005.03.07(Ver.131) ・デフォルトをファイル単位モードに変更。 ・ファイル単位での動作について MainForm の UseGetFileNameOpBtn の Caption に コメントを追加。 2005.02.21(Ver.130) 基本部分を FileListForm.dot に合わせた。 ・Initialize.bas から Win32API 使用のための各種定義と MainForm起動以外を別モ ジュール(GetFileName.bas)へ移動 ・FileListForm.frm から実際にファイルリストを取得するコード部分を削除し、 GetFileName.bas へ移動。 ・GetFileName.bas 内の関数の引数に使用している変数名を他のプロジェクトと同じ になるように変更。 ・GetFileName.bas 内の SelectFilefromDirプロシージャと SelectFile(Win32 OpenDialogを表示する)プロシージャに取得したファイルリストの格納先指定引数 (ListBox名)を追加 ・GetFileName.bas 内の SelectFile(Win32 OpenDialogを表示する)プロシージャに MultiSelect フラグ引数を追加。 ・上記変更に伴い、MainForm 側のプロシージャ呼び出し部分など、若干の修正。 2001.08.01 Ver.1.10 ・FileListForm.frm に ExtractFilePath(FileName As String) As String ファイル名(パス名)からディレクトリ名(\を含む)部分を取り出す ExtractFileName(PathName As String) As String パス名からファイル名(拡張子含む)を取り出す ExtractFileBase(FileName As String) As String ファイルのベースネーム部分を取り出す ExtractFileExtn(FileName As String) As String ファイル名から拡張子部分(.を含む)を取り出す の4つの関数を追加。 ・上記に伴い Initialize.bas 内の ExtractFileExt(FileName As String) As String を削除した。 2001.07.17 Ver.1.02 ・組み込みダイアログをキャンセル場合への対処。 その他細かい BUG IFX。 2001.07.12 Ver.1.00 ・最初のバージョン