VBA自作メソッド

配列の要素を入れ換えるFunction

配列の要素を入れ換えるFunction 配列の要素を入れ換えるFunctionを作ってみた。 仕様 とりあえず、引数として当該の配列、入れ換え対象のインデックス番号二つを受け取り、入れ換え済みの配列を返すようにする。今回は、Long型の配列に対応する。 コーディ…

選択範囲のルビを除去する(Word)

選択範囲のルビを除去する 青空文庫(HTML版)からWordに文章をコピペすると、 こんなふうに、むやみやたらとデカいルビが設定されていて、レイアウトがめちゃくちゃになる。 ルビのサイズを小さくすることも考えたが、ひとまず選択範囲のルビを除去する方向…

Sentencesコレクションの要素の一番最初の「文字」が何文字目かを調べるFunction(Word)

Sentencesコレクションの要素の一番最初の「文字」が何文字目かを調べるFunction 分かりにくいタイトルですまぬ。 文の最初の文字の位置を調べたい。たとえば、 「……『ち~んw』とか言うな!」と言った。 みたいなときに、最初の文字「ち」の位置が知りたい…

記号は黒字、文字は白字にするマクロ

記号を黒字、文字を白字にする 前回 akashi-keirin.hatenablog.com を用いて、記号は黒字に、文字は白字にするメソッドを作った。 コード コードは次の通り。 リスト1 標準モジュール Private Sub changeFontColor(ByVal targetFont As Font) '……(1)' If is…

文章の中で使われる記号かどうかを判定するFunction(Word)

文章の中で使われる記号かどうかを判定するFunction ちょっとやってみたいことがあって、標題のようなFunctionを作ってみようと思い立った。 以前、 akashi-keirin.hatenablog.com 文字が漢字かどうかを判定するFunctionを作ったときは、ある意味非常に簡単…

ポート名(?)付きのプリンタ名を返すFunction

ポート名(?)付きのプリンタ名を返すFunction 前回、 akashi-keirin.hatenablog.com 前々回 akashi-keirin.hatenablog.com の集大成。 コード プリンタの名前を渡したら、ポート名(?)付きのプリンタ名を返すFunctionを作ってみた。 前回同様、オブジェ…

プリンタの数を返すFunction

プリンタの数を調べるFunction Application.ActivePrinterにプリンタ名をセットしたくても、プリンタ名の後ろにくっついている「on NeXX:」の部分がわからないとセットできない。 同じプリンタに接続していても、端末ごとに「NeXX:」の部分が異なるので困る…

プリンタが存在するかどうかを判定するFunction

プリンタが存在するかを調べるFunction 軽量PDFを作成するためには、ExportAsFixedFormatメソッドを用いていたのでは限界があるので、 akashi-keirin.hatenablog.com このときのように、プリンタにJUST PDFなどの、PDF出力用プリンタを選択する。 その場合、…

非表示ブックの数を返すFunction(Excel)

非表示Bookの数を返すFunction アドインとか、個人用マクロブックみたいな、ブックを開いたら裏で勝手に開いているブックの数と、オモテで正々堂々と開いているブックの数を別々に取得する必要があったので作ってみた。 考えかた Application.Workbooksコレ…

ファイルのコピーを作成する(FileSystemObjectオブジェクトのCopyFileメソッド)

ファイルのコピーを作成する FileSystemObjectオブジェクトを用いる。 ファイルのコピーを作成するFunction FileSysetmObjectオブジェクトのCopyFileメソッドをラップする。 参照設定でMicrosoft Scripting Runtimeにチェックを入れておく。 リスト1 標準モ…

ファイル名をチェックするFunction

不正なファイル名を検出するFunction 作ってみた。 コード コードは次の通り。 リスト1 標準モジュール Public Function hasProhibitedCharacter( _ ByVal fileName As String) As Boolean '……(1)' hasProhibitedCharacter = True '……(2)' Dim ar As Varian…

ブックを閉じて別フォルダに移動する(Excel)

Excelブックを移動する この時期、あちこちから集めたデータ(笑)を集約するという作業が頻発する。 この手の業務は、VBAを使って瞬殺する私にとっては痛くも痒くもない。しかしながら、職場全体で見ると、この手のアホみたいな作業に膨大な時間を費やすと…

カーソルを任意の位置に置く(Word)

カーソルを任意の位置に置く たぶんWord2010のバグだと思うのだけれど、均等割付を施したところに差込フィールドがあると、差し込まれた後に字幅がおかしくなる。 職場のPCでしか遭遇しない症状なので、画像でお見せできないんだけれど、データが差し込まれ…

ExcelVBAでWordドキュメントを軽量PDF化する

ExcelでWordドキュメントを軽量PDF化する ExcelでWordドキュメントのファイル名の一覧表を作って、必要なものだけPDF化する、というのがお題。 ExportAsFixedFormatメソッドを使うやつは既に作成済みなので、PDF化部分を差し替えるのが目標。 ドキュメントを…

isAutoFilteredメソッドの修正

isAutoFilteredメソッドの欠陥 isAutoFilteredメソッドとは 自作のFunction。 akashi-keirin.hatenablog.com このときに作ったもの。 こんなふうにフィルターで絞り込まれていないときにFalseを返す。 イミディエイト・ウインドウに ?isAutoFiltered(Sheet1)…

半角カタカナを全角ひらがなに変換する(StrConv関数)

半角カタカナと戦う(StrConv関数) 名簿のふりがな欄 いろんな名簿を作る必要があって、着手してから気がついた。 名簿のふりがな欄、ふりがなの付け方めちゃくちゃやんけ! ある名簿は全角ひらがな。またある名簿は半角カタカナ。 んで、StrConv関数を使っ…

フォルダ選択ダイアログを表示させるFunction(2)

フォルダ選択ダイアログを表示させるFunctionを改良する FileDialog.InitialFileNameプロパティ akashi-keirin.hatenablog.com このときに作成したFunctionをちょっと改良する。 このFunctionを使ってフォルダ選択ダイアログを表示させたとき、いつも不便な…

配列の次元数を取得するFunction

配列の次元数を取得する 何気なく配列をぐりぐりいじくっていたときに、ちょっとした間違いで こんなエラーが出た。まあ、よくあるエラーなんだが、このときは要素数を超えたのではなくて、存在しない次元を指定していたのだった。 ということは、LBoundとか…

Scripting.Dictionaryの要素をCollection化するFunction

Scripting.Dictionaryの要素をCollection化するFunction Scripting.DictionaryクラスのItemsメソッド 何気なくScripting.Dictionaryクラスのインスタンスをぶち込んだ変数の後に「.」(ドット)を打ち込んだら、 Intellisenseでこんなのが出た。 よく見たら…

配列の要素をCollection化するFunction

配列の要素をコレクション化するFunction 配列の要素をコレクションに格納する ちょっと思いつきで作ってみた。 リスト1 標準モジュール Public Function convertArrayToCollection( _ ByRef targetArray As Variant) As Collection If Not IsArray(targetA…

ユーザー設定のドキュメントプロパティを気軽に使う

ユーザー設定のドキュメントプロパティを操作するFunction akashi-keirin.hatenablog.com このときに、処理用パラメータの保存場所としてユーザー設定のドキュメントプロパティを使ったが、もっと気軽に使えるようにFunction化しておいた。 追加用Function …

真の最終行番号を取得するFunction(2)

真の最終行を取得するFunctionの修正 前回の akashi-keirin.hatenablog.com にさっそくツッコミがw @excelspeedupさん曰く、 currentregion使うと、完全な空白行が入っているとき誤動作しませんか? と。 ははは。確かにおっしゃるとおり。 場合分けミスで…

真の最終行番号を取得するFunction

真の最終行番号を求めるFunction Twitterで、 オートフィルターで非表示になっている行があると、最終行番号の取得に失敗して困る みたいなツイを見た。 なるほど、データの入っている最終行を非表示にして、[Ctrl]+[↑]で確かめると、確かに 表示されている…

オートフィルターの状態を取得するFunction

オートフィルターの状態を取得する 元データが置いてあるワークシートがオートフィルターで絞り込まれているのに、それに気づかずにマクロを実行してわけのわからない結果が出て(゚Д゚)ポカーンとなったことはないだろうか。 わしはある!!!!!!!! そんなわけで、オ…

部屋割りマクロ(Excel)(2)

部屋割りマクロ クラスを使ってみる 部屋を表すクラスを作って、部屋の数だけインスタンスを生成し、部屋が人間を取り合うようなイメージでコーディングしてみた。 Roomクラス クラスモジュールを挿入し、オブジェクト名は「Room」とした。 リスト1 クラス…

部屋割りマクロ(Excel)のリファクタリング(3)

部屋割りマクロのリファクタリング 傍流の処理を外に出す 前回の akashi-keirin.hatenablog.com のリスト2では、大まかに言って 引数のチェック 定員表の配列化 振り番処理 の3つの処理を行っていた。 メインの処理は、当然 3. の振り番処理。あとの2つは…

部屋割りマクロ(Excel)

部屋割りをサクッと済ませるマクロ 部屋割りマクロ 部屋の定員数に応じて、部屋割りをサクッとやってくれるマクロを作ってみた。 同じ定員数の部屋ばっかりだと、単純にmod演算子を使ったループで一発なんだけれど、定員数に凸凹があるときに、定員数順に前…

フォルダ選択ダイアログを表示させるFunction

フォルダを選択させてフォルダパスを取得するFunction ファイルをリネームするマクロを作るにあたり、保存先をその都度選べるようにした方が汎用性が高いと思ったので、Functionにしてみようと思った。 すでに akashi-keirin.hatenablog.com このときにクラ…

Wordの表から文字列を取り出すFunction

Wordの表の文字列を取得するFunction Wordの表の文字列を取得する 「書類の電子化」と言いつつ、 単に紙をWordとかにしただけ という凶悪な職場はいまだに一定の数存在すると思う。 んで、いろんなところからWordドキュメントが集まってくるわけだが、そんな…

プロシージャを別プロシージャの引数にする?

プロシージャ名を引数にして別プロシージャに渡す??? Application.Runメソッド プロシージャの実行時間を計測するFunctionを作りたいなーと思って調べてみたら、 Application.Runメソッド というものを使えばよいと分かったので、やってみた。 GetTickCou…