2021-01-01から1年間の記事一覧

なんで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に移して整形したかった。 ただずらずらと並べただけだと読みづらいので、一人分づつ記述の間にスペースを…

isKanjiメソッドを久々に修正した

漢字かどうかを判定するFunction まじめに手直しした。 元のコード コチラが、元のisKanjiメソッドのコード。 リスト1 Public Function isKanji(ByVal targetCharacter As String) As Boolean Dim char As String char = targetCharacter If Len(char) <> 1…

FileSystemObjectのCreateFolderメソッドで半角スペースで終わるフォルダ名のフォルダを作ったらヤバい

FileSystemObjectでフォルダを作るときに気をつけた方がいいこと ちょっと恐怖体験をしたので報告。 フォルダ名の最後の文字が半角スペースになるようなフォルダを作る Scripting.FileSystemObjectオブジェクトの、CreateFolderメソッドを使ってフォルダを作…

挿入した画像に図表番号を挿入するマクロ(Word)

文書に挿入した画像にマクロで図表番号を付ける(Word) 最近、やたらマニュアルの類を作成している。 スクリーンショット等の画像を貼り付けた文書を作成することがやたら多くなったのだが、いちいち図表番号を入れるのが面倒になってきた。 ……となると、当…

【速報】シェイプを選択しているとVBEでショートカットキーが使えなくなる

【速報】シェイプを選択しているとVBEでショートカットキーが使えなくなる ちょっとした覚書。常識だったらすまん。 Wordの編集画面でシェイプを選択しているとVBEでショートカットキーが使えない もう標題の通り。 このような、 Wordに貼り付けた画像に、枠…

列の最終行を求めるアレはなぜわかりにくいのか(Excel)

「[Worksheet.]Cells([Worksheet.]Rows.Count, 1).End(xlUp).Row」はなぜわかりにくいのか 任意の列(標題の場合はA列)の下端のセルの行番号を求めるおなじみのコード。 ときどき、「なかなか覚えられねえ!」という文脈で話題になるので、ちょっと考えてみ…

画像に枠線を施すマクロの書き換え(Word)

画像に枠線を施すマクロの書き換え 前回 akashi-keirin.hatenablog.com 枠線を消すマクロで、[InlineShape].Lineプロパティ(=LineFormatオブジェクト)を用いたので、枠線を施す方も[InlineShape].Lineプロパティを用いる方法に書き換える。 akashi-keirin…

画像の囲み線を消すマクロ(Word)

画像の囲み線を消すマクロ(Word) 前回 akashi-keirin.hatenablog.com の最後のところで、 逆に、画像に施した枠線を除去するマクロの書き方がわからない。 誰か知っている人がいたら教えろ教えてください。 などと言っていたが、とりあえずやり方はわかっ…

印刷マクロでちょっとハマる(Word)

印刷マクロでちょっとハマる(Word) フォルダ内にたくさんあるWordドキュメントの先頭ページだけを印刷する必要があって(どんな「必要」やねん。)、 ちょろっとマクロ書いて片付けるか! と意気込んで始めたにもかかわらず、ちょっとハマったので、報告。…

傍点マクロの改良(Word)

傍点マクロの改良 目次 傍点マクロのイマイチなところ 傍点マクロを改良する 使ってみる 終わりに 傍点マクロのイマイチなところ akashi-keirin.hatenablog.com このときに紹介した傍点マクロ。 便利だと思っていたが、ショートカットキーでサクッと使えるよ…

文書内に挿入した画像に枠を付ける(Word)

文書内に挿入した画像に枠を付ける Wordの文書内に挿入した画像に枠囲いを付けるのは、結構めんどくさいので、枠で囲うマクロを作った。 こんなことができます Wordの文書内に挿入した画像に、ワンクリックで囲みを付ける。ただ、それだけ。 目次 画像に枠囲…

ブック内で使用している関数の数をカウントするマクロ(Excel)

ブック内で使用している関数の数をカウントするマクロ(Excel) 久しぶりのExcelネタだ。 とりあえずコードをぶちまける 現在(?)、Excelには、488個の関数があるらしい。 その488の関数名をコピッペしたこんなシートを用意して、 その関数名リストの部分…

割り当てたショートカットキーを忘れないようにする

割り当てたショートカットキーを忘れないようにする これはタイトルに偽りありかも知れない。 よく使うマクロを使いやすくする クイック アクセス ツール バーを使う たとえば、前回 akashi-keirin.hatenablog.com 紹介した〝選択箇所に傍点を施すマクロ〟の…

傍点マクロをNormal.dotmに書く(Word)

傍点マクロをNormal.dotmに書く 傍点マクロをNormal.dotmに書く 前回 akashi-keirin.hatenablog.com 作成した傍点マクロ。私は文書作成時にやたらと傍点を使う(というよりは、私の尊敬する書き手が皆一様によく傍点を使うため、引用するときにやたら傍点を…

選択箇所に傍点を施す(Word)

選択箇所に傍点を施す 選択箇所に傍点を施すマクロ 選択箇所に傍点を施すのはめんどくさい 選択箇所に傍点を施すのは実にめんどくさい。 仮に、リボンのタブが「ホーム」にある状態からでも、 対象範囲を選択し、 「フォント」グループの「ダイアログボック…

段落単位で置換できる(Word)

段落単位で置換できる Wordで、特定の範囲だけ置換したかった。 目次 標準機能による置換 Find.Executeメソッドによる置換 段落単位でFind.Executeメソッドを使う おわりに 標準機能による置換 普通、置換はこうする。 画像中に示した、「《 》」でくくられ…

Wordの表の中の文字列

Wordの表の中の文字列 けったいな現象が起こったので報告。 表の中の文字列 Wordドキュメント上に、次のような表を作成する。 で、次のコードで表の左上端セルの文字列を取り出してみる。 リスト1 標準モジュール Private Sub test() Dim tbl As Table Set …

「青空文庫」をWordVBAで攻略する(2)

ルビを振るべき親文字の箇所を取得する 前回 akashi-keirin.hatenablog.com 紹介したのは、「青空文庫」からダウンロードしたテキストファイルから、ルビ情報(「《 》」で括られた文字列)を削除する、という対応だった。 しかし、いくら読みやすさのためと…