My Personal.xls:2

私のPersonal.xlsへようこそ!

このページでは、ちょっと変わったマクロを取り上げています。中には実用的なものもあるかな?(笑)

以下のマクロはHTML文書ではなくDOSのテキストファイルにあります。環境によっては正しく表示できないかもしれません。ごめんなさい。また、基本的にExcel95以外の環境では動作しません。間違いもあるかもしれません。

これらのマクロは自由に使用、改変することができます。ただし、原文のままでの複製物の配布、転載は禁止します。原文のままでのアプリケーションへの組み込みは、以下の条件を充たせば、許可いたします。

1. マクロコードの機能の直接的な利用を目的としていること。
2. アプリケーションの配布先が特定できること。


ファイル

フォルダ名を取得する関数(GetOpenFilename)

GetOpenFilename では、ファイルが 1 つもないフォルダを選択することができません。そこで、ちょっと不自然な操作なのですが、キャンセルボタンでも選択できるようにしてみました。

HTML ソースファイルを開くマクロ(Excel97)

Excel97 では HTML ファイルをテキストデータのままで開くことができなくなってしまいました。しょうがないので VBA のファイル入出力機能で 1 行ずつ読み込むようにしてみました。

テキストファイルを複数のファイルに分割するマクロ

VBAのファイル入出力を使ってテキストファイルを65536行毎に分割します。

複数のテキストファイルを1つのファイルへコピーするマクロ

VBAのファイル入出力を使ってテキストファイルを1つにまとめます。

ファイルのクローズを待つ関数

Openステートメントでファイルのロックを試します。

同ー形式シートを持つ複数ブックを集計するサンプルマクロ

「形式を選択して貼り付け」の「加算」を使って高速に集計します。[データ]-[統合]でも同様の処理は可能です。

フォルダ内のXLSファイルの一覧を作成するマクロ

任意のフォルダの任意のファイル名の一覧をワークシートに作成するサンプルです。Windows用です。

表をテキストに変換するマクロ

ワークシートの表をテキストデータに変換します。パソコン通信などで表のサンプルを書くときに使います。

セル範囲からHTMLのTableを作成するマクロ(超簡易版)

フォントの指定もありません。これだけ低機能なものも珍しい?(笑)

