次の方法で共有


チュートリアル: Microsoft Office アセンブリからの型情報の埋め込み (C# および Visual Basic)

COM オブジェクトを参照するアプリケーションに型情報を埋め込むと、プライマリ相互運用機能アセンブリ (PIA: Primary Interop Assembly) を使用する必要がなくなります。 また、埋め込み型情報を使用することで、バージョンに依存しないアプリケーションを作成できます。 つまり、複数のバージョンの COM ライブラリの型を使用するようにプログラムを記述でき、バージョンごとに固有の PIA が不要になります。 この方法は、Microsoft Office ライブラリのオブジェクトを使用するアプリケーション向けの一般的なシナリオです。 型情報を埋め込むと、プログラムの同じビルドで、異なるコンピューター上にある異なるバージョンの Microsoft Office と連携できます。Microsoft Office のバージョンごとにプログラムや PIA を再配置する必要はありません。

このチュートリアルでは、次のタスクを行います。

  • 別のバージョンの Microsoft Office がインストールされているコンピューターにアプリケーションを発行するには。

  • 別のバージョンの Microsoft Office がインストールされているコンピューターにアプリケーションを発行するには。

注意

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio での開発設定のカスタマイズ」を参照してください。

必須コンポーネント

このチュートリアルの前提条件は次のとおりです。

  • Visual Studio および Microsoft Excel がインストールされたコンピューター。

  • .NET Framework 4 および別のバージョンの Excel がインストールされた 2 台目のコンピューター。

複数のバージョンの Microsoft Office と連携するアプリケーションを作成するには

  1. Excel がインストールされているコンピューターで Visual Studio を起動します。

  2. [ファイル] メニューで、[新規][プロジェクト] をクリックします。

  3. [新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] ペインで、[Windows] が選択されていることを確認します。 [テンプレート] ペインの [コンソール アプリケーション] を選択します。 [名前] ボックスに「CreateExcelWorkbook」と入力し、[OK] をクリックします。 新しいプロジェクトが作成されます。

  4. Visual Basic を使用している場合、CreateExcelWorkbook プロジェクトのショートカット メニューを開き、[プロパティ] をクリックします。 [参照] タブをクリックします。 [追加] ボタンをクリックします。 Visual C# を使用している場合、[ソリューション エクスプローラー] で、[参照] フォルダーのショートカット メニューを開き、[参照の追加] をクリックします。

  5. [.NET] タブで、最新バージョンの Microsoft.Office.Interop.Excel を選択します。 たとえば、[Microsoft.Office.Interop.Excel 14.0.0.0] をクリックします。 [OK] を選択します。

  6. CreateExcelWorkbook プロジェクトの参照の一覧で、前の手順で追加した Microsoft.Office.Interop.Excel の参照を選択します。 [プロパティ] ウィンドウで、Embed Interop Types プロパティが True に設定されていることを確認します。

    注意

    このチュートリアルで作成したアプリケーションは、相互運用の型情報が埋め込まれているため、異なるバージョンの Microsoft Office と連携して動作します。Embed Interop Types プロパティを False に設定した場合は、このアプリケーションと連携して動作する Microsoft Office のバージョンごとに PIA を組み込む必要があります。

  7. Visual Basic を使用している場合は、Module1.vb ファイルを開きます。 Visual C# を使用している場合は、Program.cs ファイルを開きます。 ファイル内のコードを次のコードに置き換えます。

    Imports Excel = Microsoft.Office.Interop.Excel
    
    Module Module1
    
        Sub Main()
            Dim values = {4, 6, 18, 2, 1, 76, 0, 3, 11}
    
            CreateWorkbook(values, "C:\SampleFolder\SampleWorkbook.xls")
        End Sub 
    
        Sub CreateWorkbook(ByVal values As Integer(), ByVal filePath As String)
            Dim excelApp As Excel.Application = Nothing 
            Dim wkbk As Excel.Workbook
            Dim sheet As Excel.Worksheet
    
            Try 
                ' Start Excel and create a workbook and worksheet.
                excelApp = New Excel.Application
                wkbk = excelApp.Workbooks.Add()
                sheet = CType(wkbk.Sheets.Add(), Excel.Worksheet)
                sheet.Name = "Sample Worksheet" 
    
                ' Write a column of values. 
                ' In the For loop, both the row index and array index start at 1. 
                ' Therefore the value of 4 at array index 0 is not included. 
                For i = 1 To values.Length - 1
                    sheet.Cells(i, 1) = values(i)
                Next 
    
                ' Suppress any alerts and save the file. Create the directory  
                ' if it does not exist. Overwrite the file if it exists.
                excelApp.DisplayAlerts = False 
                Dim folderPath = My.Computer.FileSystem.GetParentPath(filePath)
                If Not My.Computer.FileSystem.DirectoryExists(folderPath) Then
                    My.Computer.FileSystem.CreateDirectory(folderPath)
                End If
                wkbk.SaveAs(filePath)
        Catch 
    
            Finally
                sheet = Nothing
                wkbk = Nothing 
    
                ' Close Excel.
                excelApp.Quit()
                excelApp = Nothing 
            End Try 
    
        End Sub 
    End Module
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using Excel = Microsoft.Office.Interop.Excel;
    
    namespace CreateExcelWorkbook
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] values = {4, 6, 18, 2, 1, 76, 0, 3, 11};
    
                CreateWorkbook(values, @"C:\SampleFolder\SampleWorkbook.xls");
            }
    
            static void CreateWorkbook(int[] values, string filePath)
            {
                Excel.Application excelApp = null;
                Excel.Workbook wkbk;
                Excel.Worksheet sheet;
    
                try
                {
                        // Start Excel and create a workbook and worksheet.
                        excelApp = new Excel.Application();
                        wkbk = excelApp.Workbooks.Add();
                        sheet = wkbk.Sheets.Add() as Excel.Worksheet;
                        sheet.Name = "Sample Worksheet";
    
                        // Write a column of values. 
                        // In the For loop, both the row index and array index start at 1. 
                        // Therefore the value of 4 at array index 0 is not included. 
                        for (int i = 1; i < values.Length; i++)
                        {
                            sheet.Cells[i, 1] = values[i];
                        }
    
                        // Suppress any alerts and save the file. Create the directory  
                        // if it does not exist. Overwrite the file if it exists.
                        excelApp.DisplayAlerts = false;
                        string folderPath = Path.GetDirectoryName(filePath);
                        if (!Directory.Exists(folderPath))
                        {
                            Directory.CreateDirectory(folderPath);
                        }
                        wkbk.SaveAs(filePath);
                }
                catch
                {
                }
                finally
                {
                    sheet = null;
                    wkbk = null;
    
                    // Close Excel.
                    excelApp.Quit();
                    excelApp = null;
                }
            }
        }
    }
    
  8. プロジェクトを保存します。

  9. Ctrl キーを押しながら F5 キーを押して、プロジェクトをビルドおよび実行します。 プログラム例で指定した場所 (C:\SampleFolder\SampleWorkbook.xls) に Excel ブックが作成されていることを確認します。

別のバージョンの Microsoft Office がインストールされているコンピューターにアプリケーションを発行するには

  1. Visual Studio で、このチュートリアルで作成したプロジェクトを開きます。

  2. [ビルド] メニューで、[CreateExcelWorkbook の発行] をクリックします。 発行ウィザードの手順に従って、アプリケーションのインストール可能なバージョンを作成します。 詳細については、「発行ウィザード (Visual Studio での Office 開発)」を参照してください。

  3. .NET Framework 4 および別のバージョンの Excel がインストールされているコンピューターに、アプリケーションをインストールします。

  4. インストールが完了したら、インストールしたプログラムを実行します。

  5. プログラム例で指定した場所 (C:\SampleFolder\SampleWorkbook.xls) に Excel ブックが作成されていることを確認します。

参照

処理手順

チュートリアル: マネージ アセンブリからの型の埋め込み (C# および Visual Basic)

関連項目

/link (Visual Basic)

/link (C# コンパイラ オプション)