2019-01-01から1年間の記事一覧

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

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

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

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

ErrObjectクラスはインスタンス化できない?

ErrObjectクラスはインスタンス化できない? よく、「Errオブジェクト」という言葉を目にする。 エラー処理に便利なのでよく使うのも事実。 今朝、不意に「オブジェクト? じゃあ、インスタンス化できるのか?」と思った。 やってみた テキトーにプロシージ…

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…

LotusNotesのメールを作成するクラスを作ってみた

LotusNotesのメールを作成するクラスを作ってみた 作ってみた。 しかし、LotusNotesは職場のPCに入っているので、全く実験できていない。 ちゃんと動くかどうかまるで未検証。 とりあえずコードだけぶちまけておいて、動作確認ができ次第修正していくことに…

表の位置を右にずらす(Word)

表の横位置を変更する ドキュメント内の表の横位置を変える方法が判明したので、メモ代わりに記しておく。 RowsオブジェクトのLeftIndentプロパティを使う 表の位置なので、Tableオブジェクトのプロパティを触ればよいと思っていたが、違った。 左端にある表…

Tableオブジェクトの謎挙動(Word)

Tableオブジェクトの謎挙動(Word) なんだかよくわからん現象が起こるので報告。 ドキュメントに表を挿入する ドキュメントに表を挿入するには、Document.TablesコレクションのAddメソッドを用いる。 リスト1 標準モジュール Dim targetTable As Table With …

ファイル名が重複しているときに自動ナンバリングしたファイル名を返すメソッドの改良

ファイル名が重複しているときに自動ナンバリングしたファイル名を返すメソッドの改良 akashi-keirin.hatenablog.com これの改良。 改良後のコード 前回は、イマイチFileSystemObjectを使いこなせていなかったので、FileSystemObjectの実力をもっと活用しよ…

カーソルを任意の場所に置くFunctionの改良(Word)

カーソルを任意の場所に置くFunctionの改良(Word) 似たような書類を、宛先別に大量生産するような場合に、差込印刷機能を使う場面は多いと思う。 で、差込印刷の差込レコードごとにWordドキュメントが生成されると便利(というか後々扱いやすい)なので、 ak…

拡張子のないファイル

拡張子のないファイル 前回の akashi-keirin.hatenablog.com に、ことりちゅん (id:Kotori-ChunChun) 氏からコメントをいただいた。 曰く、 実用上困ることは滅多にないですが、拡張子のないファイルも存在するので、自作された方は要注意です。 と。 なるほ…

ファイルの拡張子を取得する

ファイルの拡張子を取得する 車輪の再発明 ファイル名の拡張子を取得したくて、次のようなコードを書いた。 ちなみに、マクロを書いたブックのあるフォルダ内のTargetFilesフォルダ内に、次のようにファイルがあるものとする。 リスト1 標準モジュール Publ…

Filter関数というものがある

Filter関数というものがある こないだ、オブジェクト・ブラウザをぐりぐりやっていたら、「クラス」欄にStringsというものを発見。 ただし、オブジェクト・ブラウザ上では、「クラス」としてではなく、「モジュール」として記載されている。 Stringsを選ぶと…

マクロ無しで転記と同時に自動並べ替え(種明かし)

