ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

関数の実行とマクロの作成

MATLAB® 関数の配布が準備できていて、既に配布ツールでアドインと COM コンポーネントをビルド済みの場合、このワークフローに従い Function Wizard を使用して、ビルドされた COM コンポーネントを Microsoft Excel に組み込みます。この節のワークフローを効果的に実行するには、MATLAB からの Excel アドインの作成を実行しなければなりません。

Function Wizard では、MATLAB 関数のテスト、開発およびデバッグを繰り返し実行することもできます。このエンドツーエンド ワークフローの使用では、配布用の MATLAB 関数が開発中であることを想定しています。このワークフローの詳細な説明は、MATLAB 関数のエンドツーエンド配布を参照してください。

詳細は関数配布ワークフローの選択を参照してください。

エンド ユーザーの主なタスク

タスク参照
1. Function Wizard のインストール。Function Wizard のインストール
2. Function Wizard の起動。Function Wizard の起動
3. ビルドされた COM コンポーネントを Microsoft Excel に組み込むオプションの選択。配布準備が完了している MATLAB 関数のワークフロー選択
4. プロトタイプを作成する新規の MATLAB 関数を Function Wizard に追加し、入力と出力の範囲を設定して定義。実行の準備ができている関数の定義
5. MATLAB 関数を Function Wizard で実行してテスト。関数の実行
6. マクロを作成。マクロの作成
7. 作成したマクロを Function Wizard を使用して実行。マクロの実行
8. オプションで、COM コンポーネントを使用して生成した Microsoft® Visual Basic® コードを検証または変更。オプションで、作成したマクロを GUI ボタンに登録。Microsoft Visual Basic コード アクセス (オプションの詳細タスク)

Function Wizard でできること

Function Wizard によって、Microsoft Excel® (Excel 2000 以降) ワークシートの値をコンパイルされた MATLAB モデルに渡し、その後モデルの出力をワークシートのセルまたはセル範囲に返すことができます。

Function Wizard は Excel ワークシートに直感的なインターフェイスを提供します。Microsoft Visual Basic for Applications (VBA) プログラミングの事前知識は必要ありません。

Function Wizard は範囲選択などのワークシート上で行う変更をすべて反映します。Function Wizard は MATLAB 関数からワークシートへのデータの配置と出力の制御にも使用されます。

メモ

Function Wizard は現在 MATLAB sparse および complex データ型をサポートしていません。

Function Wizard のインストール

Function Wizard を使用する前に、まず Microsoft Excel からアクセス可能なアドインとしてインストールしなければなりません。

Function Wizard をインストールした後、使用可能な Microsoft Excel アドイン ボタンとして [MATLAB 関数] エントリが表示されます。

Microsoft Excel 2010 以降のバージョンの Excel を使用する場合

  1. [ファイル] タブをクリックします。

  2. 左側のナビゲーション ペインで、[オプション] を選択します。

  3. [Excel のオプション] ダイアログ ボックスの左側のナビゲーション ペインで、[アドイン] を選択します。

  4. [管理] のドロップダウンから、[Excel アドイン] を選択し、[設定] をクリックします。

  5. [アドイン] ダイアログ ボックスで、[参照] をクリックします。

  6. matlabroot/toolbox/matlabxl/matlabxl/arch に移動し、FunctionWizard2007.xlam を選択します。[OK] をクリックします。

  7. Excel [アドイン] ダイアログで、[MATLAB Compiler Function Wizard] エントリが選択されていることを確認します。[OK] をクリックします。

これで、Microsoft Excel リボンの [ホーム] タブには Function Wizard のタイルが含まれているはずです。Function Wizard がインストールされた Microsoft Office リボンの [ホーム] タブを参照してください。

Excel 2007 を使用する場合

  1. まだ実行していない場合は、Microsoft Excel を起動します。

  2. [Office] ボタン () をクリックし、[Excel のオプション] を選択します。

  3. [Excel のオプション] ダイアログ ボックスの左側のペインで、[アドイン] をクリックします。

  4. [Excel のオプション] ダイアログ ボックスの右側のペインで、[管理] ドロップダウン ボックスから [Excel アドイン] を選択します。

  5. [移動] をクリックします。

  6. [参照] をクリックします。matlabroot\toolbox\matlabxl\matlabxl\arch に移動し、FunctionWizard2007.xlam を選択します。[OK] をクリックします。

  7. Excel [アドイン] ダイアログ ボックスで、[MATLAB Compiler Function Wizard] エントリが選択されていることを確認します。[OK] をクリックします。

