SEのネタ帳

発見したことや気付いた内容を書き留めたり、作った便利ツールなどを置いておく場所。主に仕事関係のことを書きます。

【VBA】Word文書中の単語一覧をExcelに出力する

Word文書内で使われている単語の一覧をExcelに出力するマクロ。

同じ意味でも表記が違うとかで混乱する時があるので、用語は管理しとくべき。

 

以下、Word文書内のVBAコード。

 

Sub 単語一覧取得()
    Set excel = CreateObject("Excel.Application")
    Set book = excel.workbooks.Add

    Dim i As Long
    i = 1
    Dim tmp As Variant

 

    With excel.workbooks(book.Name).worksheets(1)

        ' Word文書内の全ての単語をtmpに格納する

        tmp = .Range(.Cells(1, 1), .Cells(ActiveDocument.Words.Count, 1))

        For Each w In ActiveDocument.Words
            tmp(i, 1) = w.Text
            i = i + 1
        Next

 

        ' tmpの中身をExcelに出力する。

        ' 1単語ずつExcelに出力するよりも、このように変数に格納しおいて最後にドンと書き出す方が断然高速である。

        Range(.Cells(1, 1), .Cells(ActiveDocument.Words.Count, 1)) = tmp
   

         ' 出力した単語をソートする。
        .Range(.Cells(1, 1), .Cells(ActiveDocument.Words.Count, 1)).Sort Key1:=.Range("A1"), _
            Order1:=1, Header:=0, _
            OrderCustom:=1, MatchCase:=False, Orientation:=1, SortMethod:=1, DataOption1:=0

 

        ' 出力した単語の重複を省く。
        .Range(.Cells(1, 1), .Cells(ActiveDocument.Words.Count, 1)).AdvancedFilter Action:=1, Unique:=True
   
    End With
   

    ' 単語を出力したExcelを保存する。
    excel.workbooks(book.Name).SaveAs "C:\WordList.xls"
    book.Close
    excel.Quit
End Sub