表の中でのセルの位置を特定する(Word)

表の中でのセルの位置を特定する(Word) Excelの表に比べて、Wordの表は勝手に改竄されることが今まで少なかったので、完全に油断していた。 Wordで集めた大量のドキュメント。ファイル名の付け方がバラバラなので、整理が大変。そこで、ドキュメント内に記入…

参照元に参照先の通し行番号を書き込む(1)

参照元に参照先の通し行番号を書き込む(1) Wordの本文中で、参照箇所を明示したいときがある。段落番号とか見出しだったら、「相互参照」機能を使って文中に挿入できて、変更にも追随してくれるから良いのだが、通し行番号だけは、どうにもやり方がわからな…

通しの行番号を取得するFunction(Word)

通しの行番号を取得するFunction(Word) 前回 akashi-keirin.hatenablog.com の続き。 文書全体を通じての通しの行位置を取得するFunctionを作った 考え方 [Range].Informationプロパティを参照すれば、Rangeオブジェクトのあるページ位置(Information(wdAct…

各ページの行数を取得する(Word)

各ページの行数を取得する(Word) Wordドキュメントの、各ページの行数を調べる方法を編み出した(笑)ので、覚書として記しておく。 カーソルのあるページの総行数を取得する [Document].Bookmarks.Item("\Page")の返り値 BookmarksコレクションのItemメソッ…

動的リストの作成

動的リストの作成 前にいたことがある職場に今いる知人から相談を受けた。 秘伝のマクロが動かなくなって困っているらしい。 人助けのつもりでそのExcelを送ってもらって中を見てみた。 あー、確かにこんなのあったなー。おれは改造して使っていたけど。 簡…

Wordドキュメントに特定のキーワードが含まれているかどうかを判定する(Word)

Wordドキュメントに特定のキーワードが含まれているかどうかを判定する 困ったこと めちゃくちゃめんどくさい調べ物をして作ったWordドキュメントが、フラッシュメモリから消えていた。 今使っている安物のフラッシュメモリは、変なところで買ったやつで、し…

名簿作成マクロのスタイル(1)

名簿作成マクロのスタイル(1) Excelで名簿を扱うことが多い私。 これまで数多くの名簿を作成してきたなかで、最近だいぶスタイルが固まってきたので、一旦まとめておくことにした。 この先また考え方が変わるかも知れないが。 シートの役割に関するものはシ…

「ネオ写経」のすすめ

「ネオ写経」のすすめ 新型コロナウイルス対応で外出の自粛が求められる中、みなさまいかがお過ごしでしょうか。 ろくにテレワーク環境も整っていないのに、「とにかくテレワークだ!」的に導入されてしまった事業所も、それなりにあると思います。 個人的に…

FormattedTextプロパティの怪

FormattedTextプロパティの怪 『Writing Word Macros』という本を買った。 FormattedTextプロパティ Rangeオブジェクトのところを読んでいたら、FormattedTextというプロパティについて書いてあった。 へえ。そんなものがあったのか。 で、『Word 2013 devel…

Tableオブジェクトの怪(Word)

Tableオブジェクトの怪(Word) 実に気色悪い現象に出くわしたので報告。 表の余分な行を削除する たとえば、Wordでドキュメント内の表にデータを差し込むようなとき、 このように、使用しない行が生ずることがある。 宛先によってデータの数が異なるとき、テ…

改行マークの怪(Word)

改行マークの怪 前回 akashi-keirin.hatenablog.com の続き。 改行マークの正体とは? まず、 このようなドキュメント(笑)を用意し、画像のように改行マークを選択状態にしておく。 そして、イミディエイトに ?Asc(Selection.Range.Text) と入力して[Enter…

改行・改段落の怪(Word)

改行・改段落の怪 前回 akashi-keirin.hatenablog.com の続き。 前回のリスト1を再掲する。 前回のリスト1 'テキストの置換' Private Sub replaceText(ByVal str1 As String, _ With Selection.Find Call .ClearFormatting Call .Replacement.ClearFormatt…

VBAによる置換の怪(Word)

VBAによる置換の怪 ちょっと変な現象に出くわしたので報告。 無駄な改段落マークを削除する 最近、Webページ上で公開されている議事録の類をWordドキュメント化する作業にハマっている。今すぐ役に立つわけではないけれど、後で利用するときに楽かな、と思っ…

段落冒頭の半角スペースを除去する(Word)

各段落冒頭の半角スペースを取り除く Webで公開されている議事録の類をWordドキュメント化することが割と増えた。 しばらく待っているとPDFで正式な議事録が出される場合もあるが、割と時間がかかる上、PDFだと記載内容をコピッペする際に割とめんどくさい。…

Custom Collection Classのすすめ(1)

Custom Collection Classのすすめ(1) PersonクラスとPersonsクラス ちょっと次のコードをご覧いただきたい。 リスト1 Private Sub test01() Dim proWrestlers As Persons Set proWrestlers = New Persons With proWrestlers Call .Add Call .Add("阿修羅原"…

WordのRangeオブジェクトの謎挙動

WordのRangeオブジェクトの謎挙動 完全にわけがわからなくなってしまった。 Find.Executeメソッドで特定の文字列の箇所をRangeオブジェクトとして取得する 次のようなメソッドを作成し、現在のカーソル位置の直近にある指定した文字列の場所をRangeオブジェ…

Custom Event 入門

Custom Eventに挑戦 存在は知っていたけど、実はやったことなかった。 『VBA Developer's Handbook Second Edition』の説明が実にわかりやすかったので、ちょっとやってみようと思った。 まあ、単なる覚書です。 手順 今回は、三つのクラスモジュールを用い…

キーワードをカッコで括るマクロ(Word)

キーワードをカッコで括るマクロ Wordドキュメントの中に出てくるキーワードをカッコで括るマクロ。 キーワードの部分を取得する まずは、キーワードの部分を取得しなければならない。Rangeオブジェクトとして取得すれば、あとは[Range].Textプロパティを書…

Wordドキュメント上で指定した段落以外の段落を折り畳む

Wordドキュメント上で指定した段落以外の段落を折り畳む 段落を折り畳むことができる 知らなかった。 Wordの標準機能にあった。 百聞は一見に如かず。次をご覧いただきたい。 「百聞は一見に如かず」と偉そうに言った割にはわかりにくい画像ですまないw 見…

自作クラスのオブジェクト型デフォルトメンバ……???

自作クラスのオブジェクト型デフォルトメンバ……??? ちょっと衝撃的な実行結果が出たので報告。 自作クラスにデフォルトメンバを設定する これは、『VBA Developer's Handbook Second Edition』に載っていたテクニック。 VBA界隈では有名な id:t-hom さん…

選択部分のフィールドコードだけを表示させる(Word)

選択範囲のフィールドコードを表示させる キーボード上での[Shift] + [ F9 ](半角モード)をVBAで実現する方法。 これまで、[Window].[View].ShowFieldCodesプロパティのオンオフ(True/False)切り替えしか知らなかった。 ちょこちょこっと調べてみたら、…

Range.PhoneticGuideメソッドを使いやすくする(Word)

[Range].PhoneticGuideメソッドを使いやすくする [Range].PhoneticGuideメソッドはちょい使いにくいので、使いやすく改良。 改良したコード [Range].PhoneticGuideメソッドは、何といっても引数Raiseが超絶わかりにくい。ゆえに、[Range].PhoneticGuideメソ…

安心の実行結果(Word)

安心の実行結果 先日、 akashi-keirin.hatenablog.com このような、衝撃的な実行結果についてお伝えした。 今回は、安心の実行結果である。 フォントサイズは0.5の倍数のみ? 今まであまり気にしたことはなかったのだが、ルビのフィールドコードをいじくって…

ルビが施された部分のフォント情報を取得する(Word)

ルビが設定された部分のフォント情報を取得する 選択箇所のフォント情報を取得するときには、Selection.Fontオブジェクトにアクセスすればよい。たとえば、 Selection.Font.Name とすれば、カーソル位置のフォント名が取得できる。 ……はずだ。 ルビが設定さ…

衝撃の実行結果(Word)

衝撃の実行結果 最近、WordのVBAでのルビ操作にハマっている。 [Range].PhoneticGuideメソッドでルビを振るのだが、あまり細かい調整ができず、さりとてルビを振った後Field.Code.Textプロパティの値をVBAで書き換えると、 ドキュメントを開きなおしたときに…

マクロでルビ振りをするときの注意(Word)

マクロでルビ振りをするときの注意(Word) Word VBA のバグを発見したので、ここで盛大に晒しますw [Range].PhoneticGuideメソッドでルビを振る まず、次のようなドキュメント(笑)を用意する。 選択部分を見たらわかるように、フォントは「MS 明朝」。 …

Selection.MoveRightメソッド(Word)の挙動に注意

[Selection].MoveRightメソッドの挙動に注意 [Selection].MoveRightメソッド([Selection].MoveLeftメソッド)を使用していて軽くハマったので、記しておく。 [Selection].MoveRightメソッド [Selection].MoveRightメソッドというのは、Wordでドキュメント…

ハイライト部分を切り替えるマクロ(Word)

ハイライト部分を切り替えるマクロ コードだけ掲載しておく。 クラスモジュールと標準モジュールを使った。 ハイライト部分を保持するクラス ハイライト部分を保持し、ハイライト部分の再取得、ハイライトのオンオフ切り替えができるようなオブジェクト。 ク…

ズンドコ節で遊ぶ

ズンドコ節で遊ぶ ノンプロ研のSlackのチャンネルに「今週のお題」というやつがある。毎週一つ、ちょっとした「お題」(〈数字をローマ数字に変換する関数を作れ〉とかそういうやつ)がランダムに出される。 今回、 「ズン」と「ドコ」をランダムで出力し、…

Find.Executeメソッドのハマりを回避する(Word)

Find.Executeメソッドのハマりを回避する(Word) 前回 akashi-keirin.hatenablog.com お知らせしたように、Selection.Collapseメソッドが(仕方がないにせよ)カーソルが末尾にあるときに悲しい挙動をしてしまうせいで、Find.ExecuteメソッドをDo ~ Loopで回…