VBA自作メソッド

foobar2000の楽曲再生データを編集するためのモジュール

foobar2000の楽曲データをいじくるためのモジュール 作ったので公開。 コード foobar2000のPlaybackStatisticsでエクスポートできるXMLをいじくるためのメソッド集的なモジュールを作成した。 一挙公開する。 リスト1 標準モジュールFB2KUtil Option Explic…

抽籤マクロ(Excel)

順番の抽籤をする 研修会とかそういう機会に、発表の順序を決めるとき。 自薦方式をとったり、じゃんけんで決めてもらったりするのも良いが、Excelでやってみてもいいんではないか、と思った。 準備 次のようなシートを準備。 「抽籤!」ボタンをクリックす…

語順整序英作文問題を作成するマクロ

おれならこう書く(余計なお世話) Twitterを眺めていたら、 thunder0512.hatenablog.com こういうものを発見。 面白そうなので、〈おれならこう書く〉ってのをやってみようかな、と。 元記事の筆者さんにとっては、完全に 余計なお世話 だと思いますが、見…

ランダム座席表マクロ

ランダム席替えマクロ 作ってみた。 座席表の枠を作ったシートの機能なので、シートモジュールに生やしてみた。 準備 ランダムに並べるために、乱数発生用のメソッドを用意する。 今回は、標準モジュールにRandUtilと名前を付け、RandUtilモジュールのメソッ…

中途半端に規則的な数列

中途半端に規則的な循環数列を簡単に実現する Excelで座席表なんかを作る場合を想定。 表示用シートに こんな枠を作っておいて、VLOOKUPなんかで こういったデータ用シートから値を引っ張ってくる。 各座席の左上のセルに番号を入力したら、必要なデータが残…

TextFileクラスの改良

TextFileクラスの改良 「改良」なのかどうかはわからんが。 ちなみに、元祖TextFileクラスについては、 akashi-keirin.hatenablog.com コチラをどうぞ。 改良後のTextFileクラス リスト1 クラスモジュール 'オブジェクト名はTextFile' Option Explicit 'Con…

Personsクラスの改良

Personsクラスの改良 前回 akashi-keirin.hatenablog.com のPersonsクラスをちょこっとだけ改良する。 PersonsクラスのextractNamesメソッドは、その名のとおりPersonインスタンスのNameプロパティの値だけを指定したセルを開始位置として転記するものだった…

Rangeオブジェクトが矩形かどうかを判定する(Excel)

Rangeオブジェクトが矩形かどうかを判定する Rangeオブジェクトに入っているセル範囲は、必ずしも連続した矩形領域であるとは限らない。 [Ctrl]を押しながら選択すれば、飛び地状態で選択できるし、飛び地状態で一つのRange型変数にぶちこむことだってできる…

次の素数を取得するFucntion

次の素数を取得するFunction 数字を受け取って、その数字よりも大きい最小の素数を返すメソッドを作った。 コード リスト1 標準モジュール Private Function getNextPrimeNumber( _ ByVal targetNumber As Long) As Long Dim ret As Long ret = targetNumbe…

素数かどうかを判定するFunction(2)

素数かどうかを判定するFunction(2) 前回 akashi-keirin.hatenablog.com をちょこっと修正。 割り算の試行は平方根近似値までで良い 高校生が実に明解に説明してくれていた。 www.higashi-h.tym.ed.jp 富山県立富山東高等学校の諸君、本当にありがとう!!!!!!…

素数かどうかを判定するFunction

素数かどうかを判定するFunction 久しぶりの投稿。 素数かどうかを判定するメソッドを自作してみた。 その前に前回の記事の恥ずかしい誤りを訂正せえよ、と思っていますが。 コード ごちゃごちゃなしで、書いたコードをぶちまける。 リスト1 標準モジュール…

オブジェクト名を指定してWorksheetオブジェクトを取得するFunction(Excel)

オブジェクト名を指定してWorksheetオブジェクトを取得するFunction(Excel) CodeNameプロパティというものがある akashi-keirin.hatenablog.com コチラの記事のコメント欄が炎上wしたことにより、CodeNameというプロパティの存在を知った。 CodeNameプロパ…

シート名の変更を検知する(Excel)

シート名の変更を検知する(Excel) 各所から集めた大量のExcelブックを処理するとき、配布した様式ブックに保護をかけ忘れると、それはもう、好き放題にシート名をいじくられるw マクロで処理しようにも、シート名とかシートの順序を変えられると、ちょっと…

自身のインスタンスを返すクラス

自分自身のインスタンスを返すクラス Attribute VB_PredeclaredId = False のとき クラスモジュールをデフォルトで使うときは、 Attribute VB_PredeclaredId = False である。 このとき、クラスのメソッドやプロパティは、インスタンス化した後でないと利用…

ファイル名が重複しているときに自動ナンバリングしたファイル名を返すメソッドの改良

ファイル名が重複しているときに自動ナンバリングしたファイル名を返すメソッドの改良 akashi-keirin.hatenablog.com これの改良。 改良後のコード 前回は、イマイチFileSystemObjectを使いこなせていなかったので、FileSystemObjectの実力をもっと活用しよ…

foobar2000の日付時刻データをDate型の値に変換する

