インタフェースを用いたポリモーフィズム

インタフェースを使ったポリモーフィズム コードの微修正 akashi-keirin.hatenablog.com 前回のコードをちょっと書き換えてみた。 擬似コンストラクタのinitメソッドをまとめてみただけですが。 リスト1 インタフェース IMusicPlayer Option Explicit 'Fiel…

Wordドキュメントの表の行を削除する

Wordの表の行を削除する Wordドキュメント内の表の任意の行を削除する 差込印刷機能を使って似たような書類のWordファイルを自動的に作成するマクロをよく使う。 akashi-keirin.hatenablog.com Excelで表さえ作ってしまえば、人力でポチポチやるよりも圧倒的…

LotusNotesのメール作成・送信をフルオート化してみた

LotusNotesでメール作成→送信をフルオートにする LotusNotesでメールを送る作業が大量発生したときは、メール自動作成ツールで対応している。 akashi-keirin.hatenablog.com ただ、誤送信が怖いので、基本的にメール作成までは自動でやっても、送信自体は手…

VBAでインタフェースを使ってみた

インタフェースを用いたポリモーフィズムをやってみた 立山秀利さんが著書の中で使っていた音楽プレーヤのたとえが私にとっては一番分かりやすかったので、それをVBAでやってみる。 方針としては、 「RecordPlayer」クラス、「CDPlayer」クラス、「MP3Player…

フォルダを作成するクラス

フォルダ作成クラス 任意のディレクトリに任意の名前のフォルダを作る 新規フォルダを作るときは、MkDir関数を使う。 まあ、それはそれでいいのだが、何かこう、作りっぱなし感があって気持ち悪い。 せっかくなので、FileSystemObjectの練習も兼ねて、 フォ…

Addメソッドについて考えた

コレクションのAddメソッドの返り値 Addメソッドの返り値を追加したオブジェクトにするというアイディアを考えたやつは天才 Excelで明細みたいなのを作っていると、それぞれのシートなりブックなりをだいたいはPDF化したり、プリントアウトしたり、という使…

ワークシートをPDF化する(ExportAsFixedFormatメソッド)

ExportAsFixedFormatメソッドの三態 ExportAsFixedFormatメソッドの対象オブジェクト よそにデータを送るときに、PDF化する必要があって、WordであれExcelであれ、よくこのExportAsFixedFormatメソッドにはお世話になっている。 んで、改めて調べてみたら、E…

日付をはじめとする数字の表記の問題

日付の1桁の数字のみ全角にして表示する 変な風習 書類なんかの日付の表記(まあ、日付以外もですけど)について、ウチの職場には、 数字が1桁のときは全角、2桁のときは半角! という謎ルールがあって、これがWordやExcelを使った作業と本当に相性が悪い…

構造体の要素を並べ替える

構造体配列の要素をパラメータの値に従ってソートする なんかこう、仕事が泥沼で、長らく更新できませんでした。今も泥沼の最中なんですが、現実逃避して書いています。 さて、仕事で希望調査みたいなのをやった。まあ、データ集約するだけなら楽勝だったん…

漢字テストメーカーを作ってみた

漢字テストメーカーを作ってみた プロシージャの構成 問題データ抽出用プロシージャ Private Sub extractQuestions 乱数発生・ナンバリング用プロシージャ Private Sub setRandomNumber 抽出問題並べ替えプロシージャ Private Sub sortExtractedQuestions テ…

セル内のアンダーライン部分のみフォントを変える

文字列のうち、アンダーライン部分のフォントだけを変える ツイッターのフォロワーさんの「漢字テストの問題をランダムに作成できんかなー」みたいなツイートに反応して、どうやったらできるのか考えてみた。 傍線部分だけゴシックにしないといけない 文字列…

重複のない乱数発生のアルゴリズムを考えてみた

重複のない乱数を作る 重複のない乱数を発生させるアルゴリズムを考えてみた。まあ、ちょこっとggったらスマートなやつが見つかるとは思ったけど、自分で考えるというのが大事だと思ったのですよ。 素人丸出しのやり方なので、笑ってくれたらいいと思います…

マクロなし縛りでドロップダウンリストの項目を切り替える

マクロなし縛りでドロップダウンリスト項目を動的に切り替える 「マクロなし縛り」でExcelでの様式づくりをせざるを得なくなったので、久しぶりに関数であれこれやってみた。 ろくにワークシート関数も覚えていないのにマクロを覚えてしまったために、「欲し…

文字列の中の必要な部分にだけ書式設定をする

指定した文字の書式だけを変更する 記入見本作り 記入例を作りたかったんだが、日付の欄は、 こんな感じで、「月」と「日」と「(」、「)」をあらかじめ入れておいて、月・日・曜日だけを書いてもらうようにしている。 んで、記入者に書いてもらう部分だけ…

Wordの表の各セルの文字列を利用しやすくする(3)

WordTableCreatorクラスの修正 id:mmYYmmdd さんからのコメント akashi-keirin.hatenablog.com 前回の記事に、id:mmYYmmdd さんからコメントをいただいた。 全く以て仰せのとおり、というところなので、アドヴァイスに沿ってコードを修正する。 雑な配列の定…

Wordの表の各セルの文字列を利用しやすくする(2)

