VBA一般

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

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

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

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

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

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

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

ゼロ埋め番号を作る関数 調子に乗って関数化 こいつら 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様式に打ち勝った クソとしか言いようのないExcel様式 「クソ」としか言いようのないExcel様式に出会った。 簡単に言うと、 1つのセルに複数データが入っている というもの。 しかも、[Alt]+[Enter]によるセル内改行ばかりかと思ったら、…

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

フォルダ作成クラス 任意のディレクトリに任意の名前のフォルダを作る 新規フォルダを作るときは、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 テ…

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

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

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

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

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

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

名簿作りマクロ(4)

名簿作りマクロ メインコードの組立 過去記事 名簿作りマクロ(3) 名簿作りマクロ(2) 名簿作りマクロ(1) 作成するプロシージャ まず、転記処理の流れを整理しておこう。 【プロシージャ1a】「戦法別」シートへの転記開始用プロシージャ 【プロシージャ1b】…

名簿作りマクロ(3)

名簿作りマクロの組立 次のような手順で組み立てる。 【手順1】ユーザ定義型・列挙型の宣言 【手順2】定数・変数の宣言 【手順3】転記マクロの組立 このような手順で進めていきます。 ユーザ定義型・列挙型の宣言 コードの可読性を上げるために、列挙型を…

文字列のカッコで括られた部分だけを狙い撃ちで削除するマクロ (2)

ネストされたカッコにも対応する 前回の記事が、この過疎ブログには珍しく反響があったので、ちょっと追加。 Replaceメソッドを使う方あり、Split関数を使う方あり、果ては正規表現を使うツワモノまで現れる始末……。 こうなったら、私も意地になって改良を加…

名簿作りマクロ(2)

文字列をコード番号に置き換えて取得する VLOOKUPのちょっと邪道な(?)使い方 一覧表の中の文字列をコード番号に変換するのには、VLOOKUPを使うというのが一般的だと思う。 ただ、私は、一覧表にずらずらとVLOOKUPの数式が並んでいるのがどうもイヤなんで…

名簿作りマクロ(1)

人物データを元に名簿を作成するマクロ 配置転換で行った先で見たもの 新年度の配置転換で、新しい部署に行くことになった。んで、早速名簿作りをしないといけなくなった。 だいたいこんな感じのものが出てきたと思ってください。 どうやら、 こんな元データ…

ループ処理で何もせずにカウンタだけ前に進める

何もせずに次のループに進む ForループやDoループを書いているとき、 先頭で条件判定して、当てはまっていたら何もせずに次のループに進むことができたらいいのに と思うことがちょいちょいある。 もちろん、たとえば、 リスト1 For i = 1 to hogehoge If f…

文字列のカッコで括られた部分だけを狙い撃ちで削除するマクロ

セル内のカッコで括られた文字列のみ削除する 都道府県番号の一覧表 ひょんなことで、都道府県番号の一覧表が欲しいなあと思ってggってみたら、 こんな一覧ばっかり(画像はWikipediaのものです)で、表形式のまま取り込めるものがなかなか見つからなかった…

脱・初心者のために(1)

私が脱・初心者を自覚した瞬間 ……といっても、ある瞬間にスイッチが入ったように「今日を以て初心者を卒業します。私のことを嫌いになっても、初心者のことは嫌いにならないでください!」とか思ったわけではない。 何度も何度も、それはもう何度も何度も、T…

条件付き書式をまじめに勉強してみた(2)

自動記録されたコードを編集する 仕様 まず、自動記録されたコードは、A3セルの値しか条件判定に使うことができない、というおっそろしくしょぼいものなので、選択範囲内全てにA列のセルの値次第で書式設定をするというものに変える。仕様としては、とり…

条件付き書式をまじめに勉強してみた

条件付き書式を設定するマクロ 年度最終日、さっさと仕事を済ませて華麗に帰ってやろうと思っていたのだが、新年度すぐに使う予定表に一つ機能を付け加え忘れていたことに気づいた。ワンクリックで1年分のカレンダーが更新されるようにしていたのに、土日の…

フォルダ構成を別のフォルダにコピーするマクロ(3)

一覧表のデータを元にフォルダ構成を移植する いよいよ今回のマクロも完成。 今回は、前回のマクロで作成したフォルダの一覧表を元に、別のフォルダにフォルダ構成を再現する処理を書いていく。 処理の下準備 リスト1-1 Sub moveFolderStructure() Dim objSh…

フォルダ構成を別のフォルダにコピーするマクロ(2)

指定したフォルダ内のフォルダ構造をワークシートに書き出す 標準モジュールの宣言セクション リスト1-1 Option Explicit Dim fldPicker As FolderPicker おなじみ、変数宣言の強制と、FolderPickerクラスのインスタンス用の変数宣言。FolderPickerクラスに…

フォルダ構成を別のフォルダにコピーするマクロ(1)

全てのサブフォルダのパスを書き出す 「再帰呼び出し」を使ったコード フォルダの中にフォルダがあって、そのフォルダの中にまたフォルダがあって……というような場合に、全てのフォルダのパスを取得するためには、メソッドの「再帰呼び出し」というものを使…

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

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