新しいドキュメントを作成する Visual Basic .NET から Word を自動化する方法

Microsoft Visual C# .NET のバージョンのこの資料では、 316384を参照してください。

Microsoft Visual Basic 6.0 のバージョンこの資料の313193を参照してください。

概要

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

サンプル コード

この資料のサンプル コードでは、以下を実行する方法を示します。
  • テキストと書式の段落を挿入します。
  • 参照し、文書内のさまざまな範囲を変更します。
  • テーブルを挿入、書式設定、テーブルおよびテーブルにデータ。
  • グラフを追加します。
Visual Basic .NET からオートメーションを使用して新しい Word 文書を作成するには、次の手順を実行します。
  1. Microsoft Visual Studio .NET を起動します。[ファイル] メニューで、[新規] をクリックし、[プロジェクト] をクリックします。[プロジェクトの種類 Visual Basic プロジェクト] をクリックし、[テンプレート] の下の [ Windows アプリケーション] をクリックします。デフォルトで Form1 が作成されます。
  2. Microsoft Word のオブジェクト ライブラリへの参照を追加します。これを行うには、以下の手順を実行します。
    1. [プロジェクト] メニューの [参照の追加をクリックします。
    2. [ COM ] タブで、 Microsoft Word のオブジェクト ライブラリを検索し、選択] をクリックします。

      注: Microsoft Office 2003年およびそれ以降のバージョンの Office プライマリ相互運用機能アセンブリ (Pia) が含まれます。Microsoft Office XP Pia は含まれませんが、それらをダウンロードすることがあります。
      Office XP Pia の詳細については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします。

      328912 Microsoft Office XP プライマリ相互運用機能アセンブリ (Pia) は、ダウンロード可能な

    3. 選択を確定参照の追加] ダイアログ ボックスで[ok]をクリックします。選択したライブラリに対してラッパーを生成するためのプロンプトが表示されたら、[はい] をクリックします。
  3. [表示] メニューで、ツールボックスを表示するのには、ツールボックスを選択し、Form1 にボタンを追加します。
  4. Button1をダブルクリックします。フォームのコード ウィンドウが表示されます。
  5. [コード] ウィンドウで、次のコードを置き換える
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click

    End Sub
    します。
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.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.
    oWord = CreateObject("Word.Application")
    oWord.Visible = True
    oDoc = oWord.Documents.Add

    'Insert a paragraph at the beginning of the document.
    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.
    oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
    oPara2.Range.Text = "Heading 2"
    oPara2.Format.SpaceAfter = 6
    oPara2.Range.InsertParagraphAfter()

    'Insert another paragraph.
    oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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 and italic.
    Dim r As Integer, c As Integer
    oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Range.Font.Bold = True
    oTable.Rows.Item(1).Range.Font.Italic = True

    'Add some text after the table.
    'oTable.Range.InsertParagraphAfter()
    oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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.
    oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Width = oWord.InchesToPoints(2) 'Change width of columns 1 & 2
    oTable.Columns.Item(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.Item("\endofdoc").Range.InsertParagraphAfter()
    Do
    oRng = oDoc.Bookmarks.Item("\endofdoc").Range
    oRng.ParagraphFormat.SpaceAfter = 6
    oRng.InsertAfter("A line of text")
    oRng.InsertParagraphAfter()
    Loop While Pos >= oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage)
    oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
    oRng.InsertBreak(Word.WdBreakType.wdPageBreak)
    oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
    oRng.InsertAfter("We're now on page 2. Here's my chart:")
    oRng.InsertParagraphAfter()

    'Insert a chart and change the chart.
    oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _
    ClassType:="MSGraph.Chart.8", FileName _
    :="", LinkToFile:=False, DisplayAsIcon:=False)
    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.
    oRng = oDoc.Bookmarks.Item("\endofdoc").Range
    oRng.InsertParagraphAfter()
    oRng.InsertAfter("THE END.")

    'All done. Close this form.
    Me.Close()

    End Sub
  6. Form1.vb の先頭に次のコードを追加します。
    Imports Word = Microsoft.Office.Interop.Word
  7. ビルドして、プログラムを実行する f5 キーを押します。
コードが完了すると、自動的に作成されているドキュメントを確認します。ドキュメントには、書式設定された段落、表、グラフの 2 つのページが含まれています。

テンプレートを使用してください。

共通の形式ですべてのドキュメントを作成するのにはオートメーションを使用する場合は、あらかじめ設定されたテンプレートに基づいて新しい文書をプロセスの開始からも役立ちます。Word オートメーション クライアントでテンプレートを使用して、ゼロから文書を構築する上で 2 つの重要な利点があります。
  • 文書全体にわたって書式設定とオブジェクトの配置をより細かく制御を持つことができます。
  • 少ないコードで、ドキュメントを構築することができます。
テンプレートを使用すると、することができますテーブル、段落、および、ドキュメント内の他のオブジェクトの位置を調整するし、これらのオブジェクトの書式設定が含まれます。オートメーションを使用すると、次のようなコードを使用してテンプレートに基づいて新しい文書を作成できます。
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"
テンプレートでは、入力できるように、オートメーション クライアント ドキュメント内の特定の場所でさまざまなテキストを次のようにブックマークを定義できます。
oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
テンプレートを使用する他の利点は、作成し、実行時に次のように適用する書式のスタイルを保存することができます。
oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"
- または -
oWord.Selection.Style = "MyStyle"

関連情報

Microsoft Word を自動化する Visual Basic .NET を使用する方法については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします。

301656 Visual Basic .NET から差し込み印刷を実行するのには Word を自動化する方法

詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。
プロパティ

文書番号:316383 - 最終更新日: 2017/02/01 - リビジョン: 2

フィードバック