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

ユーザーフォームへのコントロール配置――ControlsコレクションのAddメソッド

ユーザーフォームへのコントロール配置――ControlsコレクションのAddメソッド ControlsコレクションのAddメソッドによるコントロールの動的配置 この本の162ページによると、 ユーザーフォームにコントロールを追加するには、Controlsコレクション(集合体)…

ユーザーフォームへのコントロール配置――このやり方があったじゃないか!

Controlsコレクションの引数 このやり方があったじゃないか! 前回 akashi-keirin.hatenablog.com コチラの記事で、 オブジェクト名を「Object1」、「Object2」、……とかにしておいて、「Object & i」とかで指定できるか ということなんだが、当然そんなこと…

ユーザーフォームへのコントロール配置の効率化に挑む

コントロールの配置の効率化 コントロールを規則的に配置する 前回、 akashi-keirin.hatenablog.com は、コントロールを配列にぶち込んでまとめて処理、という方法を試みた。 配列にぶち込みさえすれば、後はループを回すだけなのだが、そもそも配列にぶち込…

ユーザーフォームへのコントロール配置を効率的に行う?

ユーザーフォームを効率的に作る コントロールはNewできるか やってみた。 なお、ユーザーフォームは、 akashi-keirin.hatenablog.com このときのものを使う。 オブジェクト名が「BtnLeft」なので、BtnLeft型の変数が宣言できると思ったが、 あえなく撃沈w …

大発見!

プロパティ・ウインドウの表示 項目別? VBEのプロパティ・ウインドウ。私は常時表示しているんですが、あまり気に掛けることはなかった。 ユーザーフォームを使うときに、フォームやコントロールのプロパティを、コードで設定するのがメンドウなときに見て…

編集中のWordドキュメントをサクッとPDF化するアドイン

素早く手軽にPDF化 WordドキュメントのPDF化 大量のWordドキュメントを自動でPDF化する、というのは、かなり前に対応済みだった。 akashi-keirin.hatenablog.com Wordドキュメント1つとか2つだけをPDF化する、などというシチュエーションはほとんどなかっ…

ユーザーフォームとPropertyプロシージャと私

ユーザーフォームにプロパティを追加する フォームモジュールにPropertyプロシージャを書いてみる なんかこう、クラスモジュールとフォームモジュールの違いが分からなくなってきている私です。 akashi-keirin.hatenablog.com コチラに、id:imihito さんから…

ユーザーフォームをクラスっぽく使おう!

ユーザーフォームをクラスっぽく使う ユーザーフォームのテンプレート(?) 前回の akashi-keirin.hatenablog.com で、ユーザーフォームもNewできると分かった。 で、それが何の役に立つのか、イマイチよく分からないんだが、 よく使うパターンのユーザーフ…

ユーザーフォームはNewできるか

ユーザーフォームをNewしてみる ユーザーフォームって、クラスモジュールに似てね? クラスモジュールを使っていなかった頃はなんとも思ってなかったが、クラスモジュールをよく使うようになって、改めてユーザーフォームを使ってみると、結構共通点があった…

素人がアドインの世界に首を突っ込んでみる

素人、アドインに手を出す アドインとは……? 「アドイン」って、よく聞く言葉だったけど、意味が分からんかったのでずっと放置していた。 何かの拍子に「マクロをアドインとしてうんたらかんたら」というのを読んで、ちょっと調べてみた。 そしたらアンタ、…

WorkbooksコレクションのAddメソッドに自分自身のフルパスを渡すとExcelが落ちる

Excelが落ちる WorkbooksコレクションのAddメソッド akashi-keirin.hatenablog.com に、ExcelVBAer(id:x1xy2xyz3) さんから、次のようなコメントをいただいた。 参考までに、WorkBooks.Add([originalFileFullName]) という方法も知っておくといいかもね~ Ad…

列番号を列符号に変換する関数

列符号を割り出す関数を作る Split関数の挙動 セルのAddressプロパティを取得すると、例えばA1セルなら、「$A$1」という文字列が返る。 ということは、「$」をデリミタとしてSplit関数を使えば、列符号を表す「A」がSplit関数の返り値である配列のどこかに…

親ブックから子ブックを量産する

データを変えて親ブックから子ブックを量産するマクロ 子ブック生成部分を切り出す akashi-keirin.hatenablog.com の続き。 FileSystemObjectオブジェクトのCopyFileメソッドを使うと、子ブックの生成が簡単にできることが分かったので、いよいよ量産体制に…

親ブックから子ブックを生成する

子ブック生成マクロ 親ブックから子ブックを生成する方法 akashi-keirin.hatenablog.com 先日、コチラの記事をうpしたところ、twitterのフォロワーさんから、 FileCopyステートメントでよくね??? 的なリプをいただいたのだった。 私自身、 たかがブック…

Excelのブックを複製するクラス

子ブックを生み出すクラス 元のブックを開いたままでコピーを作成する 元のブックのシートにデータを入力しては別名で保存して、同じ様式でデータの異なるたくさんのブックを作りたいというときがある。 Worksheetオブジェクトの場合なら、Copyメソッドがあ…

マル中数字をインクリメントする

マル中数字の連番との戦い 1つのブックの中に同じ様式のワークシートが10ヶあって、それぞれに異なるデータを入力していく、という業務が発生した。 ウチの職場では、普通は1シートづつポチポチ入力していくものらしい。 しかし、だ。たいていはせいぜい3…

Private関数(メソッド)でもイミディエイト・ウインドウで動作確認できる

Private関数(メソッド)でもイミディエイト・ウインドウで実行できる ExcelVBAer (id:x1xy2xyz3) さんからの助言 akashi-keirin.hatenablog.com コチラの記事に、ExcelVBAer (id:x1xy2xyz3) さんからコメントをいただいた。 イミディエイト用の方法で、Priv…

ゼロ埋め番号文字列を作る関数を自作した

ゼロ埋め番号を作る関数 調子に乗って関数化 こいつら akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com をもとに、最大数に応じてゼロ埋め数字の文字列を返す関数を作ってみた。 仕様 書式 createNumberFilledByZero(最大数 , 対象数) 第1引数…

String関数なるものの存在を知った

String関数を使う 前回の akashi-keirin.hatenablog.com に、id:imihito さんからコメントをいただいた。 特定の1文字の繰り返しは String関数(名前が紛らわしいですが)を使うと簡単に作れたりします。 VBA.Strings.String$(2, "0") とのこと。 へえ! 知…

ゼロ埋め連番を作成する

Format関数の第2引数は、変数でも良かった ゼロ埋め連番文字列を動的に生成する たとえば、 akashi-keirin.hatenablog.com こんなマクロを使って大量にファイルを生成するような場合、ファイル名の先頭がゼロ埋め連番になっていると非常に都合が良い。 で、…

任意のワークシートを新規Excelブックとして出力するクラス

ワークシートを新規Excelブックとして出力するクラス ワークシートを新規Excekブックとして出力する 名簿なんかの一覧表をマクロで自動作成して、相手方にPDFで提供すると、しばしば 加工したいからExcelのままでくれ! と言われることがよくある。 大量(っ…

「クソ」としか言いようのない魔Excelに勝利した

クソのようなExcel様式に打ち勝った クソとしか言いようのないExcel様式 「クソ」としか言いようのないExcel様式に出会った。 簡単に言うと、 1つのセルに複数データが入っている というもの。 しかも、[Alt]+[Enter]によるセル内改行ばかりかと思ったら、…

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

インタフェースを使ったポリモーフィズム コードの微修正 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を使った作業と本当に相性が悪い…