第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という言語で作っていて、
コードを公開しても実装するのが今回以上に面倒なんですけども。
でもコードを公開すれば、きっと誰かが利用してくれたり、改善してくれたりするでしょう!
と望みを託して――!!!
あ、そうそう。
さっき「。。。」みたいなのには対応できないって書いたんですけども。
これ投稿する直前に解決策をひらめいたので、
上のコードでは対応できているはずです。わーい。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます