Environメソッドというものがある

Environメソッドというものがある Wordの〝標準テンプレート〟ファイル(Normal.dotm)を、VBAでゴニョゴニョしたい、ということがあったとする。 その場合、当然ながら標準テンプレートファイルのあるディレクトリのパスを取得する必要がある。 自分一人し…

ChatGPTにコードをレビューしてもらう

ChatGPTにコードレビューをしてもらう 自作MakeUserSickメソッドを改良(?)する 今話題のChatGPTにコードを投げると、コードレビューしてもらえる。 孤独なVBAマンには実にありがたい。 そこで、わが最高傑作(?)、MakeUserSickメソッドを少し改良(?)…

【覚書】[Shell32.Shell].Namespaceメソッドの引数でハマった話

【覚書】Shell32.Shell.Namespaceメソッドの引数でハマった話 結論だけ手っ取り早く知りたい方はコチラ。 何があったのか 事の発端:Shell32.Shellオブジェクトを使うマクロ かつて、 akashi-keirin.hatenablog.com こんなネタを書いていた。 レイト・バイン…

Rangeオブジェクトの場所を目立たせるマクロ(Word)

Rangeオブジェクトの場所を目立たせるマクロ(Word) WordのRangeオブジェクトの場所はわかりにくい WordのVBAでマクロを作っているとき、地味に困るのが、 Rangeオブジェクトがどこを指し示しているのかわからん問題である! Steven Romanさん、ありがとう…

隠し文字を検索してカーソルを移動する(Word)

