VBA自作クラス

「ネオ写経」のすすめ

「ネオ写経」のすすめ 新型コロナウイルス対応で外出の自粛が求められる中、みなさまいかがお過ごしでしょうか。 ろくにテレワーク環境も整っていないのに、「とにかくテレワークだ!」的に導入されてしまった事業所も、それなりにあると思います。 個人的に…

ハイライト部分を切り替えるマクロ(Word)

ハイライト部分を切り替えるマクロ コードだけ掲載しておく。 クラスモジュールと標準モジュールを使った。 ハイライト部分を保持するクラス ハイライト部分を保持し、ハイライト部分の再取得、ハイライトのオンオフ切り替えができるようなオブジェクト。 ク…

ズンドコ節で遊ぶ

ズンドコ節で遊ぶ ノンプロ研のSlackのチャンネルに「今週のお題」というやつがある。毎週一つ、ちょっとした「お題」(〈数字をローマ数字に変換する関数を作れ〉とかそういうやつ)がランダムに出される。 今回、 「ズン」と「ドコ」をランダムで出力し、…

配列もCollectionも使わないデータ構造(Queue)

配列もCollectionも使わないデータ構造(Queue) 前回、前々回 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com のStackに続いて、Queueも作った。 コードを簡単にするために、今回もString型データ専門。 値なら何でもオッケーにしたければ、Va…

配列もCollectionも使わないデータ構造(Stack)

配列もCollectionも使わないデータ構造 久しぶりに 『VBA Developer's Handbook』を読んだ。 「Chapter 6」の「Creating Dynamic Data Structures Using Class Modules」のところに、実に面白いことが書いてあったので、やってみた。 Stackを二つのクラスモ…

UTF-8のテキストファイルを操作するクラス

UTF-8のテキストファイルを操作するクラス 作った。 何のために? foobar2000のプレイリストファイルのドライブレター部分を一括して書き換えるために。 決して仕事のためではない。 だから、全然「働き方改革」とは関係ない。許せ。 UTF8TextFileクラスのコ…

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 プログラミング』。 「今ならそこそこ…