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

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フ…

VBA・マクロに関する私の考え

最近、自分には一文の得にもならない、純粋に他人のためのマクロを作らされることが多くなって、改めて思うんですが、やっぱり、マクロなんて自分のためにのみ作るもんだよな!ってことですよ。 ウチの上司は、純粋に「単純作業をマクロ化することは良きこと…

私のVBAとの出会い

もともと、私がVBAを覚えたのは、「ExcelでWordの差込印刷みたいなことってできないんだろうか」とggったことがきっかけだ。 一応、番号を入力したらそれに対応して内容が変化するように数式が埋め込まれていたんだけど、それが全部手作業だった。全てプリン…

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

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

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

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

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

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

自作クラスのプロパティに配列をセットする

VBAを使って、ExcelからLotusNotesのメールを送るマクロ。ずいぶん前に作った素人丸出しのマクロだったから、いっそクラス・モジュールの練習も兼ねて作り直してみようと思い立った。 基本は、上の画像のようなワークシートに必要な値を入れ、B列の番号のと…

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

LotusNotesで送るメールの自動作成 メール作成・送信を自動化するマクロ 職場では、IBMのLotusNotesというグループウェアを使っています。とはいえ、ほとんど活用されていなくて、日常的にはせいぜいメールの送受信ぐらいにしか使われていない。私も、なんと…

年度初日直近の月曜日を割り出すマクロ

ちょい書きマクロです。 年度初日(4月1日)が属する週の月曜日の日付を割り出す必要があって、ちょこちょこっと作ってみた。 ワークシートはこんな感じ。 A3セルにはご覧の通りの書式設定を施しておく、と。 A1セルに、西暦年数を入れたら、A3セル…

クラス・モジュールの邪道かも知れない使い方

シートがたくさんあるブックをVBAで操作するとき、いつもシートの指定がめんどくさいなあと思っていました。 まあ、ちょい書きのマクロだったらシートの指定なんか雑でもいいんですけど、そこそこの規模のものになると、厳密に指定しておかないと後でわけが…

「ハナクソ」の除去について

昨日の記事で、Wordの表からExcelに転記すると、ハナクソみたいなやつがテキストの末尾についてくると書いた。 で、そのハナクソを除去するのに、Replace関数を使っていた。 このことについて、Twitterの数少ないVBA関係のフォロワーさんから、 Left関数でや…

Wordの表からの転記でどハマリ……

今日、Wordの表からExcelにデータを転記する簡単なマクロを作ったんですが、最初はうまいこと行っていたのに、ある瞬間から突然 というエラーが出て、どハマリしてしまいました……。 '参照設定でWordのオブジェクトライブラリにチェックを入れています。 Dim …

改ページの設定がカオス……

VBAであまり印刷まわりの処理はしたことがなかったんですが、スケジュール管理アプリみたいなのを自作させられる中で、印刷問題にぶち当たった。 改ページの設定がうまくいかなくて……。 ちょこちょこっと調べてみたら、 FitToPagesTallプロパティ FitToPages…

エラー対応の仕方

ずっと、「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マスター」気取りですからね。 ま…

クラスモジュールを用いた自作クラスのプロパティについて

クラスモジュールの使い方を練習するため、遊び半分にプログラムしてみた。高橋麻奈さんの『やさしいJava』に倣って、車オブジェクトを作るという体で。 とりあえず、Sheet1に、上の画像のような表を作る。A、B列の1行目にはコマンドボタンを設置している。…