クラスのプロパティに二次元配列を持たせてみる 表の内容をそのまま配列にする 「表」ということは、二次元配列と同じ形なんである。 そこで、 クラスのプロパティを二次元配列にする ことを試みた。 クラスの改造 まず、前回記事のリスト1のうち、フィール…

Wordの表の各セルの文字列を利用しやすくする

Wordの表の中の文字列を取得するクラス WordTableOperatorクラス クラスモジュールを挿入して、オブジェクト名を「WordTableOperator」にした。 とりあえず、次のようなコードを書いた。 リスト1 Option Explicit 'フィールド' Private wordApp_ As Word.Ap…

「ゼロ文字目を返せや、コラ!」という無理難題にVBAさんはどう答えるのか

Left関数、Right関数の第2引数 Left関数、Right関数の第2引数が「0」だったらどうなるのか やってみた。 イミディエイト・ウインドウに次のコードを入力して[Enter]を押す。 リスト1-1 ?Left("吉岡 稔真",0) リスト1-2 ?Right("吉岡 稔真",0) 実行結果 ど…

「ハナクソ」の正体が分かった……?

ハナクソの正体が分かった??? 「ハナクソ」とは 「ハナクソ」というのは、 akashi-keirin.hatenablog.com Wordの表からExcelのセルに値を転記したときに、テキストの末尾にくっついてくるナゾの物体のこと。 私の職場の環境(Office2010)では、まるでハ…

LotusScriptのメソッド実行に成功した

LotusScriptのメソッド使用に成功した 少し前、コチラの記事 akashi-keirin.hatenablog.com で泣き言を言ったら、こんな過疎ブログにもかかわらず大勢の方がアドヴァイスをくださった。なんとありがたいことよ……。 あれこれ試してみて、なんとかうまく行った…

Wordの余白を除いたページ幅の中心位置の割り出し方について

Wordのページ中心位置に関する大いなる錯誤 偶然の一致だった 前回、コチラの記事で、 tmp = CLng(Word.PointsToMillimeters(objDoc_.PageSetup.PageWidth)) では、ページ横幅の中心位置を割り出しているのだが、なぜこれで中心が割り出せるのか分からない。…

私はResumeの意味が分かっていなかった

Resumeステートメントの意味が分かっていなかった Resumeステートメントの意味 久しぶりに『Excel VBA本格入門』(大村あつし著)を読み返していたら、 「Resumeステートメント」を引数なしで使うと、エラーの原因となったステートメントに制御が戻ります。 …

画像の配置でいらいらした

ページ横幅の中心位置を割り出そうとしたら謎だらけだった 問題のコード 写しPDF作成マクロを改良して、常にページ横幅の中心部分にハンコ画像が配置されるようにしようとしたら、謎だらけだったので書き残しておく。 リスト1 Dim objRange As Word.Range S…

LotusScriptのメソッドが実行できない……

実行時エラー438に悩まされる オブジェクトは、このプロパティまたはメソッドをサポートしていません 80箇所ぐらいの宛先に、それぞれ添付ファイルの異なるメールを送信する、というしちめんどくさい仕事をすることになった。まあ、Excelで表さえ作ったらメ…

配列関係の覚書(2)

いただいたコメント 前回の記事に達人の皆様からコメントをいただいていたにもかかわらず、返事もできないまま1週間近くたってしまっていた。 私にとっては結構重要なご指摘だったので、コメント欄にではなく、本編にてお返事させていただきます。 id:imihi…

配列関係の覚書

Split関数(VBA)など配列回りの覚書 Split関数 Split関数は、 Split(文字列, デリミタ) とすれば、第1引数の文字列を、第2引数のデリミタで区切った文字列を配列にして返してくれるとっても便利な関数。 んで、めちゃくちゃ基本的なことなんだが、 配列で…

Thunderbirdメール自動作成マクロで複数アドレス指定に対応するのは簡単だった

Thunderbirdで複数の宛先を指定するのは簡単だった Shell関数でThunderbirdのメールを作成する このときにも紹介したが、VBAでThunderbirdのメールを作成するには、次のようなコードを書けば良い。 リスト1 Shell "Thunderbird実行ファイルのフルパス" -com…

VBAで名前の定義をするといろいろ楽

セル範囲の名前の定義をVBAでやったら便利 転記するごとにセル範囲を定義し直す このときみたいなデータ転記系の処理をした場合、ワークシート関数のCOUNTIFなんかを使って種別ごとの数を勘定したい、ということがよくある。 しかしながら、転記件数が変化す…

ActiveWindowプロパティでちょっとハマる……

ActiveWindowプロパティの怪 Excel2010でのエラー 職場のPCはOffice2010なんだが、妙なエラーが出た。 ThisWorkbookモジュールに仕込んだWorkbook_Openイベントマクロでの話。 データを集約するマクロを作っていて、データ集約が終わったら、マクロを仕込ん…

データ抽出用クラスを作る

データ抽出用のクラス AdvancedFilterメソッドを気軽に使う あんまり役に立たないと思うけど、ちょっと作ってみた。 準備として、 データ抽出元のシートを用意。 こんなふうに抽出条件設定用の表を作り、 セル範囲に名前を付けておく。 ちなみに、抽出条件は…