Excel 2003 を使用する場合

  1. Excel メイン メニューから [ツール][アドイン] を選択します。

  2. Function Wizard が以前にインストールされていた場合、[MATLAB Compiler Function Wizard] がリストに表示されます。項目を選択し、[OK] をクリックします。

    Function Wizard が以前にインストールされていなかった場合、[参照] をクリックし matlabroot\toolbox\matlabxl\matlabxl フォルダーに移動します。FunctionWizard.xla を選択します。[OK] をクリックし、続行します。

Function Wizard の起動

Function Wizard を以下のいずれかの方法で起動します。ウィザードが初期化されると、[Function Wizard Start Page] ダイアログ ボックスが表示されます。

Microsoft Excel 2007 以降のバージョンの Excel を使用する場合

Microsoft ExcelMicrosoft Office リボンで、[ホーム] タブから [関数ウィザード] を選択します。

Function Wizard がインストールされた Microsoft Office リボンの [ホーム] タブ

[ファイル] タブからも Function Wizard にアクセスできます。

  1. Excel のメイン メニューから [ファイル][オプション][アドイン] を選択します。

  2. [Function Wizard] を選択します。

[Function Wizard Start Page] ダイアログ ボックス

配布準備が完了している MATLAB 関数のワークフロー選択

Function Wizard をインストールして起動した後、次を行います。

  1. [Function Wizard Start Page] から、[I have an Add-in component that was built in MATLAB with the Deployment Tool that I want to integrate into a workbook] を選択します。

  2. [OK] をクリックします。[Add Function] ボタンが有効になっている状態で [Function Wizard Control Panel] が開きます。

    配布の準備ができている MATLAB 関数を操作するための [Function Wizard Control Panel]

ヒント

[Function Wizard Start Page] に戻るには、[Start Over] をクリックします。