ワークシートをCSV形式("付き)で保存するマクロ

この手のマクロもいろいろありますが、これは1行目のデータの表示形式を使って各セル値を編集します。

CSVファイルデータをセル範囲へコピーするマクロ

CSVファイルを開いて、任意のセル位置へコピーします。

アクティブセルにファイルパスを入力するマクロ

ダイアログボックスで選択したファイルのフルパスを、アクティブセルやモジュールシートへ入力するマクロです。

アクティブブックのあるフォルダを開くマクロ

ShellExecute APIを使用して、フォルダのウィンドウを開きます。

ブックをまとめて開くマクロ

以前、作業状態ファイルの不都合の話があったときに作ったものです。使ったことはありません。

HTMLファイルのインデックスページを作成するマクロ

サブフォルダの中も検索して、HTMLファイルの一覧のページを作成します。

NIFTY Manager for Windows 3.1 の会議室キャビネットをログファイルにエクスポートするマクロ

以前、このソフトを使っていました。最初、VBAで書きましたが、予想通り遅いので、あとでDelphiで書き直しました。


Windows API

選択オブジェクトの画像をPPMファイルへ保存するマクロ

PPM のバイナリ形式で保存します。PPM は UNIX などで使われるシンプルなビットマップ形式です… Windows の PPM 関係のツールでしか動作確認していませんが。都合により、メッセージが英語です。

Excel プロセスの優先順位を上げるマクロ

マクロで長い時間のかかる処理をするときに、プロセスの優先順位を上げておくと性能が向上することがあるそうです。

AVI ファイルを再生するサンプルマクロ

mciSendString を使って AVI ファイルを再生します。一応、Close を忘れずに。

MAPISendMail を利用するサンプルマクロ

SendMail メソッドではメッセージ本文を入れることができません。RoutingSlip オブジェクトを使えば可能です。MAPI を直接利用するのも、1 つの方法です。

ステータスバーを右クリックするマクロ

シート見出しのスクロールボタンとツールバーも右クリックしてみました。

フォント名一覧を作成するマクロ(Excel95専用)

ダイアログボックスの代わりにツールバーコントロールから取得してみました。Excel97ではVBAのオブジェクトになっているので、WindowsAPIを使う必要はありません。

カレントディレクトリを変更するマクロ

ネットワークの共有名の指定がChDir関数ではできないのだそうです。

環境変数を取得する関数

ところで環境変数の最大サイズはいくつなんでしょう? アプリのセットアップ等で領域全体のサイズはよく設定しましたよね。

画面解像度を変更するサンプルマクロ

ExcelのマクロでOSの再起動まで行うのは不向きかなあと思い、解像度の変更だけにしました。CDS_TESTと0の違いとか、あまり良くわかっていませんが。

終了待ちをするShell関数

Excel VBA FAQにも同様のコードがあります。タイムアウトとユーザ操作禁止の機能を付けました。

複数のファイルを1つのファイルへコピーするマクロ

_lread() _lwrite()を使ってみました。

フォルダ名を取得する関数(SHBrowseForFolder)

おなじみのフォルダ選択ダイアログボックスです。ダイアログシートやユーザーフォームから実行する場合はウィンドウハンドルの指定を変更します。

ショートカットを作成するサンプルマクロ

WindowsAPIを使っているのは特殊フォルダのパスの取得の部分で、ショートカットの作成には使用していません。どうやっているかというと・・・DDEとファイルコピー。(笑)

クリップボードから Picture オブジェクトを作成するクラス CClipPicture (Excel97)

クリップボードのビットマップまたはメタファイルから Picture オブジェクトを作成するクラスです。

オブジェクトの図のコピーを、Imageコントロールに設定するマクロ(Excel97)

オートシェイプなどをImageコントロールにコピー貼り付けします。この上の CClipPicture クラスを使います。Picture プロパティに Ctrl-v をするのと同じですが、VBA で実行する方法を知らないもので…

クリップボードの拡張メタファイルから Picture オブジェクトを作成するクラス CClipMeta(Excel97)

グラフを UserForm に動的に表示するために作りました。ファイルに保存して読み込んでも良いですし、ダイアログシートを使って良ければその方が簡単ですけどね。

メタファイルの削除をしないように修正しました。Picture オブジェクトが削除するようですので。

選択オブジェクトの画像をWMFファイルへ保存するマクロ

画像ファイルの作成をするわけではありません。クリップボードの内容をファイルへ出力するだけです。WMFファイルにもいくつかフォーマットがありますが、ファイルヘッダを付加したタイプを作成します。Excel95でもExcel97でもワークシートに挿入できます。

選択オブジェクトの画像をビットマップファイルへ保存するマクロ

画像ファイルの作成をするわけではありません。クリップボードの内容をファイルへ出力するだけです。24bitフルカラーの画像は単純に8bitに変換します。

ビットマップファイルを一時的に表示するマクロ

スプラッシュウィンドウのような感じで画面中央に一時的にビットマップを表示します。

配列の次元を取得する関数

Delphi2のVariant型のヘルプを読んで作りました。

クリップボードへのテキストデータ入出力を行う関数(Excel95)

Excel97ではMSFormsのDataObjectオブジェクトを使ってできます。この関数では、ちょっとしつこいくらいにエラーチェックをしています。ところで、マイクロソフトサポート情報にAccess用のサンプルがありますが、あのコードはかなりわけがわからないものです。サポート情報の品質を示す好例?

クリップボードへのテキストデータ入出力を行う関数(Excel5.0)

Windows3.1用です。Windows95でしかテストしていません。(笑)

お待ち下さいダイアログボックスのサンプルマクロ

書いてはみたものの使わないコードの良い例です。(苦笑) ダイアログボックスの中央表示や再描画のサンプルです。中断機能付き版も書いてみましたが、これも使いません・・・

お待ち下さいダイアログボックスのサンプルマクロ

ダイアログシートもユーザーフォームも使わずにやってみました。ちょっと手抜き。


その他

プレビューから現在のページを印刷する関数(Access97専用)

Access97専用です。レポートやフォームのプレビューウィンドウのページ番号を Windows API を使って取得し、そのページだけ印刷します。強引な方法ですので、不具合はあるかもしれません。

アクティブブックの参照設定を解除するマクロ(Excel97)

ワークシートに ActiveX コントロールを作成すると、参照設定ダイアログボックスで設定を解除できなくなってしまうようなので、書いてみました。(苦笑)

本当に使用中のものは解除できません。VBA のコード中だけで使用しているものは解除できるようですが、当然、コードは動作しなくなります。不要なものだけを解除するようにご注意ください。

ラベルで分数を表示するサンプルマクロ(Excel97)

また妙なものを・・・という感じでしょうか。(笑)

変数名を置換するマクロ(Excel5.0/95専用)

モジュールをテキストファイルへ出力して、そのファイルを対象に置換を行って、また読み込みます。これは本当にExcel5.0/95専用です。期待通りの結果が得られるかどうかわかりませんので、必ずバックアップを取っておいてください。

ファイルを開きモジュールをチェックするマクロ

ファイルにマクロウィルスが含まれていないかチェックするマクロです。Excel5.0/95用です。

[開く]メニューをカスタマイズするマクロ

[ファイル]-[開く]を独自マクロに置き換えます。Excel5.0/95用です。

文字列配列の作成と検索を行うマクロ

重複がなく、昇順に並ぶ配列を作成することができます。少量データ向きです。

モジュールでインデントとコメントを挿入削除するマクロ2(Excel95)

SendKeysとWindowsAPIを使っています。範囲が広いとちょっと遅いです。あると、つい使ってしまいます。(笑)

UserFormのコントロールの境界を可変にするサンプルマクロ(Excel97)

Delphi1が出た頃、こういうサンプルコードがありました。UserFormを自動作成している部分の方が面白いかも。コードの入力はちょっと苦しい。(笑)

ステータスバーに処理中のメッセージを表示するサンプルマクロ

手軽なのでよく使う方法です。「n行おきに選択するマクロ」でもこの方法を使っています。

プロシージャの一覧を作成するマクロ

モジュールシートをテキストファイルへ保存して、それを処理します。

組み込みダイアログ一覧を作成するマクロ

Excelを2つ起動して、SendKeysで処理します。(こんな処理は、ばかばかしいものかと思いきや、実際に仕事で使って成果をあげることもあるようです。)所用時間は約10分。君子危うきに近寄らず。(笑)

あみだくじマクロ

罫線を使ったあみだくじです。

Excelの怪談

バグ再現コードはたくさんありますが、その中でも罪の少ないものです。でも、ハングアップしても知りません・・・


[戻る]