VBA自作クラス

Worksheetクラスを継承したクラスを作る(7)

Worksheetクラスを継承したクラスを作る(7) ここまでの経緯はコチラからどうぞ。 Moveメソッドのオーバーライドw いよいよMoveメソッドにまでたどり着いた。思えば遠くへ来たもんだ。 もともとSub、すなわち返り値なしのメソッドだが、Copyメソッド同様、移…

Worksheetクラスを継承したクラスを作る(6)

Worksheetクラスを継承したクラスを作る(6) 地味~に作業を続けています。 これまでの栄光の軌跡は、コチラをどうぞ。 ExportAsFixedFormatメソッドの実装時に小ハマり ついにExportAsFixedFormatまでたどりついた。 オブジェクト ブラウザーに、 Sub Export…

Worksheetクラスを継承したクラスを作る(5)

Worksheetクラスを継承したクラスを作る(5) 過去記事はコチラから。 おなじみ、PoweredSheetクラスに、Cellsプロパティとか、Columnsプロパティを実装するのがむつかしいなーと思っていたのだが、 akashi-keirin.hatenablog.com コチラへのことりちゅん (id:…

Worksheetクラスを継承したクラスを作る(4)

Worksheetクラスを継承したクラスを作る(4) すでに「継承」というのは詐欺同然の題名である。 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com 懲りずに続ける。 Cellsプロパティの実装 実は、数々の挫折にもめげ…

Worksheetクラスを継承したクラスを作る(3)

Worksheetクラスを継承したクラスを作る(3) akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com つづき。 実は、頓挫した理由はまだまだある。 Worksheet型変数(引数)にそのまま突っ込めない問題 考えてみたら当り前のことで、今回のPoweredSheet…

Worksheetクラスを継承したクラスを作る(2)

Worksheetクラスを継承したクラスを作る(2) 久しぶりに akashi-keirin.hatenablog.com の続き。決して忘れていたわけではありませぬ。 いきなり頓挫 実は、 いきなり頓挫 していたのである。 これでおわかりだろうか。 なんと、基本中の基本メソッドSelectが…

VBAでwavを鳴らしたら珍現象が起きた話

VBAでwavを鳴らしたらち~んw珍現象が起きた 解決方法を知っている人がいたら、教えろ教えてください。 KitchenTimerクラス 前に、 akashi-keirin.hatenablog.com こういうものを作ったら、職場で割とウケたので、「残り時間を表示するカウントダウンタイマ…

Worksheetクラスを継承したクラスを作る(1)

Worksheetクラスを継承したクラスを作る 超絶アホ企画。 少しオブジェクト指向をかじったVBAerなら、VBAのクラスモジュールに「継承」がないことは当然知っているだろう。 だから、あくまでも「擬似継承」である。 っていうか、ほとんど嘘である。 擬似継承…

TextFileクラスの改良

TextFileクラスの改良 「改良」なのかどうかはわからんが。 ちなみに、元祖TextFileクラスについては、 akashi-keirin.hatenablog.com コチラをどうぞ。 改良後のTextFileクラス リスト1 クラスモジュール 'オブジェクト名はTextFile' Option Explicit 'Con…

テキストファイルの内容を保持するクラス

テキストファイルの内容を保持するクラス 処理に必要な値の中で、〈ほぼ静的なんだけどちょっと動的な値〉、つまり、滅多に変更することはないのだけれど、たまに変更が生ずるような値があると、実にめんどくさい。 これがExcelの場合だと、設定値書き込み用…

Personsクラスの改良

Personsクラスの改良 前回 akashi-keirin.hatenablog.com のPersonsクラスをちょこっとだけ改良する。 PersonsクラスのextractNamesメソッドは、その名のとおりPersonインスタンスのNameプロパティの値だけを指定したセルを開始位置として転記するものだった…

PersonクラスとPersonsクラス

PersonクラスとPersonsクラス TwitterのTL上で見かけたので、中途半端に乗っかってみる。 準備 Excelのブックに二つのワークシートを準備して、片や「MasterData」(オブジェクト名は「Sh01Master」)、こなた「Extracted」(オブジェクト名は「Sh02Extracte…

メール作成クラス群は今……

メール作成クラス群は今…… とりあえず、一段落したので、現状をご報告。 結果的に、 IMailCreatableインターフェース IMailSendableインターフェース LotusNotesAppクラス ThunderbirdAppクラス OutlookAppクラス Recipientクラス Senderクラス ErrorObject…

Rahmenクラスの修正

Rahmenクラスの修正 前回 akashi-keirin.hatenablog.com のRahmenクラスを修正した。 生まれ変わったRahmenクラス クラスモジュール Rahmen Option Explicit '///Attribute VB_PredeclaredId = True///' Public Enum NoodleSolidity nsYugeTooshi nsKonaOtos…

Errオブジェクトをラップしたクラス

Errオブジェクトをラップしたクラス akashi-keirin.hatenablog.com このとき、ErrObjectクラスはインスタンス化できないことを示した。 よく「Errオブジェクト」という表現も見かけるが、 Set hoge = New Err という書き方ができるわけでもない。 ただ、イミ…

自身のインスタンスを返すクラス

自分自身のインスタンスを返すクラス Attribute VB_PredeclaredId = False のとき クラスモジュールをデフォルトで使うときは、 Attribute VB_PredeclaredId = False である。 このとき、クラスのメソッドやプロパティは、インスタンス化した後でないと利用…

Outlookのメールを作成するクラスを作った

Outlookのメールを作成するクラスを作った 一気にOutlook版も行っちゃうよ! 今回も、 akashi-keirin.hatenablog.com このときのRecipientクラス、Senderクラスと併用するのが前提。 ソースコード クラスモジュール OutlookApp Option Explicit Implements I…

Thunderbirdのメールを作成するクラスを作った

Thunderbirdメール作成用のクラスを作成した 今度はThunderbird用。 前回 akashi-keirin.hatenablog.com のRecipientクラス、Senderクラスは、今回も使用する。 ソースコード クラスモジュール ThunderbirdApp Option Explicit Implements IMailCreatable Pr…

シートモジュールへのインターフェース実装の代案

シートモジュールへのインターフェース実装の代案 ごく一部の(?)VBAerの間では、「シートモジュールにインターフェースをImplementsすると派手にバグる」というのは有名だと思う。「ごく一部で有名」であるということを「有名」と称するのかどうかはとも…

インターフェース周りのち~んw現象

インターフェース周りのち~んw珍現象 前回 akashi-keirin.hatenablog.com のやり方は、別プロジェクト間でインターフェースを共有しようとしたのがそもそも間違いだったのかも知れん、と思い直して、やり方を変えてみた。 thom.hateblo.jp コチラを参考に…

乱数を作るクラスを改良した

乱数を作るクラス ランダムに並べ替える作業というのは滅多にないのだけれど、絶妙に忘れかけた頃に発生するので、 akashi-keirin.hatenablog.com このときにクラスまで作っていた。 んで、改めて見直してみたら、イマイチやなあ、と(笑)。 そんなわけで、…

自作WindowsAPIクラスにユーザが選択したフォルダのパスを返すFunctionを追加した

ユーザが選択したフォルダのパスを取得するFunction 相変わらず、WindowsAPIにハマっている。 今回も、名著『大村あつしのExcel VBA Win64/32 API プログラミング』を参考に、おなじみ、自作WindowsAPIクラスにメソッドを追加する。 akashi-keirin.hatenablo…

自作WindowsAPIクラスにウインドウのクラス名を返すFunctionを追加した

ウインドウのクラス名を返すFunction WinAPIの勉強中。 コチラの本に、アプリケーション別のクラス名が掲載されていたのだが、Internet Explorerのクラス名が載っていなかったので、アプリケーションのクラス名を返すFunctionを作ってみた。 コードを書いて…

自作WindowsAPIクラスを修正した

WindowsAPIクラスの修正 『大村あつしのExcel VBA Win64/32 API プログラミング』 二年半程前に購入したものの、「だめだ、今の私では歯が立たない……」と諦めていた コチラの本、『大村あつしのExcel VBA Win64/32 API プログラミング』。 「今ならそこそこ…

指定フォルダからファイル名を取り出すクラス

指定したフォルダからファイル名を取得するクラス Twitterではけたさんがおっしゃっていたものを私も作ってみた。 あまりうまくないかも知れないけれど……。 指定フォルダからファイル名を取得するクラス オブジェクト名は「TargetFiles」とした。 リスト1 …

テキストボックス内のハイライト部分をそれぞれ配列に格納して、Collectionにする(Word)

テキストボックス内のハイライト部分をそれぞれ配列に格納して、Collectionにする 意味の取りづらいタイトルですまない。 テキストボックス内のハイライト部分(Rangeオブジェクト)をテキストボックスごとに配列にして、それぞれの配列をCollectionにぶち込…

IE操作のためのクラスを作った

クラスにしてしまったのでぶちまけておく 職場のクソWebアプリの攻略の過程で色んなメソッドを作ったので、無駄にクラス化しておいた。 思いつきを行き当たりばったりで形にしただけなので、ツッコミどころはたくさんあると思う。 複数インスタンスを作るシ…

プリンタ名を返すProperty

プリンタ名を取得するProperty 前回 akashi-keirin.hatenablog.com の続き。 前回までに作成したInstalledPrinterクラスにPropertyを追加する。 追加するPropertyは、printerName(ByVal printerIndex As Long)とし、引数にインデックスを渡したら、該当する…

VirtualTableクラスへのメソッドの追加[getFilteredArrayメソッド]

VirtualTableクラス続報 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com 指定した条件を満たす配列を返すメソッド 任意の列の値が指定した値であるレコードだけを格納した配列を返すメソッドを作ってみた。 ひとまずコードを載っけておく。 get…

VirtualTableクラスは今

VirtualTableクラスは今 VirtualTableクラスの現状 VLOOKUPにせよ、INDEX & MATCHの合わせ技にせよ、セルに数式がずらずらと書き込まれているというのはちょっとイヤなので、表引きは極力VBAでやっている。 んで、VLOOKUPみたいな働きを持ったクラスを作った…