VBA覚書

ユーザーフォームへのコントロール配置――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ステートメントでよくね??? 的なリプをいただいたのだった。 私自身、 たかがブック…

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

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

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

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

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

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

ゼロ埋め連番を作成する

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

「クソ」としか言いようのない魔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の練習も兼ねて、 フォ…

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

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

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

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

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

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

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

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

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

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

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

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

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

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