実行の準備ができている関数の定義

  1. 実行する関数を Function Wizard に定義します。[Function Wizard Control Panel] の [Set Up Functions] エリアで [Add Function] をクリックします。[MATLAB Components] ダイアログ ボックスが開きます。

  2. [MATLAB Components] ダイアログ ボックスの [Available Components] エリアでコンポーネントの名前 (xlmagic) をドロップダウン ボックスから選択します。

  3. 実行する関数 (mymagic) を [Functions for Class xlmagic] というラベルが付いたボックスから選択します。

  4. Add Function をクリックします。[Function Properties] ダイアログ ボックスが開きます。

    ヒント

    [Function Properties] ダイアログ ボックス内の [Function Syntax and Help] エリアに、MATLAB 関数内の最初のヘルプ テキスト行 ("H1 行" と呼ばれることもある) が表示されます。[Function Properties] ダイアログ ボックスにこれらのコメントを表示すると、新規またはなじみのない MATLAB 関数をエンド ユーザーに配布するときに役に立ちます。

  5. 入力引数プロパティを次のように定義します。

    1. [Input] タブで、[Set Input Data] をクリックします。[Input Data for n] ダイアログ ボックスが開きます。

    2. 適切なオプションを選択し、値を入力して [Range] または [Value] を指定します。引数が "構造体配列" ("構造体") を参照している場合、[This is a MATLAB structure array argument] オプションを選択します。構造体配列のフィールドへの範囲と値の割り当ての詳細については、構造体配列の取り扱いを参照してください。

      注意

      矢印キーを使用して範囲を選択しないでください。範囲選択に矢印キーを使用しなければならない場合、Microsoft のサイト (https://support.microsoft.com/kb/291110) にある必要な修正を適用してください。

      メモ

      Microsoft Excel でスプレッドシートのデータが変わるたびに強制的に自動再計算を実行するには、[Auto Recalculate on Change] オプションを選択します。

    3. [OK] をクリックします。

    ヒント

    Excel アドイン用 MATLAB Compiler™ による空白セル (またはデータを含まないセル) の処理方法を指定するには、空のセルの値の制御を参照してください。

  6. 出力引数プロパティを以下のように定義します。

    1. [Output] タブで、[Set Output Data] をクリックします。[Output Data for y] ダイアログ ボックスが表示されます。ここで、y はプロパティを定義する出力変数の名前です。

      ヒント

      また、MATLAB Compiler がデータを自動的にサイズ変更 ([Auto Resize])、転置 ([Transpose])、あるいは日付形式でデータを出力 ([Output as date]) するように指定できます。これを行うには、[Argument Properties for y] ダイアログ ボックスで適切なオプションを選択します。

    2. [Range] を指定します。あるいは、Excel のシートでセル範囲を選択すると [Range] フィールドに範囲が入力されます。

      注意

      矢印キーを使用して範囲を選択しないでください。範囲選択に矢印キーを使用しなければならない場合、Microsoft のサイト (https://support.microsoft.com/kb/291110) にある必要な修正を適用してください。

    3. まだ選択されていない場合は [Auto Resize] を選択します。

    4. [Output Data for y] ダイアログ ボックスで [Done] をクリックします。

    5. [Function Properties] ダイアログ ボックスで [Done] をクリックします。

これで、[Function Wizard Control Panel] の [Active Functions] リストに mymagic が表示されます。

空のセルの値の制御

MATLAB Compiler による空のセルの処理方法を指定し、未定義また表現されないデータ値 (たとえば、NaN) を割り当てることができます。

空のセルの処理方法を指定するには、次を行います。

  1. [Input Data for N] ダイアログ ボックスで [Options] をクリックします。

    [Input Conversion Options] ダイアログ ボックスが開きます。

  2. [Treat Missing Data As] ドロップダウン ボックスをクリックします。

  3. 空のセルの処理方法に応じて、[Zero] または [NaN (Not a Number)] のいずれかを指定します。

構造体配列の取り扱い

構造体配列内のフィールドに範囲を割り当てるには、次を行います。

  1. まだ行っていない場合は、[Input Data for n] ダイアログ ボックスの [This is a MATLAB structure array argument] を選択して [OK] をクリックします。

    [Input Data for Structure Array Argument n] ダイアログ ボックスが開きます。

  2. Function Wizard は、入力と出力の両方に対して、要素単位あるいは面によって整理されたベクトルおよび 2 次元構造体配列をサポートしています。

    [Input Data for Structure Array Argument n] ダイアログ ボックスで、次を行います。

    1. [Structure Array Organization] エリアで、[Element by Element Organization] または [Plane Organization] を選択します。

    2. [Add Field] をクリックして構造体配列引数ごとにフィールドを追加します。[Field for Structure Array Argument] ダイアログ ボックスが開きます。

  3. [Field for Argument] ダイアログ ボックスで、次を行います。

    1. [Name] フィールドでフィールド名を定義します。指定する [Name] は MATLAB 関数内の構造体配列のフィールド名と一致しなければなりません。

    2. フィールドの [Range] を指定します。

      注意

      矢印キーを使用して範囲を選択しないでください。範囲選択に矢印キーを使用しなければならない場合、Microsoft のサイト (https://support.microsoft.com/kb/291110) にある必要な修正を適用してください。

    3. [Done] をクリックします。

構造体配列のサポート方法-  MATLAB Compiler は 1 次元および 2 次元 MATLAB 構造体配列をサポートします。

渡されたデータは "要素別の整理" または "面による整理" が使用された構造体配列に変換されます。構造体を含むすべての MATLAB データ型についての詳細は、『MATLAB プログラミングの基礎』を参照してください。

構造体配列を入力および出力として配布-  構造体配列を入力引数または出力引数としてもつ MATLAB 関数を MATLAB プログラマが配布する場合、Function Wizard を使用して Microsoft Excel マクロをビルドし、Excel アドインおよび COM コンポーネントと共にエンド ユーザーに渡します。それができない場合は、エンド ユーザーに以下を知らせます。

  • 構造体配列である引数

  • 構造体配列のフィールド名

マクロを構造体配列と共に使用-  Excel アドイン用 MATLAB Compiler のマクロ生成機能は、構造体配列を入力引数または出力引数として扱います。MATLAB 関数の配布の準備ができている場合は、マクロの作成を参照してください。Function Wizard を使用して MATLAB 関数を最初から作成する場合は、Function Wizard を使用した Microsoft Excel アドインとマクロの作成を参照してください。両方のワークフローに関する詳細は、関数配布ワークフローの選択を参照してください。

関数の実行

[Function Wizard Control Panel] の [Execute Functions] エリアで、[Execute] をクリックして mymagic を実行します。Excel シートのセル A1:E5 には自動的に mymagic (5 次元の魔方陣) の出力が入力されます。

マクロの作成

引き続き同じ例で、[Function Wizard Control Panel] を使用して Microsoft Excel マクロを作成します。

  1. コントロール パネルの [Create Macros] エリアで、[Macro Name] フィールドに mymagic を入力します。

  2. [Store Macro] ドロップダウン ボックスでマクロの保存場所を選択します。

  3. [Description] フィールドにマクロの機能の簡単な説明を入力します。

  4. [Create Macro] をクリックします。

    現在の Excel ワークブックにマクロが作成されます。

マクロの実行

まずセル A1:E5 (関数の実行で実行した魔方陣関数の出力を含む) をクリアした後、以下のいずれかを行って、マクロの作成で作成したマクロを実行します。

ヒント

Microsoft Excel でマクロを実行する前に適切なセキュリティ設定を有効にしなければならない場合があります。マクロの権限と関連するエラー メッセージの詳細については、付録エラーと解決策を参照してください。

Excel 2007 以降のバージョンの Excel を使用する場合

  1. Microsoft Excel[表示]、[マクロ]、[マクロの表示] をクリックします。

  2. [マクロ名] ドロップダウン ボックスから mymagic を選択します。

  3. [実行] をクリックします。Excel シートのセル A1:E5mymagic の出力が自動的に入力されます。

Excel 2003 を使用する場合

  1. Microsoft Excel で、[ツール]、[マクロ]、[マクロ] をクリックします。

  2. [マクロ名] ドロップダウン ボックスから mymagic を選択します。

  3. [実行] をクリックします。Excel シートのセル A1:E5mymagic の出力が自動的に入力されます。

Microsoft Visual Basic コード アクセス (オプションの詳細タスク)

ユーザーにプログラミングの専門知識があるか、または Excel 開発者が対応可能かどうかに応じて、オプションで Visual Basic コードにアクセスするか、修正を行う場合があります。必要な場合は、以下の手順に従います。

Excel メイン ウィンドウから以下のいずれかを行い、Microsoft Visual Basic Editor を開きます。[ツール][マクロ][Visual Basic エディター] を選択します。

Excel 2007 以降のバージョンの Excel を使用する場合

  1. [開発]、[Visual Basic] をクリックします。

  2. Visual Basic Editor が開いたら、[プロジェクト - VBAProject] ウィンドウで VBAProject (mymagic.xls) をダブルクリックして開きます。

  3. Modules フォルダーを展開し、Matlab Macros モジュールをダブルクリックします。

    これにより、このプロジェクトのコードの Visual Basic コード ウィンドウが開きます。

Excel 2003 を使用する場合

  1. [ツール]、[マクロ]、[Visual Basic エディター] をクリックします。

  2. Visual Basic Editor が開いたら、[プロジェクト - VBAProject] ウィンドウで VBAProject (mymagic.xls) をダブルクリックして開きます。

  3. Modules フォルダーを展開し、Matlab Macros モジュールをダブルクリックします。

    これにより、このプロジェクトのコードを表示した VB コード ウィンドウが開きます。

GUI ボタンまたはコントロールへのマクロのマッピング (オプション)

マクロを GUI ボタンに登録するには、次を行います。

  1. [開発]、[挿入] をクリックします。

  2. [フォーム コントロール] メニューから、[ボタン (フォーム コントロール)] アイコンを選択します。

    ヒント

    [フォーム コントロール] メニューの上にマウスを置くと、さまざまなコントロールのラベルを表示できます。

  3. [マクロの登録] ダイアログ ボックスで、GUI ボタンに登録するマクロを選択し、[OK] をクリックします。

ボタンへのマクロの登録

詳細情報

目的参照先
  • 基本的な MATLAB プログラマ タスクを実行

  • 配布製品が MATLAB 関数をどのように処理するかを理解

  • 配布製品がどのように連携して動作するかを理解

  • 配布可能 MATLAB コード記述についてのガイドラインを確認

配布可能な MATLAB コードの記述
アドインと COM コンポーネントのビルドについてより多くの例を確認MATLAB 関数からのマクロの作成
Microsoft Visual Basic コードを変更することにより、ビルドした COM コンポーネントをカスタマイズし統合する方法を学ぶVisual Basic アプリケーションを使用したコンポーネントの統合