注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。 このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。 簡単に参照できるように、こちらに 英語の記事 があります。
スクリプトの作成に習熟場合は、Microsoft JScript または Microsoft Visual Basic Scripting Edition (VBScript) のスクリプト言語を使用して、Microsoft Office InfoPath フォーム テンプレートにスクリプトを追加することができます。スクリプトを追加するだけでなくルール、数式、データの入力規則、条件付き書式を設定または使用可能なフォーム テンプレートをカスタマイズするのには有効にします。たとえば、作成し、フォーム テンプレートに基づくフォームでビューを切り替えるときに電子メール メッセージを送信するスクリプトを追加することができます。フォーム テンプレートを作成し、電子メール メッセージを送信するスクリプトを使用してのみを構成することができます。
この記事の内容
概要
[仕分けルール、数式、データの入力規則と条件付き書式を使用して、InfoPath フォーム テンプレートをカスタマイズできます。これらの機能は非常に柔軟なさまざまなタスクを処理することができますが、一部のタスクは、これらの機能の機能を超えています。たとえば、ユーザーは、フォームのテキスト ボックスに値を入力するときに、電子メール メッセージを送信するのにルールを使用することはできません。JScript または VBScript スクリプト言語を使用してスクリプトを作成するのには、これらの機能の機能の方法でフォーム テンプレート精通してカスタマイズする必要がある場合は、ユーザーが新しいフォームを開くか、元の変更を実行しているスクリプトを追加することができます。フォーム テンプレートに基づく isting フォームです。
フォーム テンプレートにスクリプトを追加するときに、InfoPath は Microsoft Script Editor (MSE) を追加、編集、およびフォーム テンプレートでスクリプトをデバッグすることを起動して、選択したイベントにカーソルを配置します。InfoPath では、スクリプトにイベント ハンドラーを自動的に追加します。イベント ハンドラーは、ユーザーの操作やフォームの XML データへの変更に応答する InfoPath フォーム テンプレートの関数コードです。たとえば、ユーザーが複数のネットワーク上の場所にフォームを保存する場合は、 OnSaveRequestイベント ハンドラーにスクリプトを追加することができます。ユーザー フォーム テンプレートに基づくフォームを保存するときに実行するスクリプトを追加するときに、InfoPath はスクリプト エディターが起動し、次のコードのいずれかのスクリプトに追加します。
注: InfoPath を追加する、コードは、選択したスクリプト言語によって異なります。
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnSaveRequest(eventObj) { // Write the code to be run before saving here. eventObj.IsCancelled = eventObj.PerformSaveOperation(); // Write the code to be run after saving here. eventObj.ReturnStatus = true; }
VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnSaveRequest(eventObj) ' Write the code to be run before saving here. eventObj.IsCancelled = eventObj.PerformSaveOperation ' Write the code to be run after saving here. eventObj.ReturnStatus = True End Sub
イベント ハンドラーを別のネットワークの場所にフォームを保存する、適切な場所にコードを追加することができます。ユーザーは、このフォーム テンプレートを基にフォームを保存、InfoPath OnSaveRequestイベント ハンドラー コードを実行します。
注: ここでは、フォーム テンプレートのスクリプトの作成の概要を説明します。詳細については、Microsoft スクリプト エディターと特定のオブジェクト、メソッド、イベント、および InfoPath では、使用するプロパティには、InfoPath 開発者用のリファレンスが参照してください。
InfoPath では、次のイベントの 1 つを除くすべてのイベント ハンドラーに自動的に追加します。
イベント ハンドラー |
説明 |
作成する手順 |
OnAfterChange |
このイベントは、ユーザーが指定したフィールドにバインド コントロールの値を変更した後に実行されます。たとえば、ユーザーがリスト ボックス コントロールのアイテムを選択した後、[HTML] 作業ウィンドウを表示できます。このイベントは、 OnValidateイベント後に実行されます。 |
フォーム テンプレートやデータ ソース] 作業ウィンドウ内のフィールドのコントロールを右クリックし、ショートカット メニューの [プログラム] をポイントし、 [後に変更のイベント] をクリックします。 |
OnAfterImport |
このイベントは、ユーザーは、1 つのフォームに、いくつかのフォームを結合する正常に完了した後に実行されます。 |
MSE を使用してスクリプト ファイルに直接OnAfterImportイベント ハンドラー宣言を手動で追加します。このイベントは、デザイン モードでは作成できません。 |
OnBeforeChange |
このイベントは、そのコントロールにバインドされている、指定したフィールドに値を追加する前に、ユーザーがコントロールの値を変更した後に実行されます。たとえば、ユーザーができないように繰り返しテーブルの最後の行を記入する前に、その他の行を追加できます。 |
フォーム テンプレートやデータ ソース] 作業ウィンドウ内のフィールドのコントロールを右クリックし、ショートカット メニューの [プログラム] をポイントにする前に変更イベント] をクリックします。 |
OnClick |
このイベントは、ユーザーがこのイベントに関連付けられているボタンをクリックしたときに実行されます。このイベントは、フォーム テンプレートにボタンを追加した後に使用します。たとえば、ユーザーがボタンをクリックしたときに、メインのデータ ソース内のフィールドに値を使用して、複雑な計算を行うことができます。 |
ボタンのコントロールをダブルクリックし、[ボタンのプロパティ] ダイアログ ボックスの [全般] タブで [フォーム コードの編集] をクリックします。 |
OnContextChange |
このイベントは、フォームにフォーカスが変更されたときに実行されます。たとえば、このイベントは、ユーザーがテキスト ボックスから日付の選択] に移動するとき、またはビューを切り替えるを実行します。このイベントは、その他のすべてのイベントが発生した後に発生します。 |
[ツール] メニュープログラミング] をポイントし、コンテキスト変更イベント] をクリックします。 |
OnLoad |
このイベントは、ユーザーが新しいフォームを作成するか、既存のフォーム テンプレートに基づくフォームを開くたびに実行されます。たとえば、ユーザーがフォームを開いたときは、メインのデータ ソースにセカンダリ データ ソースからアイテムの一覧をコピーすることができます。 |
[ツール] メニューで、プログラミング] をポイントし、[読み込み時のイベント] をクリックします。 |
OnMergeRequest |
このイベントは、フォーム テンプレートに基づくフォームの結合時に実行されます。たとえば、マージ操作中に状態をユーザーに与えるにマージされたフォームの数を表示することができます。 |
[ツール] メニューで、 [フォームのオプション] をクリックします。分類] 一覧で、[詳細設定をクリックします。フォームを結合するには、[、[ユーザー設定コードを使用して宛名差し込み] チェック ボックスを選択し、[編集] をクリックします。 |
OnSaveRequest |
このイベントは、ユーザー フォーム テンプレートに基づくフォームを保存するときに実行します。たとえば、ユーザーがフォームを保存すると、1 つ以上の場所には、このフォーム テンプレートを基にフォームを保存することができます。InfoPath では、このイベントに 2 つの追加のコード行を追加: フォームと別の行を保存する行では、InfoPath が正常にフォームを保存されているかどうか。 |
[ツール] メニューで、 [フォームのオプション] をクリックします。分類] 一覧で開くまたは保存する] をクリックします。保存の動作をするには、[、[ユーザー設定コードを使用して保存する] チェック ボックスを選択し、[編集] をクリックします。 |
OnSign |
このイベントは、ユーザーがフォームにデジタル署名を適用するときに実行されます。たとえば、ユーザーがそのとは、経費報告書フォームのデジタル署名に追加のデータを追加できます。 |
[ツール] メニューで、プログラミング] をポイントし、記号イベント] をクリックします。 |
OnSubmitRequest |
このイベントは、ユーザーがだれかのフォーム データを送信するときに実行します。たとえば、ユーザーが [ファイル] メニューの送信とフォームのデータをセキュリティで保護された Web サービスを送信できます。InfoPath がセキュリティで保護された Web サービス データ接続をサポートしていないためのセキュリティで保護された Web サービスと連携するユーザー設定のデータ接続を追加する必要があります。 |
[ツール] メニューで、 [送信オプション] をクリックします。このフォームを送信するユーザーを許可する]チェック ボックスをオン、コードを使用してユーザー設定の操作を実行するには、をクリックし、[コードの編集] をクリックします。 |
OnSwitchView |
このイベントは、ユーザー フォーム テンプレートに基づくフォームを開くときに実行されると、フォームに別の表示に切り替わります。たとえば、ユーザーは、特定のビューに切り替えときに、フォームのメインのデータ ソース内のフィールドからデータを含む電子メール メッセージを作成できます。 |
[ツール] メニューは、プログラミングをクリックし、 [スイッチ イベントの表示] をクリックします。 |
OnValidate |
このイベントは、ユーザーには、フィールドにバインドされたコントロールの値が変更されたときに実行されます。たとえば、ユーザーは、特定のコントロールの値を変更するときに、ユーザーが入力した番号とスクリプト内にある番号を使用して他のコントロールに新しい値を計算できます。このイベントは、 OnBeforeChangeイベント ハンドラーを実行した後に発生します。 |
フォーム テンプレートやデータ ソース] 作業ウィンドウ内のフィールドのコントロールを右クリックし、ショートカット メニューの [プログラム] をポイントの後に検証するイベント] をクリックします。 |
開こう |
このイベントは、ユーザーが既存のフォームを開くし、既存のフォームを使用するフォーム テンプレートのバージョン番号は、発行場所でフォーム テンプレートのバージョン番号より古いを実行します。既存のフォームを開くと、InfoPath は、既存のフォームに関連付けられているフォーム テンプレートのバージョン番号を確認します。フォーム テンプレートに新しいバージョン番号がある場合は、InfoPath は、ユーザーが既存のフォームを開くときに、 OnVersionイベント ハンドラーを実行します。たとえば、ユーザーが既存のフォームを開いた場合は、メインのデータ ソースに追加する新しいフィールドを追加するか、既存のフォーム テンプレートに新しいフィールドを追加して、再発行します。このイベントは、ユーザーが既存のフォームを開いたときに、メインのデータ ソースに新しいフィールドを追加します。 |
[ツール] メニューで、 [フォームのオプション] をクリックします。分類] 一覧では、バージョン管理をクリックします。バージョンにアップグレード] の一覧で、[ユーザー設定のイベントを使用する] をクリックし、[編集] をクリックします。 |
互換性に関する考慮事項
のブラウザー互換フォーム テンプレートにスクリプトを追加することはできません。フォームを InfoPath で入力、フォーム テンプレートにのみスクリプトを追加することができます。マネージ コードを使用してのみをブラウザー互換フォーム テンプレートをカスタマイズできます。
フォーム テンプレートのスクリプト言語を設定する
スクリプトを使用してフォーム テンプレートをカスタマイズするには、Microsoft JScript または Microsoft Visual Basic Scripting Edition (VBScript) のいずれかを使用することができます。既定では、InfoPath は JScript を使用してスクリプトを追加するように構成します。フォーム テンプレートにスクリプトやマネージ コードが含まれていない VBScript をスクリプト言語として使用したい場合は、フォーム テンプレートの vbscript スクリプト言語を変更できます。同じフォーム テンプレートでは、両方のスクリプト言語を使うことはできません。
フォーム テンプレートに 1 つの言語でのスクリプトが既に含まれている、必要に応じてその他の言語を使用する場合の他の言語にスクリプトを変換することができるように、既存のスクリプトを保存する必要が、フォーム テンプレートをフォームのオプションからスクリプトを削除します。ダイアログ ボックス、およびフォーム テンプレートに変換済みスクリプトを追加します。InfoPath では、新しいスクリプト言語にスクリプトを変換することはできません。フォームのオプション] ダイアログ ボックスでのスクリプト言語を変更すると、このフォーム テンプレートのみ適用されます。その他のフォーム テンプレートでは、既定のスクリプト言語として JScript があります。
-
[ツール] メニューで、 [フォームのオプション] をクリックします。
-
[分類] ボックスの [フォームのオプション] ダイアログ ボックスで、プログラミング] をクリックします。
-
フォーム テンプレートのコードの言語] ボックスの一覧で、プログラミング言語では、[ VBScript] をクリックします。
注:
-
スクリプト言語を設定すると、フォーム テンプレートの 1 つまたは複数のイベント ハンドラーを作成すると、フォーム テンプレートのスクリプト言語を変更することはできません。
-
Microsoft Visual Studio の 2005 Tools for Applications をインストールしている場合、既定の言語は、Microsoft Visual Basic .NET します。Vbscript スクリプト言語を変更するのには、この手順を使ってすることもできます。
-
メッセージを表示するには、イベントが発生するたびに
イベント ハンドラーの実行アクションまたはその他のイベントに応答する場合は、イベント ハンドラーが実行されるたびに、メッセージ ボックスを表示する一時コードを追加できます。イベント ハンドラーの実行時に確認するためだけコードを使用する必要があります。コードを追加した後は、このフォーム テンプレートに基づくフォームを表示するか、フォーム テンプレートを発行し、新しいフォーム テンプレートを作成するプレビューを使用することができます。いくつかのイベント ハンドラーでは、フォーム テンプレートを発行した後でフォームを作成する場合にのみを実行します。イベント ハンドラーを発生する可能性があると思われる操作を行うことができます。イベント ハンドラーが実行されると、メッセージ ボックスが表示されます。
操作を確認またはイベント イベント ハンドラーを実行すると、コードを削除し、[フォーム テンプレートのデザインを再開します。このコードを削除しない場合は、フォーム テンプレートを発行して、[イベント ハンドラーの実行時にユーザーはこのメッセージ ボックスを表示します。
-
イベント ハンドラーを追加します。
-
JScript のコードを追加するには、 XDocument.UI.Alert (「、イベント名のイベントを実行した」)を入力します。イベント ハンドラーの名前で置き換えます。たとえば、 OnValidateイベント ハンドラーにコードを追加する場合は、入力XDocument.UI.Alert ("[OnValidate イベント ハンドラー実行")。
-
VBScript にコードを追加、 OnSaveRequestイベント ハンドラーにコードを追加する場合、たとえば、 XDocument.UI.Alert (「、イベント名のイベントを実行した」)を入力、 XDocument.UI.Alert ("[OnSaveRequest イベント ハンドラー実行")を入力
-
コードをテストするには、[ファイル] メニューの [プレビュー ] をクリックしてまたは ctrl キーと shift キーを押しながら B キーを押して、イベントを開始できるユーザーの操作を行います。コード行のイベントが発生したときに、メッセージ ボックスは、メッセージを表示する必要があります。
注: 一部のイベントは、フォーム テンプレートを発行してイベントを開始するユーザーの操作を実行する前に、このフォーム テンプレートを基にフォームを作成する必要があります。
-
フォーム テンプレートを発行して、ユーザーがこのフォーム テンプレートに基づくフォームに入力できるようにする前に、メッセージ ボックスを表示するために使用する、コードを削除します。
ユーザー フォームのデータを保存するときに実行されるスクリプトを追加します。
-
[ツール] メニューで、 [フォームのオプション] をクリックします。
-
フォームのオプション] ダイアログ ボックスの [カテゴリ] ボックスの一覧で開くまたは保存する] をクリックします。
-
保存の動作をするには、[、[ユーザー設定コードを使用して保存する] チェック ボックスを選択し、[編集] をクリックします。OnSaveRequestイベント ハンドラーにカーソルを置いて、Microsoft Script Editor が起動します。
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnSaveRequest(eventObj) { // Write the code to be run before saving here. eventObj.IsCancelled = eventObj.PerformSaveOperation(); // Write the code to be run after saving here. eventObj.ReturnStatus = true; }VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnSaveRequest(eventObj) ' Write the code to be run before saving here. eventObj.IsCancelled = eventObj.PerformSaveOperation ' Write the code to be run after saving here. eventObj.ReturnStatus = True End Sub -
次のいずれか、または両方の操作を行います。
-
InfoPath でフォームを保存する前に実行するスクリプトを追加するには、コメントWrite the code to be run before saving here.コードに置き換えます。
-
InfoPath でフォームを保存した後に実行されるスクリプトを追加するには、コメントWrite the code to be run after saving here.コードに置き換えます。
-
-
変更内容をテストするには、[標準] ツール バーの [プレビュー] をクリックするか、Ctrl キーと Shift キーを押しながら B キーを押します。
注: イベント ハンドラーのフォーム テンプレートに基づくフォームを作成した後でのみ実行している場合は、[ファイル] メニューで、 [発行] をクリックして、フォーム テンプレートを発行し、発行ウィザードを完了します。フォーム テンプレートを発行した後は、フォームを作成し、イベント ハンドラーを実行するアクションを実行します。
ユーザーがフォーム データを送信するときに実行されるスクリプトを追加します。
-
[ツール] メニューで、 [送信オプション] をクリックします。
-
送信オプション] ダイアログ ボックスでは、このフォームを送信するユーザーを許可する]チェック ボックスを選択します。
-
コードを使用してユーザー設定の操作を実行するにはをクリックし、[コードの編集] をクリックします。OnSubmitRequestイベント ハンドラーにカーソルを置いて、Microsoft Script Editor が起動します。
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnSubmitRequest(eventObj) { // If the submit operation is successful, set // eventObj.ReturnStatus = true; // Write your code here }VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnSubmitRequest(eventObj) ' If the submit operation is successful, set ' eventObj.ReturnStatus = True ' Write your code here End Sub -
コメントIf the submit operation is successful, set eventObj.ReturnStatus = true Write your code hereコードに置き換えます。
-
変更内容をテストするには、[標準] ツール バーの [プレビュー] をクリックするか、Ctrl キーと Shift キーを押しながら B キーを押します。
ユーザーがボタンをクリックしたときに実行されるスクリプトを追加します。
-
ボタンを追加する新しいフォーム テンプレートのビューにし、ボタンをダブルクリックします。
注: 既存のボタン、スクリプトを追加する場合は、既存のボタンをダブルクリックします。
-
[全般] タブをクリックします。
-
フォームのコードを編集] をクリックします。ボタンのOnClickイベント ハンドラーにカーソルを置いて、Microsoft Script Editor が起動します。
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function Button Name::OnClick(eventObj) { // Write your code here }VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub Button Name_OnClick(eventObj) ' Write your code here End Sub -
コメントWrite your code hereコードに置き換えます。
-
変更内容をテストするには、[標準] ツール バーの [プレビュー] をクリックするか、Ctrl キーと Shift キーを押しながら B キーを押します。
既存のフォームを結合するときに実行されるスクリプトを追加します。
-
[ツール] メニューで、 [フォームのオプション] をクリックします。
-
[分類] ボックスの [フォームのオプション] ダイアログ ボックスで、[詳細設定] をクリックします。
-
フォームを結合するには、で、[フォームの結合を有効にする] チェック ボックスを選択します。
-
[ユーザー設定コードを使用して宛名差し込み] チェック ボックスを選択し、[編集] をクリックします。OnMergeRequestイベント ハンドラーにカーソルを置いて、Microsoft Script Editor が起動します。
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnMergeRequest(eventObj) { // Write the code that handles each form being merged here. XDocument.ImportDOM(eventObj.DOM); eventObj.ReturnStatus = true; }VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnMergeRequest(eventObj) ' Write the code that handles each form being merged here. XDocument.ImportDOM(eventObj.DOM) eventObj.ReturnStatus = True End Sub -
コメントWrite the code that handles each form being merged here. コードに置き換えます。
-
この場合は、コードをテストするには、[フォーム テンプレートを発行、このフォーム テンプレートに基づく、いくつかのフォームを作成する、フォーム テンプレートを結合し、します。
注: 詳細については、「参照」セクションで、フォーム テンプレートを発行へリンクを検索します。
既存のフォームを更新するスクリプトを追加します。
既に発行されているフォーム テンプレートを更新する、既存のフォーム テンプレートを基にフォームを更新する場合は、ユーザーが既存のフォームのいずれかを開くときに実行される更新されたフォーム テンプレートにスクリプトを追加できます。既存のフォームを開くと、InfoPath は発行場所にある場合は、その関連するフォーム テンプレートのバージョン番号を確認します。発行場所にあるフォーム テンプレートのバージョン番号を既存のフォームのバージョン番号よりも新しい場合は、それが更新されたことを示す InfoPath で実行されるコード既存のフォームを更新するには、このイベントです。
-
[ツール] メニューで、 [フォームのオプション] をクリックします。
-
[分類] ボックスの [フォームのオプション] ダイアログ ボックスで、バージョン管理] をクリックします。
-
バージョンにアップグレード] の一覧で、[ユーザー設定のイベントを使用する] をクリックし、[編集] をクリックします。イベント ハンドラーにカーソルを置いて、Microsoft Script Editor が起動します。
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnVersionUpgrade(eventObj) { // Write your code here }VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnVersionUpgrade(eventObj) ' Write your code here End Sub -
コメントWrite your code hereコードに置き換えます。
-
このイベントのコードをテスト、フォーム テンプレートを発行、複数のフォームを作成するのには、このフォーム テンプレートに基づくを変更して、フォーム テンプレートの更新バージョンを発行し、古いバージョンのこのフォーム テンプレートに基づく既存のフォームを開きます。
注: 詳細については、「参照」セクションで、フォーム テンプレートを発行へリンクを検索します。
その他のイベントのスクリプトを追加します。
フォーム テンプレートに次のイベント ハンドラーを追加するのには、この手順を使用できます。
-
OnAfterChange
-
OnBeforeChange
-
OnContextChange
-
OnLoad
-
OnSwitchView
-
OnSign
-
OnValidate
-
[ツール] メニューで、プログラミング] をポイントし、[イベント ハンドラーに追加するには、[イベント] をクリックします。選択したイベント ハンドラーにカーソルを置いて、Microsoft Script Editor が起動します。
-
コメントWrite your code hereコードに置き換えます。