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 紹介したのは、「青空文庫」からダウンロードしたテキストファイルから、ルビ情報(「《 》」で括られた文字列)を削除する、という対応だった。 しかし、いくら読みやすさのためと…

指定した文字列に挟まれた箇所を取得する(Word)

補足 指定した文字列に挟まれた箇所を取得する akashi-keirin.hatenablog.com の補足。 ワイルドカードを用いたらもっと簡単にできるので、書いておきます。 目次 こんなことができます 考え方 指定した文字列に挟まれた箇所を取得するFunction 指定した文字…

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

「青空文庫」のテキストからルビ用文字列を除去する 「青空文庫」からダウンロードしたテキストファイルを、WordVBAを用いて整形していきます。 今回は、手始めに〝ルビ用文字列〟の除去を行います。 目次 こんなことができます ルビ用文字列の位置を取得す…

VBEのフォントを変えたらバグった話

VBEのフォントを変えたらバグった話 フォントを変えたらVBEがバグった VBEのフォントを、Ricty Diminished Discordに変えたら、VBEがおかしくなった。 [ツール]→[オプション]→[エディターの設定]の順にクリックすると、「応答なし」になって、Excelが…

Documentの終端を取得する(Word)

Documentの終端を取得する(Word) 目次 こんなことができます きっかけ Function化 使ってみる おわりに こんなことができます Wordドキュメントの終端のRangeオブジェクトを、簡単に取得することができる。 きっかけ Wordドキュメントの末尾の部分のRangeオ…

Callbackメソッドを追加する

Callbackメソッドを追加する 前回 akashi-keirin.hatenablog.com 作成したDekosukeクラス。 そのイベントリスナ用ImmWndCallbackクラスに、新たなメソッドを追加してみる。 目次 こんなことができます インターフェースIDekosukeCallbackの変更 ImmWndCallba…

Custom EventをCallbackに変える

Custom EventをCallbackに変える クラスモジュールを用いて作ったオブジェクトには、イベントを持たせることができる。 akashi-keirin.hatenablog.com 今回は、このCustom Eventと同様のことを、別のやり方でやってみる。 Custom Eventの場合は、Event、Rais…

Worksheetを継承したクラスを作る(8)

ラップしたオブジェクトのイベントを検知する めっちゃ久しぶりに akashi-keirin.hatenablog.com の続き。 ちょっと何言ってるかわからないかも知れないので説明する。 たとえば、WorksheetオブジェクトをラップしたPoweredSheetという自作クラスがあるとす…

WMIのWin32_Printerクラス

WMIのWin32_Printerクラス VBAでプリンタまわりを操作したいなあと思って、あれこれ調べていると、「WMI(Windows Management Instrumentation)」というものを使うという道があることがわかった。 そうしょっちゅう使うわけでもないが、覚書として記してお…

自作クラスのデフォルトメンバに関する大発見 その2

自作クラスのデフォルトメンバに関する発見 その2 このとき akashi-keirin.hatenablog.com から10箇月の時を経て、またまた世紀の大発見をしたので、紹介します。 あのときの方法 詳しくはコチラを読んでいただきたいが、早い話が、 インスタンスを突っ込ん…

VBAでプリンタを変更する

プリンタの切り替え VBAで、使用中のプリンタを切り替える方法。 目次 かつての考え方 こんな方法があったのか おわりに かつての考え方 Application.ActivePrinterプロパティで切り替える VBAでプリンタを切り替えるには、Application.ActivePrinterプロパ…

範囲内でのセルの相対位置を求める

セルの範囲内での相対位置を求める 特定のセルが、指定範囲内の上から何番目にあるのかを求める必要があったので作った。 「指定範囲」は1列、「特定のセル」は1個限定。 セルの相対位置を返すFunction とりあえず、指定範囲を上から順に当たっていって、…

VBAでWordドキュメントに行番号を振る

VBAでWordドキュメントに行番号を振る 最近、〈脱・パワポ運動〉の一環として、説明用資料の類をWordで作成するようにしています。 パワポで作るいわゆる「ポンチ絵」のわかりにくさ/非効率を解消するのが目的です。 Wordで作成したドキュメントの「参照指…

Rangeオブジェクトの終端があるParagraphオブジェクトのインデックス番号を返すFunction(Word)

Rangeオブジェクトの終端があるParagraphオブジェクトのインデックス番号を返すFunction 更新頻度ガタ落ちですが、またしてもWordVBAネタです。 まずはコードを お急ぎの方は、コードをコピッペして使ってください。 リスト1 Public Function getParagraphI…