隠し文字を検索してカーソルを移動する(Word) 隠し文字は表示しないと検索に引っかからない 隠し文字は、編集画面上で非表示になっていると、Findオブジェクトを用いた検索に引っかからない。(もちろん、ふつうに検索ダイアログボックスを用いて検索して…

隠し文字の表示/非表示の切り替え(Word)

隠し文字の表示/非表示の切り替え(Word) 隠し文字の表示/非表示を切り替える 超絶小ネタ。 文字通り、隠し文字の表示/非表示を手軽に切り替えるためのマクロ。 けっこうめんどくさいですからね。(ですよね? 知らんけど。) では、さっそくコードをお…

見出しの配下にある内容を取得する(Word)

見出しの配下にある内容を取得する(Word) 見出しの配下を取得したい 「見出し」というものは、普通、文書の〝意味のあるカタマリ〟ごとに付けるものだと思う。 「見出し」単位で、文書の内容を取り出せたら便利である。 ただ、〝手作業でコピッペする〟と…

サブフォルダも含め配下のフォルダパス全てを返すFunction

サブフォルダも含め配下のフォルダパス全てを返すFunction 作ってみた いや、FileSystemObject使えよ、って話なんですけどね。 Dir関数使って作ったらどうなんのかな、と思って。 ソースコードを晒す 場当たり的に作ったやつなので、だいぶ恥ずかしいのです…

組み込み定数(列挙体)を自作(?)しておく

組み込み定数(列挙体)を自作(?)しておく CreateObject派への転向 実は、だいぶ前からCreateObject派に転向しておりました。 やっぱり、参照設定せずに使えるってのはいいよね、ということで。 CreateObject派になって困ること いろいろあると思いますが…

WordでMarkdownっぽいことをするマクロ(Word)

WordでMarkdownっぽいことをするマクロ(Word) やりたいこと 先頭に# を付けた段落には、「#」の数に応じた階層の「見出し」スタイルを当てる。 その他の「標準」スタイルの段落には、「本文」のスタイルを当てる。 こういうことがしたい。 仕事柄、文章の…

段落罫線を気軽に追加する(Word)

段落罫線を気軽に追加する 段落罫線を追加するのはめんどくさい 文書に区切りの線を入れたいときがある。 たとえば、 こいつを、 こんなふうにしたいときである。 (あ。「そんなもん、ハイフン三つ連チャンで入力したらいいじゃねえか。タコ!」というツッ…

カーソルが段落の先頭にあると正しい段落インデックスが取得できない(Word)

カーソルが段落の先頭にあると正しい段落インデックスが取得できない [Range].Startプロパティと[Range].[Paragraphs].Countプロパティを用いる方法 Rangeオブジェクトの終端がある段落インデックスを取得する方法は、かつて akashi-keirin.hatenablog…

RemovePersonalInformationプロパティというものがある(Word)

RemovePersonalInformationプロパティというものがある 結論だけ知りたければ、コチラをどうぞ。 前回の方法 文書の「作成者」とか「最終更新者」の情報を消す方法として、前回は、 akashi-keirin.hatenablog.com こういう方法を紹介した。 しかし、これもあ…

RemoveDocumentInformationメソッドというものがある(Word)

RemoveDocumentInformationメソッドというものがある RemoveDocumentInformationメソッド 知らなかった。 Documentクラスのメンバ一覧を「オブジェクト ブラウザー」様で見ていて見つけた。 有名なのだろうか……。 使ってみる 例によって、私がマイPCで文書を…

文書の「作成者」を書き換える(Word)

文書情報を書き換える BuiltInDocumentPropertiesプロパティ 私は、Microsoftアカウントを、実にふざけた名前で登録してしまっている。 だから、自宅のPCで作成したドキュメントをもとに、仕事で使うドキュメントを作成したときなんかには、「作成者」とか「…

CharacterUnitFirstLineIndentプロパティ、おまえだったのか……(Word)

CharacterUnitFirstLineIndentプロパティ、おまえだったのか。いつもくりをくれたのは。 ついさきほど、 akashi-keirin.hatenablog.com こんなことを書いたところだが、マルちゃん麺づくりばりにあっさり解決したので、報告。 CharacterUnitFirstLineIndent…

字下げインデントを解除できない?(Word)

字下げインデントを解除できない? 実に不可思議な現象に出くわしたのでメモ。 なお、未解決である。 字下げインデントを解除する方法 段落の字下げインデントを司っているのは、ParagraphFormatオブジェクトのFirstLineIndentプロパティ。 理屈の上では、コ…

なんでVBAでクラスモジュールを使うのか

なんでVBAでクラスモジュールを使うのか 基本的には標準モジュールで十分 プログラムを書くときに、モノとして扱った方が楽な場合がある。 モノの機能だけが欲しいのなら、標準モジュールでいい。 機能のまとまりを表す名前を付けて、その中にメソッドをまと…

EasyTextFileクラスは今……

EasyTextFileクラスは今…… クラスモジュールのコード ただ、クラスモジュールのコードを晒すだけ……。 たぶん、盛大にヌケやモレがあると思うし、そもそもTextStreamオブジェクトのこととかADOSteramオブジェクトのことをろくに理解もせずに、手探りで書いた…

簡易版TextFileクラスを作った

簡易版TextFileクラスを作った テキストファイルの扱いとか、FileSystemObjectのTextStreamオブジェクトとか、ADODBオブジェクトあたりのことがよくわかっていないので、テキストファイルの中身を簡単に取得するためのクラスを作った。 クラスモジュールを触…

ドキュメントを量産するときに文字列を差し込む(Word)

ドキュメントを量産するときに文字列を差し込む(Word) ドキュメントにデータを差し込むといえば、差し込み印刷機能を思い浮かべる人が多いと思うが、簡単なものならブックマーク機能を使ったら十分いける。 準備 前回 akashi-keirin.hatenablog.com と同じ…

Document.SaveAs2メソッドでドキュメントを量産する(Word)

[Document].SaveAs2メソッドでドキュメントを量産する(Word) 同じ内容のドキュメントを、名前だけ変えて量産したい。 準備 まず、元になるドキュメント(笑)を準備する。 こいつを、ファイル名を変えて別のフォルダに保存する。 フォルダ構成は、 こんな…

段落の末尾に文字列を追加する(Word)

段落の末尾に文字列を追加する(Word) 単なる個人的な覚え書き。 段落の末尾に文字列を追加するぐらい、簡単にできると思っていたが、意外に苦戦したので、記録として残しておく。 手っ取り早く結論だけ知りたい方はコチラ以降をどうぞ。 このようなドキュ…

VBAでRangeオブジェクトの場所に連番フィールドを挿入する(Word)

VBAでRangeオブジェクトの場所に連番フィールドを挿入する(Word) ちょっとした覚書。 Fields.Addメソッドでフィールド追加 文書内にフィールドを追加するには、Fields.Addメソッドを使う。(参考) Fields.Addメソッドには、引数が四つ。 Range Type Text …

下線(傍線)を施した部分のRangeオブジェクトを取得するFunction(Word)

下線(傍線)を施した部分のRangeオブジェクトを取得するFunction(Word) なんとなく、役所広司ばりにチャチャっと作ってみた。 ソースコード リスト1 Public Function GetNextUnderlinedRange( _ Optional ByVal a_LineStyle As WdUnderline _ = wdUnderl…

テキストボックス挿入の自動化(Word)

テキストボックス挿入の自動化(Word) 表題のとおり、Wordの文書内にテキストボックスを挿入する作業を自動化したくなったので、やってみた。 きっかけとお題 きっかけ 文字ばっかりのPowerPointスライドを図として挿入するのに、画像で入れてしまったら、…

【意味】Paragraphオブジェクトの謎挙動【不明】(Word)

【意味】Paragraphオブジェクトの謎挙動【不明】 WordのVBAで、ParagraphオブジェクトのRange.Textプロパティを書き換えたら、わけのわからないことが起こったので報告。 もとの文書 もとのWord文書は、 このとおり。何の変哲もない、至ってフツーのドキュメ…

VBAで文書にインライン画像を挿入する(Word)

VBAで文書に画像を挿入するときの注意 最近、Wordでマニュアルとか手順書の類を作成することがやたら増えた。 PDF配布を前提とすると、画像をふんだんに盛り込むことができるので、非常に良いのだが、当然画像の挿入が非常にめんどくさくなってくる。 そこで…

フォルダのサイズを返すFunction

フォルダのサイズを返すFunction フォルダのサイズを返すFunctionを作ってみた。 FileSystemObjectを使う だいぶ前に、Twitterでノンプロ研の某氏が言っていたのを思い出した。 たしかに、Windowsのエクスプローラーでフォルダを右クリックして「プロパティ…

VBAで段落前後のスペースを操作する(Word)

VBAで段落前後のスペースを操作する(Word) 軽くハマったので報告。 何がしたかったか Googleフォームで集めたアンケート結果の自由記述の部分をWordに移して整形したかった。 ただずらずらと並べただけだと読みづらいので、一人分づつ記述の間にスペースを…