Visual Basic を使用して Microsoft Word を自動化し、新しい文書を作成する方法

概要

この記事では、Visual Basic からオートメーションを使用して Word で新しい文書を作成する方法について説明します。

サンプル コード

この記事のサンプルコードでは、次の操作を行う方法を示します。

  • テキストと書式設定の段落を挿入します。
  • 文書内のさまざまな範囲を参照および変更します。
  • 表の挿入、表の書式設定、および表へのデータの設定を行います。
  • グラフを追加します。

Visual Basic からオートメーションを使用して新しい Word 文書を作成するには、次の手順を実行します。

  1. Visual Basic で、新しい標準 EXE プロジェクトを作成します。 Form1 は既定で作成されます。

  2. [プロジェクト] メニューの [参照設定] をクリックし、次のいずれかのオプションをクリックして、[ OK] をクリックします。

    • Office Word 2007 の場合は、[ Microsoft word 12.0 オブジェクトライブラリ] をクリックします。
    • Word 2003 の場合は、[ Microsoft word 11.0 オブジェクトライブラリ] をクリックします。
    • Word 2002 の場合は、[ Microsoft word 10.0 オブジェクトライブラリ] をクリックします。
    • Word 2000 の場合は、[ Microsoft word 9.0 オブジェクトライブラリ] をクリックします。
  3. CommandButton コントロールを Form1 に追加します。

  4. Command1 の Click イベントに次のコードを追加します。

     Dim oWord As Word.Application
     Dim oDoc As Word.Document
     Dim oTable As Word.Table
     Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph
     Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph
     Dim oRng As Word.Range
     Dim oShape As Word.InlineShape
     Dim oChart As Object
     Dim Pos as Double
    
     'Start Word and open the document template.
     Set oWord = CreateObject("Word.Application")
     oWord.Visible = True
     Set oDoc = oWord.Documents.Add
    
     'Insert a paragraph at the beginning of the document.
     Set oPara1 = oDoc.Content.Paragraphs.Add
     oPara1.Range.Text = "Heading 1"
     oPara1.Range.Font.Bold = True
     oPara1.Format.SpaceAfter = 24    '24 pt spacing after paragraph.
     oPara1.Range.InsertParagraphAfter
    
     'Insert a paragraph at the end of the document.
     '** \endofdoc is a predefined bookmark.
     Set oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
     oPara2.Range.Text = "Heading 2"
     oPara2.Format.SpaceAfter = 6
     oPara2.Range.InsertParagraphAfter
    
     'Insert another paragraph.
     Set oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
     oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"
     oPara3.Range.Font.Bold = False
     oPara3.Format.SpaceAfter = 24
     oPara3.Range.InsertParagraphAfter
    
     'Insert a 3 x 5 table, fill it with data and make the first row
     'bold,italic.
     Dim r As Integer, c As Integer
     Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 3, 5)
     oTable.Range.ParagraphFormat.SpaceAfter = 6
     For r = 1 To 3
         For c = 1 To 5
             oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
         Next
     Next
     oTable.Rows(1).Range.Font.Bold = True
     oTable.Rows(1).Range.Font.Italic = True
    
     'Add some text after the table.
     'oTable.Range.InsertParagraphAfter
     Set oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)
     oPara4.Range.InsertParagraphBefore
     oPara4.Range.Text = "And here's another table:"
     oPara4.Format.SpaceAfter = 24
     oPara4.Range.InsertParagraphAfter
    
     'Insert a 5 x 2 table, fill it with data and change the column widths.
     Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 5, 2)
     oTable.Range.ParagraphFormat.SpaceAfter = 6
     For r = 1 To 5
         For c = 1 To 2
             oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
         Next
     Next
     oTable.Columns(1).Width = oWord.InchesToPoints(2)   'Change width of columns 1 & 2.
     oTable.Columns(2).Width = oWord.InchesToPoints(3)
    
     'Keep inserting text. When you get to 7 inches from top of the
     'document, insert a hard page break.
     Pos = oWord.InchesToPoints(7)
     oDoc.Bookmarks("\endofdoc").Range.InsertParagraphAfter
     Do
         Set oRng = oDoc.Bookmarks("\endofdoc").Range
         oRng.ParagraphFormat.SpaceAfter = 6
         oRng.InsertAfter "A line of text"
         oRng.InsertParagraphAfter
     Loop While Pos >= oRng.Information(wdVerticalPositionRelativeToPage)
     oRng.Collapse (wdCollapseEnd)
     oRng.InsertBreak wdPageBreak
     oRng.Collapse wdCollapseEnd
     oRng.InsertAfter "We're now on page 2. Here's my chart:"
     oRng.InsertParagraphAfter
    
     'Insert a chart and change the chart.
     Set oShape = oDoc.Bookmarks("\endofdoc").Range.InlineShapes.AddOLEObject( _
         ClassType:="MSGraph.Chart.8", FileName _
         :="", LinkToFile:=False, DisplayAsIcon:=False)
     Set oChart = oShape.OLEFormat.Object
     oChart.charttype = 4 'xlLine = 4
     oChart.Application.Update
     oChart.Application.Quit
     '... If desired, you can proceed from here using the Microsoft Graph 
     'Object model on the oChart object to make additional changes to the
     'chart.
     oShape.Width = oWord.InchesToPoints(6.25)
     oShape.Height = oWord.InchesToPoints(3.57)
    
     'Add text after the chart.
     Set oRng = oDoc.Bookmarks("\endofdoc").Range
     oRng.InsertParagraphAfter
     oRng.InsertAfter "THE END."
    
     'All done. Unload this form.
     Unload Me
    
    
  5. F5 キーを押してプログラムを実行し、[Command1] をクリックします。

コードの完了後、作成されたドキュメントを調べます。 文書には、書式設定された段落、表、およびグラフの2つのページが含まれています。

テンプレートを使用する

オートメーションを使用して、すべて共通の形式のドキュメントをビルドする場合は、書式設定されたテンプレートに基づく新しいドキュメントを使用してプロセスを開始すると便利です。 Word Automation クライアントでテンプレートを使用することには、何もしないでドキュメントを作成することに大きな利点が2つあります。

  • ドキュメント全体でのオブジェクトの書式設定と配置をより細かく制御できます。
  • より少ないコードでドキュメントを作成できます。

テンプレートを使用すると、文書内の表、段落、およびその他のオブジェクトの配置を微調整したり、それらのオブジェクトに書式を含めることができます。 オートメーションを使用すると、次のようなコードを使用して、テンプレートに基づいて新しいドキュメントを作成できます。

oWord.Documents.Add "<Path to your template>\MyTemplate.dot"

テンプレートでは、次のように、ブックマークを定義して、オートメーションクライアントが文書内の特定の場所で可変テキストを入力できるようにすることができます。

oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"

テンプレートを使用するもう1つの利点は、次のように、実行時に適用する書式設定のスタイルを作成して保存できることです。

oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"

or

oWord.Selection.Style = "MyStyle"

References

詳細については、以下の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

285332 Visual Basic を使用して Word 2002 を自動化して差し込み印刷を作成する方法

Visual Studio を使用した Microsoft Office 開発

(c) Microsoft Corporation 2001、予約済みのすべての権利。 Lori Turner、Microsoft Corporation による貢献。