VBA自作メソッド
【覚書】Shell32.Shell.Namespaceメソッドの引数でハマった話 結論だけ手っ取り早く知りたい方はコチラ。 何があったのか 事の発端:Shell32.Shellオブジェクトを使うマクロ かつて、 akashi-keirin.hatenablog.com こんなネタを書いていた。 レイト・バイン…
隠し文字を検索してカーソルを移動する(Word) 隠し文字は表示しないと検索に引っかからない 隠し文字は、編集画面上で非表示になっていると、Findオブジェクトを用いた検索に引っかからない。(もちろん、ふつうに検索ダイアログボックスを用いて検索して…
サブフォルダも含め配下のフォルダパス全てを返すFunction 作ってみた いや、FileSystemObject使えよ、って話なんですけどね。 Dir関数使って作ったらどうなんのかな、と思って。 ソースコードを晒す 場当たり的に作ったやつなので、だいぶ恥ずかしいのです…
WordでMarkdownっぽいことをするマクロ(Word) やりたいこと 先頭に# を付けた段落には、「#」の数に応じた階層の「見出し」スタイルを当てる。 その他の「標準」スタイルの段落には、「本文」のスタイルを当てる。 こういうことがしたい。 仕事柄、文章の…
段落罫線を気軽に追加する 段落罫線を追加するのはめんどくさい 文書に区切りの線を入れたいときがある。 たとえば、 こいつを、 こんなふうにしたいときである。 (あ。「そんなもん、ハイフン三つ連チャンで入力したらいいじゃねえか。タコ!」というツッ…
下線(傍線)を施した部分のRangeオブジェクトを取得するFunction(Word) なんとなく、役所広司ばりにチャチャっと作ってみた。 ソースコード リスト1 Public Function GetNextUnderlinedRange( _ Optional ByVal a_LineStyle As WdUnderline _ = wdUnderl…
テキストボックス挿入の自動化(Word) 表題のとおり、Wordの文書内にテキストボックスを挿入する作業を自動化したくなったので、やってみた。 きっかけとお題 きっかけ 文字ばっかりのPowerPointスライドを図として挿入するのに、画像で入れてしまったら、…
フォルダのサイズを返すFunction フォルダのサイズを返すFunctionを作ってみた。 FileSystemObjectを使う だいぶ前に、Twitterでノンプロ研の某氏が言っていたのを思い出した。 たしかに、Windowsのエクスプローラーでフォルダを右クリックして「プロパティ…
漢字かどうかを判定するFunction まじめに手直しした。 元のコード コチラが、元のisKanjiメソッドのコード。 リスト1 Public Function isKanji(ByVal targetCharacter As String) As Boolean Dim char As String char = targetCharacter If Len(char) <> 1…
セルの範囲内での相対位置を求める 特定のセルが、指定範囲内の上から何番目にあるのかを求める必要があったので作った。 「指定範囲」は1列、「特定のセル」は1個限定。 セルの相対位置を返すFunction とりあえず、指定範囲を上から順に当たっていって、…
Rangeオブジェクトの終端があるParagraphオブジェクトのインデックス番号を返すFunction 更新頻度ガタ落ちですが、またしてもWordVBAネタです。 まずはコードを お急ぎの方は、コードをコピッペして使ってください。 リスト1 Public Function getParagraphI…
参照元に参照先の通し行番号を書き込む(2) たとえば、 みたいなドキュメントがあるとする。 参照指示性を高めるために、全ての行に通しで行番号を振っている。 これは、芦田宏直氏のアイディアで、詳しいことは氏の著書『シラバス論』(2019 晶文社)をご覧…
表の中でのセルの位置を特定する(Word) Excelの表に比べて、Wordの表は勝手に改竄されることが今まで少なかったので、完全に油断していた。 Wordで集めた大量のドキュメント。ファイル名の付け方がバラバラなので、整理が大変。そこで、ドキュメント内に記入…
通しの行番号を取得するFunction(Word) 前回 akashi-keirin.hatenablog.com の続き。 文書全体を通じての通しの行位置を取得するFunctionを作った 考え方 [Range].Informationプロパティを参照すれば、Rangeオブジェクトのあるページ位置(Information(wdAct…
Wordドキュメントに特定のキーワードが含まれているかどうかを判定する 困ったこと めちゃくちゃめんどくさい調べ物をして作ったWordドキュメントが、フラッシュメモリから消えていた。 今使っている安物のフラッシュメモリは、変なところで買ったやつで、し…
キーワードをカッコで括るマクロ Wordドキュメントの中に出てくるキーワードをカッコで括るマクロ。 キーワードの部分を取得する まずは、キーワードの部分を取得しなければならない。Rangeオブジェクトとして取得すれば、あとは[Range].Textプロパティを書…
Wordドキュメント上で指定した段落以外の段落を折り畳む 段落を折り畳むことができる 知らなかった。 Wordの標準機能にあった。 百聞は一見に如かず。次をご覧いただきたい。 「百聞は一見に如かず」と偉そうに言った割にはわかりにくい画像ですまないw 見…
[Range].PhoneticGuideメソッドを使いやすくする [Range].PhoneticGuideメソッドはちょい使いにくいので、使いやすく改良。 改良したコード [Range].PhoneticGuideメソッドは、何といっても引数Raiseが超絶わかりにくい。ゆえに、[Range].PhoneticGuideメソ…
ハイライト部分を切り替えるマクロ コードだけ掲載しておく。 クラスモジュールと標準モジュールを使った。 ハイライト部分を保持するクラス ハイライト部分を保持し、ハイライト部分の再取得、ハイライトのオンオフ切り替えができるようなオブジェクト。 ク…
ズンドコ節で遊ぶ ノンプロ研のSlackのチャンネルに「今週のお題」というやつがある。毎週一つ、ちょっとした「お題」(〈数字をローマ数字に変換する関数を作れ〉とかそういうやつ)がランダムに出される。 今回、 「ズン」と「ドコ」をランダムで出力し、…
Find.Executeメソッドのハマりを回避する(Word) 前回 akashi-keirin.hatenablog.com お知らせしたように、Selection.Collapseメソッドが(仕方がないにせよ)カーソルが末尾にあるときに悲しい挙動をしてしまうせいで、Find.ExecuteメソッドをDo ~ Loopで回…
文書中のハイライトされた箇所を取得するFunction 文書中のハイライトされた箇所を取得するFunctionについては、かつて akashi-keirin.hatenablog.com akashi-keirin.hatenablog.com このような形で取り上げたことがあった。 しかし、ハイライト箇所を文書本…
クラスモジュールを用いたStackの改良 前回 akashi-keirin.hatenablog.com の続き。 ちょっと改良した。 クラス名の見直し StringStackオブジェクトの各要素がStackStringというのは、余りにもわかりにくすぎるので、StringStackItemに改めた。少し長くなる…
UTF-8のテキストファイルを操作するクラス 作った。 何のために? foobar2000のプレイリストファイルのドライブレター部分を一括して書き換えるために。 決して仕事のためではない。 だから、全然「働き方改革」とは関係ない。許せ。 UTF8TextFileクラスのコ…
ファイルの更新日時を変更する ちょっと調べてみた。すると、 www.tipsfound.com コチラがヒット。曰く、 ファイルに日時を設定 FileSystemObject や VBA の標準機能には日時を変更する機能はありません。代わりに Shell.Application を使って更新日時の変更…
予約語を判定するFunction 作った。 予約語リストを手に入れる 手っ取り早く kazusa-pg.com こちらの方がうpしているやつをいただいた。 ありがとうございます。 予約語を判定するメソッドのコード むつかしく考えずに……。 リスト1 標準モジュール Public …
VBAでwavを鳴らしたらち~んw珍現象が起きた 解決方法を知っている人がいたら、教えろ教えてください。 KitchenTimerクラス 前に、 akashi-keirin.hatenablog.com こういうものを作ったら、職場で割とウケたので、「残り時間を表示するカウントダウンタイマ…
ユーザが選択したファイル名を取得する これまで ユーザが選択したファイル名を取得する(1) ユーザが選択したファイル名を取得する(2) ユーザが選択したファイル名を取得する(3) ユーザが選択したファイル名を取得する(4) ユーザが選択したファイル名を取得…
ユーザが選択したファイル名を取得する 一応、前回 akashi-keirin.hatenablog.com のつづき。 FileDialogFiltersオブジェクトの設定 前々回のリスト1では、FileDialogFiltersオブジェクトを設定するのに Dim fpDialog As FileDialog Set fpDialog = Applica…
楽曲データフォルダのフォルダ構成だけをコピーする(アルバムアートだけはコピーする) このとき akashi-keirin.hatenablog.com の続き。 フォルダ構成だけをコピーするんだけど、アルバムアートファイルだけはコピーする。 私の場合、アルバムアートは、全…