「Excel 上での校閲ツール」の実用化

先日のブログで、「Excel 上で Word のように校閲履歴を残す」を紹介しました。

infoment.hatenablog.com

私が作成したものは不完全でしたが、thom さんから改良(というより新作)をいただく(?)ことが出来ました(感謝!)。

thom.hateblo.jp

これは、業務で使わない手はない!ということで、ユーザーフォームに組み込んでみました。

f:id:Infoment:20180824062151p:plain


修正実行で、thomさんのマクロを実行します。また、使い勝手を考えて、

  • 修正確定
  • 修正取消

ボタンを作成しました。

↓ ユーザーフォーム

Option Explicit
' 修正実行
Private Sub CorrectButton_Click()
    Dim r As Range
        For Each r In Selection
            Call CorrectWord(r, TextBox1.Value, TextBox2.Value)
        Next
        TextBox1.Value = ""
        TextBox2.Value = ""
        TextBox1.SetFocus
End Sub
' 修正確定
Private Sub ConfirmButton_Click()
    Call ProcessAfterReplacement(OriginalWordColor)
End Sub
' 修正取消
Private Sub ResetButton_Click()
    Call ProcessAfterReplacement(CorrectedWordColor)
End Sub
' 終了
Private Sub EndButton_Click()
    Unload Me
End Sub

確定するか取り消すかは、同一のサブプロシージャに渡す色で判別しています。

↓ 標準モジュール

Option Explicit

Public Sub ShowUserForm()
    CorrectWordForm.Show vbModeless
End Sub

' 修正確定 または 修正取り消し
Sub ProcessAfterReplacement(Processing_content As Long)
    Dim str As String
    Dim r As Range
    Dim i As Long
        For Each r In Selection
            str = ""
            For i = 1 To Len(r)
                Select Case r.Characters(i, 1).Font.Color
                    Case Processing_content
                    Case Else
                        str = str & Mid(r, i, 1)
                End Select
            Next
            r.Value = str
            r.Font.Strikethrough = False
            r.Font.Color = vbBlack
        Next
End Sub

なお、色で判別しているので、普段使用する色は避けたほうが良い。
↓ このようなところから選べる色にしてしまうと、思わぬ誤動作に繋がってしまいます。

f:id:Infoment:20180824063212p:plain

そこで、標準的に選べる色から微妙~にずらした色を採択することで、とりあえずの対策としました。もともと資料をカラフルにするのは好きじゃないし、個人で使う分には問題ないと思っています。

f:id:Infoment:20180824063836p:plain

参考まで。