読者です 読者をやめる 読者になる 読者になる

写しPDF作成マクロ~(4)

クラスを組み合わせる 使用したクラス FileNameGetterクラス FolderCreatorクラス ErrorCatcherクラス DocPDFConverterクラス それぞれのクラスの詳細については、リンク先をどうぞ。 標準モジュールのコード Option Explicit Public Type myFolder fdPath A…

写しPDF作成マクロ~(3)―ページ先頭位置を割り出して画像を追加する―

Wordドキュメントに画像を貼り付ける 今回作成するマクロでは、Wordドキュメントにpng画像を貼り付ける必要がある。しかも、その処理をExcelから行う、という無駄にややこしい仕様w とりあえず、今回は Wordドキュメントの各ページの先頭中央にpng画像を貼…

写しPDF作成マクロ~(2)

ファイル選択用のクラスを作る 指定した拡張子のファイルを選択させる 今回のマクロでは、写し作成元のWordファイル、ハンコ用のpngファイル、と、ファイル形式を限定して取得したい。そうすると、ファイル選択ダイアログでユーザにファイル選択を迫る際に、…

写しPDF作成マクロ~(1)

書類が「写し」であることを示すために、「写」ハンコを押して送ったり、職場内で回覧したり、ということがある。 まあ、職場内で回覧する分にはハンコを押すだけの話なので何ということはないのだが、「写し」であることを明示した上でメールで送る、という…

Thunderbirdメール自動作成マクロを改良した

準備 セルに名前をつける。 こんな具合に「ThunderBirdPath」と名前をつけた。 標準モジュールのコード Sub getThunderbirdPath() Set flp = New FilePicker '……(1) With flp .showFilePicker ("Thunderbirdの実行ファイルを指定せよ(ショートカットでも良…

Wordから転記した表で小ハマリ……

前にコチラで紹介した、Wordの表からExcelの表にデータを転記するマクロなんですが、またしても軽くハマったので、覚書も兼ねて上げておく。 第1段階 Wordのこんな表から、 Excelのこんな表にデータをマクロで転記した。 使用したコード Option Explicit Su…

ファイルのフルパスを簡単に取得する

はじめに メール自動作成マクロ(その1/その2/その3/その4)では、添付ファイルをセットするために表の中に添付ファイルのフルパスを入力しておく必要があった。 しかし、「添付ファイルのフルパスの入力なんてめんどくせーよな!」と誰しも思う。だ…

メール自動作成用のクラスを作る~(4)……そして伝説へ(うそ)

LotusNotesメールを作る LotusNotes版も作った。……ていうか、前から使っていたやつを移植しただけですが。 早速、コードの紹介から。このとき作ったクラスに追記する。 メソッドのコード Public Sub createLotusNotesMail() On Error Resume Next Err.Clear …

メール自動作成用のクラスを作る~(3)

Thunderbirdでメールを自動作成するメソッドを作成。 まずはコードをご覧に入れよう。 あ、その前に、標準モジュールの宣言セクションに、 Public Const THUNDERBIRD_PATH As String = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" こいつ…

メール自動作成用のクラスを作る~(2)

先に断っときます。今回はカンバンに偽りあり。 「……クラスを作る」とか題名で言ってますが、クラスは作りません。ただ、前回作ったクラスを活用するためのコードを作るんだから、あながち嘘でもない。そんなわけで、そこんとこヨロシク。 前回作ったクラス…

メール自動作成マクロ用のクラスを作る

Excelから、VBAでLotusNotesやThunderbirdのメールを作るマクロ。 メンテナンスしやすくて拡張性のあるものにしたいと思って試行錯誤中。「これでうまく行くんじゃね?」というところまで漕ぎ着けたので、うpしておく。 なるべく〈オブジェクト指向〉っぽく…

データ転記マクロ~その3

前回のマクロをさらに書き換える。 今度は、無駄にクラスモジュールを使うよ。 クラスモジュールを挿入して、オブジェクト名を「GambleRacer」にした。 クラスモジュールには下記のコードを書く。 Option Explicit 'フィールド '……(1) Private rcID_ As Long…

データ転記マクロ~その2