foobar2000の日付時刻データをDate型の値に変換する Date型の値を、foobar2000独自の日付時刻文字列に変換するのは akashi-keirin.hatenablog.com で作成済み。 今度は、その逆をやってみる。 考え方 foobar2000のPlayback Statisticsでは、再生日時を18ケタ…

ファイル名が重複するときに自動ナンバリングする

ファイル名が重複しているときに自動ナンバリングしたファイル名を返すメソッド 頭の体操に作ってみた。 ExportAsFixedFormatメソッドで新規ファイルを作成したときなんかに、同一名のファイルが存在したときの対策用。 たとえば、保存先に「ち~んw.pdf」…

ワークシートを任意の名前の軽量PDFにする

軽量PDFに任意のファイル名を付ける ワークシートの軽量PDF化 ExcelのワークシートをPDF化するとき、ExportAsFixedFormatメソッドを用いると、非常に軽快に動作する反面、出来上がったPDFドキュメントのサイズが異様に大きくなってしまう。 JUST PDF等のPDF…

foobar2000のPlayback Statisticsを編集するマクロ(2)

foobar2000のPlayback Statisticsのデータを編集するマクロ とりあえず成果物を晒す 細かいことは後回しにして、ひとまず今回の成果物を晒しておくことにする。 バグ対策とか、操作ミス対策は(個人的に用いるツールゆえ)不十分だけれど、なかなかうまく出…

Property Get プロシージャを作るFunction

Property Get プロシージャを作るFunction 最近やたらPropertyを多用しているので、Propertyプロシージャを書くのが面倒になってきた。 特にProperty Getなんて同じパターンの繰り返しが多いので、Functionにしてやった。 Property Getを作るFunctionのコー…

同じ値のセルを結合する~再び~

同じ値の連続セルを結合する 年度末の後始末及び次年度の準備をしていく中で、だいぶ前 akashi-keirin.hatenablog.com で作成したメソッドに重大な欠陥があることに気付いたので、根本からやり直した。 重大な欠陥 前回のやり方は、セルを上から順にスキャン…

ルビと親文字の距離を調整するFunction(Word)

ルビと親文字の距離を調整するFucntion ルビと親文字の距離を司るのは、 EQ \* jc4 \* "Font:MS 明朝" \* hps10 \o\ar(\s\up 10(ムーンサルト),月面宙返) の中の \s\up 10 の部分。 たとえば、 この状態のときのルビの設定は、 このとおり。 このときのフ…

繰り返しを伴う処理をまとめる

フィールドコード総ナメ方式のプロシージャをまとめる 前回までの3回 akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com で紹介したFunctionを使って、選択範囲のフィールドコードを総当たりで処理するプロシージャ…

ルビのサイズを変更するFunction(Word)

ルビのサイズを変えるFunction 前回 akashi-keirin.hatenablog.com の続き。 ルビのサイズを変える ルビのサイズを変えるには、 上記フィールドコード、 EQ \* jc2 \* "Font:MS 明朝" \* hps10 \o\ad(\s\up 10(ムーンサルト),月面宙返) のうち、 \* hps10 …

ルビの割付を変更するFunction(Word)

ルビの割付を変更するFunction 正確に言えば、ルビの割付位置を変更した後のFieldオブジェクトのCode.Textプロパティの値を変更するFunctionです。 ルビの割付の変更 たとえば、 この「月面宙返」にルビを振る。 「ルビ」ダイアログボックスにこのように設定…

乱数を作るクラスを改良した

乱数を作るクラス ランダムに並べ替える作業というのは滅多にないのだけれど、絶妙に忘れかけた頃に発生するので、 akashi-keirin.hatenablog.com このときにクラスまで作っていた。 んで、改めて見直してみたら、イマイチやなあ、と(笑)。 そんなわけで、…

自作WindowsAPIクラスにユーザが選択したフォルダのパスを返すFunctionを追加した

ユーザが選択したフォルダのパスを取得するFunction 相変わらず、WindowsAPIにハマっている。 今回も、名著『大村あつしのExcel VBA Win64/32 API プログラミング』を参考に、おなじみ、自作WindowsAPIクラスにメソッドを追加する。 akashi-keirin.hatenablo…

自作WindowsAPIクラスにウインドウのクラス名を返すFunctionを追加した

ウインドウのクラス名を返すFunction WinAPIの勉強中。 コチラの本に、アプリケーション別のクラス名が掲載されていたのだが、Internet Explorerのクラス名が載っていなかったので、アプリケーションのクラス名を返すFunctionを作ってみた。 コードを書いて…

テキストボックス内のハイライト部分をそれぞれ配列に格納して、Collectionにする(Word)

テキストボックス内のハイライト部分をそれぞれ配列に格納して、Collectionにする 意味の取りづらいタイトルですまない。 テキストボックス内のハイライト部分(Rangeオブジェクト)をテキストボックスごとに配列にして、それぞれの配列をCollectionにぶち込…

WindowsAPI関数をクラスモジュールに封印するとメッチャ便利

WindowsAPIの関数をラップするクラスを作ったらメッチャ便利だった タイトル通り。 そもそもは、 コチラの『VBA Developer's Handbook』で紹介されていたテクニックで、ちょっとやってみたら便利だったというだけの話。 ちなみに、コチラの書籍は、VBA四天王…