マクロ無しで転記と同時に自動並べ替え(種明かし) akashi-keirin.hatenablog.com の種明かし……ですが、最初に断っておきます。 怒らないでくださいよ! いや、ホントに。 おわび 実は、この画面。 一部、文字色をセルの背景と同じ(要するに、今回の場合は…

マクロ無しで転記と同時に自動並べ替え???

値の自動並べ替え??? 今日、職場で面白いアイディアに出会った。 同僚が、「日付の順番がデタラメに並んでいても、別シートに日付順に転記されるはずなのに、その機能が失われている。どうなっているのか見てほしい」と言うので、そのExcelブックを見てみ…

foobar2000の日付時刻データをDate型の値に変換する

foobar2000の日付時刻データをDate型の値に変換する Date型の値を、foobar2000独自の日付時刻文字列に変換するのは akashi-keirin.hatenablog.com で作成済み。 今度は、その逆をやってみる。 考え方 foobar2000のPlayback Statisticsでは、再生日時を18ケタ…

Enumの研究(3)

Enumの研究(3) こいつら akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com の続き。 今回はちょっと手の込んだことをする。 組み込みプロパティ名と衝突した場合のち~んw珍現象 まず、Sheet1に次のような表を作成しておく。 次に、Sheet1モジュ…

Enumの研究(2)

Enumの研究(2) 前回 akashi-keirin.hatenablog.com の続き。しつこくEnumを追究することにする。 組み込みプロパティ名との衝突 たとえば、Enum「Hoge」に「Name」という要素を持たせてみる。 リスト1 標準モジュール宣言セクション Public Enum Hoge Name …

Enumの研究(1)

Enumの研究(1) コードの可読性を上げる一つの方法として、 Enumを適切に使う というものがある。 ずいぶん前からEnum自体は使っていたが、最近やっと適切な使い方が定まってきたように思うので、Enumについていろいろ実験したことを書き留めておく。 Enumの…

「Any型」の追放に成功した

Any型の追放に成功した akashi-keirin.hatenablog.com これの続報。 この記事には、id:imihito さんからコメントをいただいていた。 曰く、 記事の `Call MoveMemory(lpMemory, VarPtr(strText), lngSize)` に関しては`VatPtr`を`StrPtr`にするとどうなるで…

ファイル名が重複するときに自動ナンバリングする

ファイル名が重複しているときに自動ナンバリングしたファイル名を返すメソッド 頭の体操に作ってみた。 ExportAsFixedFormatメソッドで新規ファイルを作成したときなんかに、同一名のファイルが存在したときの対策用。 たとえば、保存先に「ち~んw.pdf」…

ワークシートを任意の名前の軽量PDFにする

軽量PDFに任意のファイル名を付ける ワークシートの軽量PDF化 ExcelのワークシートをPDF化するとき、ExportAsFixedFormatメソッドを用いると、非常に軽快に動作する反面、出来上がったPDFドキュメントのサイズが異様に大きくなってしまう。 JUST PDF等のPDF…

foobar2000のPlayback Statisticsを編集するマクロ(2)

foobar2000のPlayback Statisticsのデータを編集するマクロ akashi-keirin.hatenablog.com とりあえず成果物を晒す 細かいことは後回しにして、ひとまず今回の成果物を晒しておくことにする。 バグ対策とか、操作ミス対策は(個人的に用いるツールゆえ)不十…

foobar2000のPlayback Statisticsを編集するマクロ(1)

foobar2000のPlayback Statisticsのデータを編集するマクロ えらい久しぶりに、foo_playcount.dllをアップデート(Verなんぼかわからん。2011年のヴァージョンみたい。)したら、どうも再生記録の保存方法が変わったようで、これまでの再生記録が全部リセッ…

Law型? Any型?

「Law型」、「Any」型の意味がわからない ※私が所有しているのは、「Second Edition」じゃない方です。 『VBA Developer's Handbook』に載っていた、Clipboardクラスのコードの中で、WindowsAPI関数を宣言するところがある。 その中に、意味のわからない箇所…

Property Get プロシージャを作るFunction

Property Get プロシージャを作るFunction 最近やたらPropertyを多用しているので、Propertyプロシージャを書くのが面倒になってきた。 特にProperty Getなんて同じパターンの繰り返しが多いので、Functionにしてやった。 Property Getを作るFunctionのコー…

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

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

同じ値のセルを結合する~再び~

同じ値の連続セルを結合する 年度末の後始末及び次年度の準備をしていく中で、だいぶ前 akashi-keirin.hatenablog.com で作成したメソッドに重大な欠陥があることに気付いたので、根本からやり直した。 重大な欠陥 前回のやり方は、セルを上から順にスキャン…

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

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

ThisWorkbookモジュールにインターフェースを実装することはできるのか

ThisWorkbookモジュールにインターフェースを実装することはできるのか 前回 akashi-keirin.hatenablog.com ブックのThisWorkbookモジュールにメソッドを搭載したら、まるでブックのメソッドであるかのように呼び出すことができることを示した。 では、ThisW…