=========================================================================== 【ソ フ ト名】GetFileList.dot Ver.1.31 【登 録 名】GetFLst_dot130.lzh 【著作権 者】Yamag(yamag@mta.biglobe.ne.jp) 【開発 言語】MS Word 2000 【対応 環境】Windows 98/2000 【動作 確認】MS Word 98/2000 【必要ソフト】MS Word 97 以上 解凍処理用として LZH 形式の書庫ファイルを解凍できるツール 【登 録 日】2005.03.07 【種 別】フリーソフト 【転載 条件】自由。事後にでも著作権者までご連絡をいただければ幸いです。 =========================================================================== 【ソフト紹介】 ・MS Word で複数のファイルを一括してマクロ処理する場合、 1:あらかじめ Word に対象ファイルを読み込んでおいて処理する。 2:Dir()関数を使う。 などの方法が考えられます。 しかし、1: の方法では Word で一度に読み込めるファイル数に制限があるようで すし、さらにメモリやリソースの消費量が多くなって Word 自体が不安定になりが ちです。 また、2: の方法ではサブディレクトリ内までを対象にできません。 そこで、拙作の VBA プログラム(マクロ)では、Word の VBA から Windows API を 利用して複数ファイル選択可能なオープン・ダイアログやディレクトリ選択ダイア ログの表示、サブディレクトリ内も再帰的にファイル検索する機能など実装してい ます。 なお、Windows API を利用するための準備用モジュール(Initialize.bas)と、実際 にファイル名を取得し格納するためのモジュール(GetFileList.bas)および取得した ファイルリストを格納するフォーム(FileListForm.frm と .frx)は、独立性を高めた 作りを心掛けましたので、これら2つを他のプロジェクト(※)にインポートして使用 することができます。 処理の流れとしては、リストボックス FileListForm.FileList のリストボックスに 格納されたファイル名のリストを元に順次オープンして適宜処理していく、という流 れになるとおもいます。 ※Excel VBA や PowerPoint VBA でも利用可能ですが、Excel VBA には GetOpenFilename というメソッドがあるため、Initialize.bas の中で 定義している Windows API の getOpenFileName 関数と区別する必要が あります。 Excel VBA のメソッドを使用する場合は Application.GetOpenFilename としてください。 なお、引数の指定の仕方などはかなり違います。 ・ご質問・BUG レポートなどは yamag@mta.biglobe.ne.jp までお願いします。 ただし、作者は、このプログラムを使ったことによる一切のトラブルについて責任 は負いませんし、BUG の修正や機能追加、質問への回答などについても義務は負い ません。 ■著作権について ・GetFileList.dot に関する著作権は Yamag(yamag@mta.biglobe.ne.jp) にあります。 このプログラムを作成するにあたって、多くの方のご協力をいただきました。 それに対するお礼の意味も込めて、オープンソースという形で公開し、Excel に比べ て公開されている技術情報が極端に少ない Word VBA での開発効率向上に寄与し、ま た、より多くの MS Word ユーザーの方々の作業効率アップに貢献できればとおもいま す。 この趣旨にぜひともご賛同いただき、GetFileList.dot のソースコードを流用(一部改 変も含む)して作成されたプログラムについても、可能な限りオープンソース・ソフト ウェアとして無償で公開していただきたいとおもいます。 ・なお、一部に、GetFileList.dot のソースコードを流用(一部改変も含む)して作成さ れたプログラム自体をシェアウェアとして公開したり、もしくはこのプログラムのソ ースコードを流用して作成されたプログラムを独占的に使用する(非公開とし、他で の使用について著作権侵害を主張する)ことで、経済的利益を得ようとする方々もい らっしゃるようでが、このような行為は、残念ながら、私が GetFileList.dot のソ ースコードを公開しようとした本来の意図とは、大きくかけ離れたものといわざるを 得ません。 したがって、GetFileList.dot のソースコードを流用して作成されたプログラム自体、 もしくはそのプログラムを独占的に使用することで経済的利益を得ようとする場合は、 事前に GetFileList.dot の著作権者までご連絡いただき、GetFileList.dot の流用 についての許諾を得るよう、お願いいたします。 ただし、許諾についてはこれを「拒否」もしくは「有償」とさせていただく場合もあ りますのでご了承ください。 ・許諾を得ないまま、GetFileList.dot のソースコードを流用して作成されたプログラ ム自体、もしくはそのプログラムを独占的に使用することで経済的利益を得ようとす るような行為は、 Yamag(yamag@mta.biglobe.ne.jp) の著作権を侵害することになり ますのでご注意ください。 ■インストール ・ダウンロードした書庫ファイルを適当なディレクトリに解凍してください。 ・GetFileList.dot を MS Word で読み込み、ツールバー上の「ファイルリスト取得」 ボタンをクリックするとプログラム(マクロ)が実行されます。 ・Word の STARTUP ディレクトリに GetFileList.dot を置いておくと、Word 起動後 はいつでも利用可能です。 ■制限事項など ・このプログラムは MS Word95 以前のバージョンでは動きません。 ・「ファイル単位」モードを選択し「Word の組み込みダイアログを使う」を指定し た場合、表示されたファイル選択ダイアログで複数のファイルを選択するとエラー が発生してマクロが途中で止ってしまいます。 だから Windows のコモンダイアログを使うようにしたのですが... ・Windows 2000 上の MS Word 98 で、「ディレクトリ単位」モードの「ファイル 名順に処理する(VBA)」を指定して動作させると「エラー 5」が発生する場合があ ります。 ■参考資料等 ・VBA Word97/98 ハンドブック 著 者:竹内里佳・佐藤立子 出版社:技術評論社 コード:ISBN4-7741-0587-2 ・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 ・VBA でのプログラミング経験が浅かった私の質問に親切な回答を寄せていただいた @nifty マイクロソフト・ユーザーズ・フォーラム(nifty:FMSOFFC)、Excel 会議室 および Word 会議室のメンバーの方々に、多謝m(__)m ■変更履歴 2005.03.07(Ver.131) ・デフォルトをファイル単位モードに変更。 ・ファイル単位での動作について MainForm のUsewdDialogFileOpenOpBtn と UseGetFileNameOpBtn の Caption にコメントを追加。 2005.02.21(Ver.130) ・GetFileName.bas 内の SelectFilefromDirプロシージャと SelectFile(Win32 OpenDialogを表示する)プロシージャに取得したファイルリストの格納先指定引数 (ListBox名)を追加 ・GetFileName.bas 内の SelectFile(Win32 OpenDialogを表示する)プロシージャに MultiSelect フラグ引数を追加。 ・上記に伴う MainForm 側のプロシージャ呼び出し部分を修正。 2002.01.07(Ver.1.22) ・GetFileName.bas 内の関数の引数に使用している変数名を他のプロジェクトと同じ になるように変更。 2001.11.08(Ver.1.21) ・GetFileName.bas を読みやすく(?)編集。 2001.10.22(Ver.1.20) ・FileListForm.frm から実際にファイルリストを取得するコード部分を削除し、 GetFileName.bas へ移動。 ・Initialize.bas から Win32API 使用のための各種定義と MainForm起動以外を別モ ジュール(GetFileName.bas)へ移動 ・上記変更に伴う MainForm.frm の若干の修正。 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.12 Ver.1.01 ・ファイルが全く選択されていない場合には FileListForm を表示しないようにする。 その他細かい BUG FIX。 2001.07.11 Ver.1.00 ・最初のバージョン