Word (VBA)

Word VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Word 2016)
文末に句点をつけたい
投稿日時: 23/03/15 12:16:12
投稿者: かずすず

Wordにて、文末に句点「。」がついていないかチェックし、ついていない場合のみ句点をつけたいです。
改行(段落)ごとにチェックして句点をつけたいです。
空白行については句点はつけたくないです。
 
また、アクティブファイルでなく、指定したファイルでお願いしたいです。
 
WordVBAは経験がなく教えていただけますと幸いです。よろしくお願いいたします。
 
例)
【実行前】
あああああ
いいい。ううう。
 
ええええ
 

 
【実行後】
あああああ。
いいい。ううう。
 
ええええ。

回答
投稿日時: 23/03/15 18:24:14
投稿者: sk

(標準モジュール)
---------------------------------------------------------
Sub PutPeriodToParagraphEnds()
 
    Const PeriodCharacter As String = "。"
     
    Dim strDocumentPath As String
     
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Clear
        .Filters.Add "Word ドキュメント", "*.docx;*.docm;*.doc"
        .AllowMultiSelect = False
        If .Show = 0 Then
            Exit Sub
        End If
        strDocumentPath = .SelectedItems(1)
    End With
     
    Dim docTarget As Word.Document
     
    Set docTarget = Documents.Open(strDocumentPath)
     
    Dim paraTarget As Word.Paragraph
    Dim rngTarget As Word.Range
      
    Application.ScreenUpdating = False
     
    For Each paraTarget In docTarget.Paragraphs
        Set rngTarget = paraTarget.Range
        With rngTarget
            .MoveEnd wdCharacter, -1
            Select Case .Characters.Last
                Case PeriodCharacter, vbCr, vbLf, vbCrLf, vbVerticalTab
                    '何もしない
                Case Else
                    .InsertAfter PeriodCharacter
            End Select
        End With
        Set rngTarget = Nothing
    Next
     
    Application.ScreenUpdating = True
    docTarget.Activate
     
    Set paraTarget = Nothing
    Set docTarget = Nothing
     
End Sub
---------------------------------------------------------
 
以上のようなコードを実行できればよい、ということでしょうか。

投稿日時: 23/03/16 10:27:11
投稿者: かずすず

>SKさま
 
完っ璧でございます!!!
 
句点の統一感がない長文書にとても困っていたので助かりました!
 
本当にありがとうございました!!!