第7話 1日で色んなツールが出来ちゃったの話

前回、KH Coderとは別に分析用のツールを自作しちゃおっかな~

みたいなお話をしました。


それら、なんか1日で大体出来上がっちゃいました。

自分でも「えっ、嘘でしょ!?」って感じなんですけども。



なんか、意外と楽に作れるかも!

 ↓

マジで出来た!

 ↓

じゃあその後の段階のやつも作ってみようかな……。

 ↓

繰り返し

 ↓

他にもやるべきことあったけど、気が付いたらこんな時間

 ↓

書こうと思っていた小説は書いていない



こんな感じナウです。

小説以外にも色々やっておいた方がよかったことがあったんですけども、

具体的になんだったか思い出せないしたぶん大丈夫でしょう!



ともあれ、今日新しく作ったものたちがこちら。


・Office Word上で、小説の改行を整理できるマクロ

・一文ごとに文字数をチェックする

・一文ごとに品詞数をチェックする

・一文ごとに、品詞ごとの登場回数をチェックする

・一文ごとにセリフか否かを判定する


一文ごとにシリーズは全部ひとまとめにして、一個のツールになっています。



今回は、

小説の改行に関するマクロについて、説明していきます。



これは、一文ごとシリーズのツールの効果を高めるためのマクロです。


小説って、作者によって改行のタイミングがまちまちですよね?

ウェブ小説ならなおのこと。



なので、


最初に全ての改行を消去。

それから改めて、分析しやすい形を目指して改行していく。


といった機能のマクロを作りました。



目的としては、


ワードからエクセルに文章をコピペした際に、

空欄を生むことなく「1セル=1文」という形で納めることです。



改行するタイミングとしては、



が出てきたタイミングなのですが、


「!?」


みたいな文章が出てきた時の改行が一回だけになるように、調整しています。


でも、独特の文章が来たら通用しない可能性もありです。


私がわかっている範囲では、

「。。。」みたいな、句点連打には対応できません。


それでも、まぁまぁの精度でこっちの思うような改行をしてくれます。



ただし私の雑な設計の都合で、

冒頭が 「 で始まっている小説の場合、

余計な改行が最初に入ってしまいます。



というのも、


「 があったら改行!


っていうふうにしておいた方が、設計が楽だったんですね。



それゆえのデメリットで、ちょっと不便なんですが、まぁ、うん。

仕方ないってことでどうにか。



そんな仕様で恐縮ですが、

せっかくなのでマクロのソースを置いておきます。



ぶっちゃけマクロとか作るの初めてなので、よくわかんなかったです。

標準モジュールで作りました。


あとの詳しい実装の仕方は、なんか、「ワード vba マクロ」とか、それっぽいキーワードで検索して調べてくださいっ!!


--------

Sub 改行変換ちゃん()


With Selection.Find

.MatchFuzzy = False

.MatchSuffix = False

.Text = vbCr

With .Replacement

.Text = ""

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.Text = vbLf

With .Replacement

.Text = ""

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.Text = vbCrLf

With .Replacement

.Text = ""

End With

.Execute Replace:=wdReplaceAll

End With



With Selection.Find

.Text = vbVerticalTab

With .Replacement

.Text = ""

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.Text = "。"

With .Replacement

.Text = "。" + vbCr

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.MatchSuffix = True

.Text = "」"

With .Replacement

.Text = "」" + vbCr

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.Text = "!"

With .Replacement

.Text = "!" + vbCr

End With

.Execute Replace:=wdReplaceAll


End With


With Selection.Find

.Text = "?"

With .Replacement

.Text = "?" + vbCr

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.MatchSuffix = False

.Text = "「"

With .Replacement

.Text = vbCr + "「"

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.Text = vbCr + vbCr

With .Replacement

.Text = ""

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.Text = "。「"

With .Replacement

.Text = "。" + vbCr + "「"

End With

.Execute Replace:=wdReplaceAll

End With


With Selection.Find

.Text = vbCr + "。"

With .Replacement

.Text = "。"

End With

.Execute Replace:=wdReplaceAll

End With


End Sub

-------


つっても、次回の内容も含めないと、なにに使うんだかって代物ですけども。


つっても、次回のツールはPythonという言語で作っていて、

コードを公開しても実装するのが今回以上に面倒なんですけども。



でもコードを公開すれば、きっと誰かが利用してくれたり、改善してくれたりするでしょう!

と望みを託して――!!!



あ、そうそう。

さっき「。。。」みたいなのには対応できないって書いたんですけども。


これ投稿する直前に解決策をひらめいたので、

上のコードでは対応できているはずです。わーい。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る