素人がExcelVBAによる「一人働き方改革」に挑むブログスマートフォン用の表示で見る素人がExcelVBAによる「一人働き方改革」に挑むブログExcelVBAネタです。コマシラバスはなぜ必要なのか」という超大作の論考を発表しておられる。氏のツイート(@jai_an)によると、2019/07/06時点で11万字overとのこと。読まねば、とは思ったものの、何せ11万字overの論考である。素人ゆえ大した読解力もない私が、PCやタブレットの画面上で読むのはつらい。Wordとか一太郎にコピペしてプリントアウトし、紙で読もうと思った。そこでちょっと困ったことに気づいた。文中のところどころに(●●●●)のような、カッコでくくったハナクソが大量にあるのである。直前の文字列に傍点があるというサインらしい。文中のあちこちにハナクソみたいな記号群があると、読みにくくて仕方がない。何とかマクロで整形できないものか、考えてみた。先に断っておくが、今のところまったく実用性のないソリューションになっているので、期待しないように。コードとりあえず、作成したコードをぶちまけておく。Subもう、恥ずかしくなるぐらいの力業。[Document].Charactersコレクションを総当たりにしているので、11万字overのドキュメントにこのマクロを実行したら、当分終わらないだろうと思う。一応説明しておくと、次のような手順で傍点を施している。文書の先頭から1文字づつ当たっていき、「(●」になっているところを探す。見つかったら、カウントモードをオンにする。(hasStartedをTrueにする。)同時に、傍点を施す最後の文字の位置が分かるので、endPosにセットする。引き続き1文字づつ当たっていく。「●」である限り、targetCountをインクリメントする。「)」に当たったら、その時点でのtargetCountの値が傍点を施すべき文字数。これで、傍点を施す開始位置が判明するので、startPosにセットする。傍点を施すべきCharactersコレクションの開始インデックス(startPos)と終了インデックス(endPos)が分かっているので、それぞれの要素のEmphasisMarkプロパティを設定する。今改めて書き起こしても、実に強引なやり方だ......。一通り傍点を施し終わったら、あとはハナクソ軍団を削除するのみ。WordVBAについてはまだまだよくわかっていないので、こちらも強引な手法となった。簡単に手順を記しておくと、Findオブジェクトを用いて、先頭から順に「(●」を探す。見つかったら、一旦始点側に選択範囲を潰す。Selection.Extendメソッドを用いて選択範囲を広げる。引数Characterに「)」を渡すことにより、終端のカッコまで選択範囲を広げてくれる。先頭のカッコ~終端のカッコが選択された状態になるので、Deleteメソッドを用いて削除する。