http://q.hatena.ne.jp/1206705553

面白そう(^^)

Wordのマクロじゃなくて、コメント欄の方と同じくExcelのマクロでやってみたいと思います。

例えばExcelに、

172-01.jpg

 で、Wordに、

172-02.jpg

 

こんな文章があったときに、マクロを実行すると、

 

 172-03.jpg

こんな感じになるように(^^) 文章は有名なコピペを使用させて頂いております(^^;)

 まずは、ExcelマクロからWordを操作する方法ですが、コメント欄で紹介されていたこちらのページがわかりやすかったです。

まずは、ExcelからWordを操作するために参照設定(あんまり好きじゃないですが、こればっかりはしょうがないですね(^^;))を行います。

Excelのメニューで、ツール→マクロ→Visual Basic Editorとして、Visual Basic Editorのメニューから、

ツール→参照設定で、

 172-04.jpg

たぶん、ExcelやWordのバージョンによって違うと思いますが、こちらの環境の場合、

「Microsoft Word 9.0 Object Library」

をチェックして、OKを押します。 んでは、まずExcelマクロから、Wordを開いてみます。

Sub test()
    
    Dim wdObj    As New Word.Application
    Dim wdDoc    As Word.Document
    Dim wordFile As String
    
    'オープンするワードのファイル名をパス名付きで入れます
    wordFile = "c:¥vbastudy_17.doc"
    
    'ワードを開きます。
    wdObj.Visible = True
    wdObj.Documents.Open wordFile
    MsgBox ("ワードを開いたよ")
    
    'ワードを閉じます。
    wdObj.Quit

End Sub

 

ただ開いて、メッセージを出すだけです。

実行してみると、

 172-05.jpg

ん、開けました(^^)

 では次、とりあえず「吉野家」を探して、その文字を赤にしてみます。

Sub test()
    
    Dim wdObj    As New Word.Application
    Dim wdDoc    As Word.Document
    Dim wordFile As String
    
    'オープンするワードのファイル名をパス名付きで入れます
    wordFile = "c:¥vbastudy_17.doc"
    
    'ワードを開きます。
    wdObj.Visible = True
    wdObj.Documents.Open wordFile
    
    '検索するキーワードを設定します。
    wdObj.Selection.Find.Text = "吉野家"
    
    '検索する方向を指定します。
    wdObj.Selection.Find.Forward = True
    
    '色を指定します。
    wdObj.Selection.Find.Replacement.Font.Color = wdColorRed
    
    '検索を実行し、全てを置換します。
    wdObj.Selection.Find.Execute , , , , , , , , , , wdReplaceAll
    
    MsgBox ("吉野家を赤くしたよ")
    
    '変更を保存します。
    wdObj.ActiveDocument.Close SaveChanges:=True
    
    'ワードを閉じます。
    wdObj.Quit

End Sub

処理の内容はコメントに書いておきました。

Wordを普通に手作業で操作する際の、 172-06.jpg

この設定をプログラムにしただけですね。あと、作業が終わったら文書を上書き保存して、Wordを終了しています。

 実行すると、

 172-07.jpg

 ん、赤くなりました(^^) 後は、Excelから1行ずつ情報を取ってきて、検索する文字列と色を与えればよいですね。

 ただ。。。

Excelで色の指定を「赤」とか「青」とか、漢字で指定するようにしちゃってますが、 たぶん、マクロ上では wdColorRedとかにしないといけないでしょうね。。。

 172-081.jpg

Color=と入力すると、こんな一覧が表示されます。

この色を全部日本語に対応させるとなると、、、大変なので(^^;) 今回は、赤、青、緑、だけにしておきます。

Sub test()
    
    Dim wdObj    As New Word.Application
    Dim wdDoc    As Word.Document
    Dim wordFile As String
    Dim lastgyou As Integer
    Dim i        As Integer
    Dim iro      As Long
    
    'オープンするワードのファイル名をパス名付きで入れます
    wordFile = "c:¥vbastudy_17.doc"
    
    'ワードを開きます。
    wdObj.Visible = True
    wdObj.Documents.Open wordFile
    
    'Excelの最後の行を求めます
    lastgyou = Sheets("Sheet1").Range("A1").End(xlDown).Row
    
    '1行目から最後の行まで、繰り返します。
    For i = 1 To lastgyou
        
        '検索するキーワードを設定します。
        wdObj.Selection.Find.Text = Sheets("Sheet1").Cells(i, 1).Value
        
        '検索する方向を指定します。
        wdObj.Selection.Find.Forward = True
        
        '色を指定します。
        
        Select Case Sheets("Sheet1").Cells(i, 2).Value
            Case "赤"
                iro = wdColorRed
            Case "青"
                iro = wdColorBlue
            Case "緑"
                iro = wdColorGreen
        End Select
        
        
        wdObj.Selection.Find.Replacement.Font.Color = iro
        
        '検索を実行し、全てを置換します。
        wdObj.Selection.Find.Execute , , , , , , , , , , wdReplaceAll
    
    Next
    
    '変更を保存します。
    wdObj.ActiveDocument.Close SaveChanges:=True
    
    'ワードを閉じます。
    wdObj.Quit

End Sub

Excelで1行ずつとってくるのは、いつもと同じです。

色を取ってきて、その色の文字列(赤、青、緑のいずれか)によって、 iro という変数に wdColorRed 等の値を代入するようにしています。

 実行してみると、

 172-09.jpg

 ん、できました(^^)

とりあえず、これで完成ということで。 検索したいキーワードはExcel上で設定できます。

設定したい色が赤、青、緑であれば、そのように書けばおっけい。

それ以外の色を指定したい場合は、マクロ内の Select Caseのところに、同じように追加すればおっけいです。

こちらに、Excel、Wordとも置いておきます。 vbastudy_17.xls vbastudy_17.doc

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2011 simple blog いろいろ勉強中 Suffusion theme by Sayontan Sinha