前回の転記用マクロを書き換えてみる。 元のコードを下に再掲。ただし、余計なコメントは除去。コメント入りがご所望ならコチラをどうぞ。 Sub sendDataVer1() Dim folderPath As String folderPath = ThisWorkbook.Path Dim objSheet As Worksheet Set objS…

データ転記マクロ

VBA初心者向けブログみたいなタイトルなのに、全然初心者向けじゃなかったので、ちょっと初心者の頃を思い出して書く。 私がVBAにハマるきっかけになったマクロです。 こんな個票のデータを、 こんな集約表に転記していく、という作業です。 集約用のExcelフ…

小さなクラスを作る(3)~ファイルを選択させる

ファイルを選択させるやつも作ってみた。 例によってクラスモジュールを挿入。オブジェクト名はFilePickerにした。 クラスモジュールのコードは下記の通り。 Option Explicit 'フィールド Private gotFileFullPath_ As String Private isCancelled_ As Boole…

小さなクラスを作る(2)~他のアプリケーションの起動チェック

LotusNotesのメールをExcelVBAで自動作成するときは、そもそも自分のアカウントでNotesに接続していないといけない。 「でも、他のアプリケーションが起動しているかどうかなんて、どうやって判定できるんだろ?」とggっていてわりかしあっさりとたどり着い…

小さなクラスを作る(1)~フォルダ選択機能

twitterのフォロワーさんからのアドヴァイス。 曰く、よく使う機能はクラスにしといた方がいいぜと。なるほど。今まで、よく使う処理をSubやFunctionにまとめて一つのモジュールに集めておいて、ライブラリ的に使っていたけど、結局、 どこに何を書いていた…

VBAで、ExcelからLotusNotesのメールを自動作成する

職場では、IBMのLotusNotesというグループウェアを使っています。とはいえ、ほとんど活用されていなくて、日常的にはせいぜいメールの送受信ぐらいにしか使われていない。私も、なんとなく非常に高機能なものなんだろうなあとは思いつつ、ほとんど活用してい…

エラー対応の仕方

ずっと、「On Error Resume Next」が怖くて使えなかった。 だって、「エラーが出ても気にせずに次に進め!」なんて、そんな無責任かつ投げやりな対応が許されていいのか、と思っていたんですよ。 でも、最近はもっぱらコレばっかり。 そこそこ大規模なマクロ…

AdvancedFilterメソッドでデータを抽出する

「偉いさんのスケジュールを蓄積して、予定表を出力するマクロ作ってくれや。もう引き受けてしもたから、絶対やれ! 分かったな!」というパワハラまがいの命令を受けて、なぜかスケジュール管理アプリみたいなのを自作する羽目になった悲惨な私です。 そん…

セル内の長文を編集する

ExcelVBAでメールを自動作成するようなマクロを作る場合、当然本文の文字列もワークシート上で管理することになると思う。 ただ、文章が長くなると、シート上では読み書きしづらい、ということが起こる。 私の場合、本文用の列を10列ぐらい用意して、1段落…

セル内の数式を一括して書き換える

結構な規模の表を作ってしまってから、「あっちゃー! 数式を○○にしときゃ良かったよ!」というときが結構ある。 まあ、数式を入れたセルが全部連続していたら、先頭のセルだけ書き換えて後はオートフィルで一発、で済むんだが、数式の入っているセルが不連…

マクロを「クイック アクセス ツール バー」から起動する

作ったマクロを起動する方法はいろいろありますが、日常の面倒な「ちょっとした」作業を自動化するときには、「クイック アクセス ツール バー」に登録するのがおすすめ。 「ショートカットキーに登録しといたら、キーボードから手を離さずに操作できるので…

VBAによる自動化の第一歩(補足)

昨日のブログをtwitterに上げたら、早速フォロワー様からご指摘をいただいた。 「空欄があった場合の対応がないぞ!」と。 ははは。ホントだ。 こんな場合に、 全部選択して実行すると、 当然こうなるwww Sub 様をつける3() Dim objCell As Range For Eac…

VBAによる自動化の第一歩

ウチの職場では、職員のPC全てにExcelが入っているのですが、まあ、ろくに活用されていないw たぶん、昔からある方眼付きコピー原紙の電子版ぐらいにしか思われていない。 VLOOKUP関数がまともに使えるだけで、もう「Excelマスター」気取りですからね。 ま…