VBA自作クラス
ウインドウのクラス名を返すFunction WinAPIの勉強中。 コチラの本に、アプリケーション別のクラス名が掲載されていたのだが、Internet Explorerのクラス名が載っていなかったので、アプリケーションのクラス名を返すFunctionを作ってみた。 コードを書いて…
WindowsAPIクラスの修正 『大村あつしのExcel VBA Win64/32 API プログラミング』 二年半程前に購入したものの、「だめだ、今の私では歯が立たない……」と諦めていた コチラの本、『大村あつしのExcel VBA Win64/32 API プログラミング』。 「今ならそこそこ…
指定したフォルダからファイル名を取得するクラス Twitterではけたさんがおっしゃっていたものを私も作ってみた。 あまりうまくないかも知れないけれど……。 指定フォルダからファイル名を取得するクラス オブジェクト名は「TargetFiles」とした。 リスト1 …
テキストボックス内のハイライト部分をそれぞれ配列に格納して、Collectionにする 意味の取りづらいタイトルですまない。 テキストボックス内のハイライト部分(Rangeオブジェクト)をテキストボックスごとに配列にして、それぞれの配列をCollectionにぶち込…
クラスにしてしまったのでぶちまけておく 職場のクソWebアプリの攻略の過程で色んなメソッドを作ったので、無駄にクラス化しておいた。 思いつきを行き当たりばったりで形にしただけなので、ツッコミどころはたくさんあると思う。 複数インスタンスを作るシ…
プリンタ名を取得するProperty 前回 akashi-keirin.hatenablog.com の続き。 前回までに作成したInstalledPrinterクラスにPropertyを追加する。 追加するPropertyは、printerName(ByVal printerIndex As Long)とし、引数にインデックスを渡したら、該当する…
VirtualTableクラス続報 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com 指定した条件を満たす配列を返すメソッド 任意の列の値が指定した値であるレコードだけを格納した配列を返すメソッドを作ってみた。 ひとまずコードを載っけておく。 get…
VirtualTableクラスは今 VirtualTableクラスの現状 VLOOKUPにせよ、INDEX & MATCHの合わせ技にせよ、セルに数式がずらずらと書き込まれているというのはちょっとイヤなので、表引きは極力VBAでやっている。 んで、VLOOKUPみたいな働きを持ったクラスを作った…
Iteratorクラスを作ってみた デザインパターンをまじめに勉強したくなったので、遊び半分でコーディング。 Iteratorクラス オブジェクト名は「Iterator」です。 リスト1ー1 クラスモジュール 宣言セクション Option Explicit Private Const ERROR_NOT_INITIAL…
部屋割りマクロ クラスを使ってみる 部屋を表すクラスを作って、部屋の数だけインスタンスを生成し、部屋が人間を取り合うようなイメージでコーディングしてみた。 Roomクラス クラスモジュールを挿入し、オブジェクト名は「Room」とした。 リスト1 クラス…
表を配列化して保持するクラス 前回記事へのコメント Edgeがバグっているせいなのか、なぜかブログにコメントが返せない状態です。 akashi-keirin.hatenablog.com コチラに、id:imihito さん、thom (id:t-hom) さんのお二方からコメントをいただいているにも…
VBAの「コンストラクタに引数を渡せない」問題 VBAでクラスモジュールを使い始めたときに必ずぶち当たるのが、 なんでコンストラクタに引数が渡せねえんだよ! この金髪豚野郎!!!!!!!!! 問題だろう。(個人の感想です) これは本当に不便な話で、「VBAのイマ…
メール自動作成ツール~Outlookへの対応 このとき akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com 作成したメール自動作成ツール、LotusNotes、Thunderbirdの両方に対応していて非常に便利なので、重宝している。 で、せっかくなのでOutlookに…
乱数を格納した配列を保持するクラス クラスへの移行 前回の akashi-keirin.hatenablog.com で、乱数を格納した配列を作るFunctionを作った。 実は、追記のところで、型指定でVariantを使うブサイクさ問題は解決ずみなんだが、乗りかかった船なのでやってお…
子ブックを生み出すクラス 元のブックを開いたままでコピーを作成する 元のブックのシートにデータを入力しては別名で保存して、同じ様式でデータの異なるたくさんのブックを作りたいというときがある。 Worksheetオブジェクトの場合なら、Copyメソッドがあ…
ワークシートを新規Excelブックとして出力するクラス ワークシートを新規Excekブックとして出力する 名簿なんかの一覧表をマクロで自動作成して、相手方にPDFで提供すると、しばしば 加工したいからExcelのままでくれ! と言われることがよくある。 大量(っ…
フォルダ作成クラス 任意のディレクトリに任意の名前のフォルダを作る 新規フォルダを作るときは、MkDir関数を使う。 まあ、それはそれでいいのだが、何かこう、作りっぱなし感があって気持ち悪い。 せっかくなので、FileSystemObjectの練習も兼ねて、 フォ…
クラスのプロパティに二次元配列を持たせてみる 表の内容をそのまま配列にする 「表」ということは、二次元配列と同じ形なんである。 そこで、 クラスのプロパティを二次元配列にする ことを試みた。 クラスの改造 まず、前回記事のリスト1のうち、フィール…
Wordの表の中の文字列を取得するクラス WordTableOperatorクラス クラスモジュールを挿入して、オブジェクト名を「WordTableOperator」にした。 とりあえず、次のようなコードを書いた。 リスト1 Option Explicit 'フィールド' Private wordApp_ As Word.Ap…
データ抽出用のクラス AdvancedFilterメソッドを気軽に使う あんまり役に立たないと思うけど、ちょっと作ってみた。 準備として、 データ抽出元のシートを用意。 こんなふうに抽出条件設定用の表を作り、 セル範囲に名前を付けておく。 ちなみに、抽出条件は…
列符号取得が可能なRangeオブジェクトのラッパークラス きっかけ 「列番号はColumプロパティで簡単に取得できるのに、列符号って取り出しにくいよなー」と思って、コチラを参考にXDF列までに対応した自作関数を作ったのがそもそもの始まり。 他のよく使う機…
WordドキュメントをPDFに変換して保存する 仕様 Wordドキュメント そのWordドキュメントがあるフォルダパス ファイル名 以上3つをフィールドとして持つ。 メソッドは今のところ一つだけ。 WordドキュメントをPDFにして指定のフォルダに保存する 元のWordド…
エラーキャッチをするクラスを作る そんなことをする意味があるのかどうかはともかく、エラー時にメッセージを表示させるという処理もよく使うので、作ってみた。まあ、何でもかんでもクラスを作っていったら、そのうちコツがつかめるだろうということで勘弁…
きっかけ 写しハンコつきPDFを作るマクロのコードを見直していると、メインの「写しPDFを作るクラス」が結構複雑なクラスになっていることが分かった。ざっと挙げると、 元のWordドキュメントに画像があるかどうかチェック ハンコ用の画像ファイルが実在する…
Thunderbirdでメールを自動作成するメソッドを作成。 まずはコードをご覧に入れよう。 あ、その前に、標準モジュールの宣言セクションに、 Public Const THUNDERBIRD_PATH As String = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" こいつ…
ファイルを選択させるやつも作ってみた。 例によってクラスモジュールを挿入。オブジェクト名はFilePickerにした。 クラスモジュールのコードは下記の通り。 Option Explicit 'フィールド Private gotFileFullPath_ As String Private isCancelled_ As Boole…
LotusNotesのメールをExcelVBAで自動作成するときは、そもそも自分のアカウントでNotesに接続していないといけない。 「でも、他のアプリケーションが起動しているかどうかなんて、どうやって判定できるんだろ?」とggっていてわりかしあっさりとたどり着い…
twitterのフォロワーさんからのアドヴァイス。 曰く、よく使う機能はクラスにしといた方がいいぜと。なるほど。今まで、よく使う処理をSubやFunctionにまとめて一つのモジュールに集めておいて、ライブラリ的に使っていたけど、結局、 どこに何を書いていた…