日々のコンピュータ情報の集積と整理

Dr.ウーパのコンピュータ備忘録

2015年4月1日水曜日

VBA:Excelのセルに入力された文章を、日本語の単語に分解する

イントロダクション

以下の 2 つの投稿にて、Word の文章を単語に分解する方法と、Excel から Word を操作する方法について学びました。

VBA:Wordを使って、日本語を単語に分解できる!これは便利だ!
http://upa-pc.blogspot.com/2015/04/word-vba-sentence-to-words.html

VBA:ExcelからWordの文書を操作する - ステップ1:空の文書を作成し、文章を書きこむ
http://upa-pc.blogspot.com/2015/04/vba-excel-word-write-text-to-document.html


以上の 2 つのことが出来るようになると、Excel のセルに入力された日本語の文章を、単語に分解することが可能になります。

では、実際にどのようにやるのか見てみましょう。

VBA:Excelのセルに入力された文章を、日本語の単語に分解する

事前準備

Excel から Word を操作できるように、参照設定を行います。
設定方法については、「VBA:ExcelからWordの文書を操作する - ステップ1:空の文書を作成し、文章を書きこむ」の事前準備をご覧ください。



VBAコード

以下の VBA コードを、Word の Visual Basic Editor にて、標準モジュールとして記載しました。

' アクティブセルの文字列を、
' Word の機能を使用して、単語に分解
Sub ShowWords()

    Dim wordApp As New word.Application            ' Word 起動
    Dim doc As Document                         ' ドキュメント記録用
    Set doc = wordApp.Documents.Add

    
    ' Word のドキュメントに、アクティブセルのテキストを書きこむ
    wordApp.Selection.text = Application.ActiveCell.text
    
    
    ' Word のドキュメント内の文章の単語を列挙する
    Dim text As String
    Dim i As Integer
    For i = 1 To wordApp.Selection.Words.Count
    
        text = text & i & " : " & wordApp.Selection.Words(i).text & vbNewLine
    
    Next i
    
    
    ' メッセージボックスで表示
    MsgBox text
    
    ' Word は保存せず終了
    wordApp.Quit False

End Sub


セルに入力したテキスト

以下のテキストを、Excel の任意のセルに入力しておきます。(テスト用データ)

これはテスト用の文字列です。Hello World!


実行結果

上記のセルをアクティブにした状態で、ShowWords マクロを実行すると、次のようにセルに入力した日本語の文章が、単語に分解されて画面上に表示されます。

Excel のセルに入力された日本語の文章を、 Word の機能を使って単語に分解して、画面上に表示
Excel のセルに入力された日本語の文章を、
Word の機能を使って単語に分解して、画面上に表示

---------------------------
Microsoft Excel
---------------------------
1 : これ
2 : は
3 : テスト用
4 : の
5 : 文字列
6 : です
7 : 。
8 : Hello
9 : World
10 : !
---------------------------
OK
---------------------------


解説

大まかな部分は、以前解説した内容と被るので省略します。

VBA:Wordを使って、日本語を単語に分解できる!これは便利だ!
http://upa-pc.blogspot.com/2015/04/word-vba-sentence-to-words.html

VBA:ExcelからWordの文書を操作する - ステップ1:空の文書を作成し、文章を書きこむ
http://upa-pc.blogspot.com/2015/04/vba-excel-word-write-text-to-document.html


今回のポイントは、以下の 2 つです。

    ' Word のドキュメントに、アクティブセルのテキストを書きこむ
    wordApp.Selection.text = Application.ActiveCell.text
Excel のアクティブセルのテキストを、Word のドキュメントへ書き出しています。  


    ' Word は保存せず終了
    wordApp.Quit False
Word の文書は、日本語の文章を単語に分解するために使用しただけなので、Quit メソッドに False を指定して、保存を行わずに終了しています。


まとめ

このように、Word と Excel を VBA によって連動すると、Excel に無い機能でも Word の機能を使って実行できることが分かりました。

それらを使えば、様々なことを行うことが出来そうです。









関連記事

関連記事を読み込み中...

同じラベルの記事を読み込み中...