VBA一般

「クソ」としか言いようのない魔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)

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

名簿作りマクロ(3)

名簿作りマクロの組立 前回 akashi-keirin.hatenablog.com のつづき。 次のような手順で組み立てる。 【手順1】ユーザ定義型・列挙型の宣言 【手順2】定数・変数の宣言 【手順3】転記マクロの組立 このような手順で進めていきます。 ユーザ定義型・列挙型…

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

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

名簿作りマクロ(2)

文字列をコード番号に置き換えて取得する 前回 akashi-keirin.hatenablog.com のつづき。 VLOOKUPのちょっと邪道な(?)使い方 一覧表の中の文字列をコード番号に変換するのには、VLOOKUPを使うというのが一般的だと思う。 ただ、私は、一覧表にずらずらとV…

名簿作りマクロ(1)

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

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

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

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

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

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

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

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

自動記録されたコードを編集する 前回 akashi-keirin.hatenablog.com のつづき。 仕様 まず、自動記録されたコードは、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…

写し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)では、添付ファイルをセットするために表の中に添付ファイルのフルパスを入力しておく必要があった。 しかし、「添付ファイルのフルパスの入力なんてめんどくせーよな!」と誰しも思う。だ…