Microsoft Windows スクリプト テクノロジ

トピック

JScript
インターネット向けに特別に開発された Microsoft の強力なスクリプト言語です。JScript.NET は Microsoft の ECMA 262 規格に準拠した次世代の言語です。ECMAScript Edition 4 と併せて現在開発が進められている JScript.NET では、完全コンパイル済みコード、型付き変数および型なし変数、クラス (継承、関数のオーバーロード、プロパティ アクセサなど)、パッケージ、クロス言語のサポート、.NET Frameworks へのアクセスなど、さまざまな改良が組み込まれています。
VBScript
Microsoft Visual Basic Scripting Edition を使用すると、Microsoft Internet Explorer での Web クライアントのスクリプトや、Microsoft Internet Information Services での Web サーバー スクリプトといった、アクティブなスクリプトを、さまざまな環境で利用できます。
Script ランタイム
Dictionary オブジェクトは、PERL 関連の配列と同じです。項目はデータの任意の形式で配列に保存されます。各項目には、項目を一意に識別するためのキーが関連付けられます。キーは、それぞれの項目を取り出すときに使用されます。キーは、配列以外の値を使用します。通常では整数値または文字列を使用します。

FileSystemObject (FSO) オブジェクト モデルは、使い慣れた object.model 構文と豊富なプロパティ、メソッドおよびイベントの種類を使用してファイルおよびフォルダを処理できます。

スクリプト エンコーダは、スクリプト設計者のためのシンプルなコマンド ライン ツールです。このツールを使用すると、作成したスクリプトをエンコードし、Web ホストや Web クライアントによりスクリプトのソースが表示されたり変更されないように保護できます。

Windows スクリプト コンポーネント
Microsoft® Windows®スクリプト コンポーネントは、VBScript (Microsoft® Visual Basic® Scripting Edition) および Microsoft® JScript® を使用して、パワフルで再利用可能な COM コンポーネントを簡単に作成できます。
Windows Script Host
Microsoftｮ Windowsｮ Script Host (WSH) は、WSH 互換のスクリプト エンジンで使用できる言語に依存しないスクリプト ホストです。
Windows Script Interfaces
Microsoft Windows Script Interfaces は、アプリケーションにスクリプトおよび OLE オートメーション機能を追加する新しい方法を提供します。

参 照

Microsoft Windows スクリプト テクノロジ ホーム ページ
Microsoft のスクリプト テクノロジに関するあらゆる情報を網羅しているサイトです。JScript、VBScript、Windows Script Host、Windows Script Components、リモート スクリプティング、スクリプト コントロール、および Script Debugger に関する詳細なドキュメントがあります。JScript および VBScript の最新版をダウンロードできるほか、それ以外の Microsoft スクリプト テクノロジの更新情報や拡張機能をダウンロードできます。

© 2001 Microsoft Corporation. All rights reserved.


JScript

JScript

JScript ユーザーズ ガイド

Internet Explorer での JScript の使用

JScript ランゲージ リファレンス


JScript ユーザーズ ガイド

JScript の基本

高度な JScript


JScript の基本

JScript の概要

JScript コードの記述

JScript の変数

JScript のデータ型

JScript 演算子

演算子の優先順位

JScript のプログラム フロー制御

条件コンパイル

条件コンパイル変数

JScript の関数

JScript のオブジェクト

組み込みオブジェクト

独自のオブジェクトの作成

JScript の予約語


JScript の概要

Microsoft® JScript® (以下 JScript) は、Microsoft による ECMA 262 規格仕様の言語 (ECMAScript Edition 3) です。以前のバージョンとの互換性を含むいくつかの例外事項を除いては、JScript は ECMA 規格に完全に準拠しています。この概要は、これから JScript を使い始めるユーザーを対象としています。

JScript の使用

JScript は、オブジェクトを基本とするスクリプト言語で、インタープリタにより実行されます。C++ 言語のような完全なオブジェクト指向言語と比べると若干機能が少ないものの、その使用目的を考えると十分な機能が用意されています。

JScript は、ほかの言語の一部分を取り出したものではなく (Java 言語とも直接的な関連はありません)、別の言語の簡易版でもありません。ただし、JScript には注意するべき制限事項があります。たとえば、JScript だけでは、独立したアプリケーションを記述することはできません。また、ファイルの読み書きの機能も用意されていません。JScript スクリプトは、ASP (Active Server Pages)、Internet Explorer、または Windows Script Host のように、インタープリタのあるところか "ホスト" でしか実行できません。

JScript は、型に関する制限の緩い言語です。つまり、変数のデータ型を明示的に宣言する必要がなく、実際には JScript では、データ型を明示的に作成することができません。また、通常は、適切な型変換が自動的に行われます。たとえば、文字列と数値を加算しようとすると、数値が文字列に変換され、文字列の連結が行われます。

このユーザーズ ガイドでは、JScript の各種機能の概要を説明しています。言語体系の詳細については、「JScript ランゲージ リファレンス」を参照してください。

メモ 次のコードでは、実際の Web ページで見るコードに比べ、より簡潔にすることで理解しやすくしています。また、概念を主に説明するので、最適なコーディング方法やコーディング スタイルについての説明は省略しています。実際にコードを記述するときには、読みやすくわかりやすいコードを記述するようにしてください。


JScript コードの記述

Microsoft® JScript® (以下 JScript) では、一般のプログラミング言語と同様にテキスト形式でコードを記述します。コードには、各種ステートメント、互いに関連する一連のステートメントが集められたブロック、およびコメントが含まれます。ステートメント内では、変数、文字列や数値などのリテラルと呼ばれるデータ、および式を使用できます。

ステートメント

JScript プログラムは、ステートメントの集合です。JScript ステートメントは、主語や動詞、目的語などで構成される英語の文章と同ようなものです。JScript ステートメントでは、式を組み合わせることによって 1 つのタスク全体を実行します。

ステートメントには、1 つ以上の式、キーワード、または演算子 (記号) が含まれます。ステートメントは複数行にわたって記述することも可能ですが、通常は 1 行で記述します。また、セミコロンを使用すると、同じ行に複数のステートメントを記述することもできます。通常、新しい行に移ると、新しいステートメントの開始になります。ステートメントの終わりを明示的に記述することをお勧めします。ステートメントの終わりを明示的に記述するには、ステートメントの最後にセミコロン (;) を記述します。JScript では、セミコロン (;) は終了文字を表します。次に JScript ステートメントの例を 2 つ示します。

aBird = "Robin"; // 変数 aBird に "Robin" を代入します。
var today = new Date(); // 変数 today に今日の日付を代入します。

複数の JScript ステートメントを中かっこで囲むと、かっこ内の一連のステートメントがまとめられてブロックとなります。ブロックにまとめられたステートメントは、通常、1 つのステートメントとして扱われます。つまり、1 つのステートメントで記述すべきほとんどの場所で、ブロックを使用できます。ただし、for ループや while ループのヘッダーは例外です。ブロック内の構成要素となる個々のステートメントはセミコロンで終了しますが、ブロックそのものは終了しません。

通常、ブロックは関数や条件処理などで使用します。C++ やその他の言語とは異なり、JScript ではブロックは新しいスコープとは見なされません。新しいスコープは、関数でのみ作成されます。次のコード例では、最初のステートメントで関数定義を開始し、その後の 5 つのステートメントのブロックで関数を定義しています。次に示す中かっこで囲まれていない最後の 3 つのステートメントは、ブロックではありません。また、関数定義の一部分でもありません。

function convert(inches) {
   feet = inches / 12; // ここの 5 つのステートメントは、1 つのブロックに入れられています。
   miles = feet / 5280;
   nauticalMiles = feet / 6080;
   cm = inches * 2.54;
   meters = inches / 39.37;
}
km = meters / 1000; // ここの 3 つのステートメントは、ブロックに入れられていません。
kradius = km;
mradius = miles;

コメント

JScript の単一行コメントは、2 つのスラッシュ (//) で始まります。次に 1 行コメントの例を示します。

aGoodIdea = "Comment your code thoroughly."; // これは単一行コメントです。

複数行コメントは、スラッシュとアスタリスク (/*) で始まり、その 2 つを逆に組み合わせた記号 (*/) で終わります。

/*
これは、1 つ前のコードのステートメントを説明する複数行コメントです。

このステートメントは、変数 aGoodIdea に値を代入しています。このような引用符で
囲まれた値は、リテラルと呼ばれます。リテラルは、情報を間接的に参照するタイプの
ものではありません。リテラルには、情報が明示的かつ直接的に入れられています
(引用符は、リテラルの一部ではありません)。
*/
メモ 複数行コメントを他の複数行コメント内に単純に埋め込むと、JScript では正しく解釈されません。埋め込んだ複数行コメントの終わりを示す */ が、複数行コメント全体の終わりとして解釈されてしまうからです。埋め込まれた複数行コメントに続く残りのコメント部分が、コメントとしてではなく JScript のコードとして解釈され、構文エラーが発生します。

コメントを記述する場合は、単一行コメントのブロックとして記述することをお勧めします。これにより、複数行コメントを使って、コードの大きなセグメントを後からコメント アウトできます。

// これは、単一行コメントをいくつも使用するという、別の形で記述された複数行コメントです。
// ステートメントが実行された後は、次に示すステートメントのように、変数 aGoodIdea の内容
// を名前を指定して参照することができます。このステートメントは、文字列の連結によって
// 変数 aGoodIdea に文字列リテラルを追加し、新しい変数を作成しています。

var extendedIdea = aGoodIdea + "いつコードの内容を解析しなければならなくなるかもしれません。";

代入と等価比較

JScript では、等号 (=) は、変数に値を代入する処理に使用し、代入演算子と呼ばれます。= 演算子の左側のオペランドは Lvalue です。次に Lvalue の例を示します。

  • 変数
  • 配列要素
  • オブジェクトのプロパティ

= 演算子の右側のオペランドは Rvalue です。Rvalues には、式の値を含む、あらゆる型の任意の値を指定できます。次に JScript の代入ステートメントの例を示します。

anInteger = 3;

JScript のコンパイラでは、このステートメントは、"3 という値を変数 anInteger に代入する" または "anInteger の値は 3 になる" という意味として処理されます。

= 演算子 (代入) と == 演算子 (等価) は、それぞれ別の意味を示しています。2 つの値が等しいかどうかを調べる場合は、2 つの等号を続けて (==) 使用します。詳細については、「JScript のプログラム フロー制御」を参照してください。

式

JScript では、インタープリタが評価して値を生成できる構造の句を式と言います。値には JScript で有効なすべての型 (数値、文字列、オブジェクトなど) を指定できます。最も簡潔な式はリテラルです。次に、JScript のリテラルの式の例を示します。

3.9                       // 数値リテラルです。
"Hello!"               // 文字列リテラルです。
false                     // ブール値リテラルです。
null                      // リテラルはヌル値です。
{x:1, y:2}                // オブジェクト リテラルです。
[1,2,3]                   // 配列リテラルです。
function(x){return x*x;}  // 関数リテラルです。

より複雑な式では、変数、関数呼び出し、その他の式も含むことができます。式をまとめることで、演算子を使用したさらに複雑な式を作成できます。次に演算子の例を示します。

+  // 追加
-  // 減算
*  // 乗算
/  // 除算

次に JScript の複雑な式の例を示します。

var anExpression = 3 * (4 / 5) + 6;
var aSecondExpression = Math.PI * radius * radius;
var aThirdExpression = aSecondExpression + "%" + anExpression;
var aFourthExpression = "(" + aSecondExpression + ") % (" + anExpression + ")";


JScript の変数

すべてのプログラム言語では、概念を調べるためにデータが使用されます。

How old am I?

JScript では、変数はその概念に付けた名前であり、インスタンスでの値を表します。変数を使用する場合、実際にはその変数が表すデータを使用しています。次に例を示します。

NumberOfDaysLeft = EndDate – TodaysDate;

機械的に変数を使用して、スクリプト内に表示されるすべての異なる値を保存、取得、および操作できます。変数によって表される値や内容を把握しやすい名前を作成すること、スクリプト内で実際に変数を使用する際に理解しやすく便利です。

変数の宣言

変数は、宣言としてスクリプトの最初に表示されます。このように変数を最初に宣言することによってメモリに設定されるため、スクリプト内で後から参照することができます。変数は使用する前に宣言するのが一般的です。宣言には、var キーワードを使用します。

var count;  // 単一の宣言です。
var count, amount, level;  // 1 つの var キーワードで複数の宣言をします。
var count = 0, amount = 100;  // 1 つのステートメントで変数宣言と初期化を行います。

var ステートメントで初期化を実行しなかった場合、変数は自動的に undefined に設定されます。JScript では、宣言ステートメントから var キーワードを省略することが許されていますが、このような構文には安全性の面で問題があります。宣言で var キーワードを省略すると、変数の被参照可能範囲は JScript のインタープリタによってグローバル スコープに設定されます。プロシージャ レベルで変数を宣言する場合、グローバル スコープでの参照が可能なよう設定することはありません。このような場合は、var キーワードを使用して変数宣言を行う必要があります。

変数の名前付けの制限

変数名は、識別子として使用されます。JScript では、次のような目的で識別子を使用できます。

  • 変数の名前付け
  • 関数の名前付け
  • for ループのラベル付け

JScript では、大文字と小文字は区別されます。したがって、変数名 myCounter は、変数名 MYCounter とは異なるものとして識別されます。変数名の長さに制限はありません。次に、変数を作成する場合の規則を示します。

  • 先頭文字は、ASCII 文字 (大文字でも小文字でもかまいません)、またはアンダースコア (_) 文字にします。先頭文字として数値を使用することはできません。
  • 2 文字目以降の文字には、英字、数字、アンダースコア (_) を使用できます。
  • 予約語は変数名に使用できません。

有効な変数名の例を次に示します。

_pagecount
Part9
Number_Items

無効な変数名の例を次に示します。

99Balloons // 先頭に数字を使用することはできません。
Smith&Wesson // アンパサンド (&) は、変数名には使用できません。

変数を宣言して初期化し、特定の値を指定しない場合は、JScript の値に null を代入します。次に例を示します。

var bestAge = null;
var muchTooOld = 3 * bestAge; // muchTooOld の値には 0 が格納されます。

何も値を代入しないで変数を宣言することもできます。ただし、JScript の値は undefined になります。次に例を示します。

var currentCount;
var finalCount = 1 * currentCount; // currentCount は未定義の状態なので、finalCount の値には NaN が格納されます。

JScript における null と undefined の主な違いは、null は数値の 0 のように動作するのに対して、undefined は特殊な値 NaN (非数 : Not a Number) のように動作する点です。null 値と undefined 値は、通常、等しい値として扱われます。

宣言ステートメント内で var キーワードを使用しないで変数を宣言し、値を代入することもできます。これを暗黙の宣言と呼びます。

noStringAtAll = ""; // 変数 noStringAtAll は、暗黙のうちに宣言されたことになります。

宣言されていない変数を参照することはできません。

var volume = length * width; // エラーです。length および width はまだ宣言されていません。

型の自動変換

JScript インタープリタでは、オペランドのデータ型が同じ場合にだけ式を評価できます。型の自動変換をせずに、2 つの異なるデータ型 (数値と文字列など) で演算を実行しようとする式では、エラーが発生します。しかし、JScript にはこのような制限はありません。

JScript は、型に関する制限の緩やかな言語です。C++ のような型に関する制限の厳しい言語と違い、変数にはあらかじめ決められた型はありません。その代わり、JScript の変数には、その変数に含まれる値の型に相当する型が指定されます。このような動作により、型にとらわれることなく自由に値を扱うことができます。

JScript では、JScript インタープリタが例外として処理するような異種データ間演算も問題なく記述できます。JScript のインタープリタでは、このような状況に対処するため、自動的にデータの型を変更してから演算を実行します。次に例を挙げて説明します。

演算 | 結果
数値と文字列の加算 | 数値が文字列に変換されます。
ブール値と文字列の加算 | ブール値が文字列に変換されます。
数値とブール値の加算 | ブール値が数値に変換されます。

次に例を示します。

var x = 2000;      // 数値です。
var y = "Hello";   // 文字列です。
x = x + y;         // 数値は文字列に強制変換されます。
document.write(x); // 出力は、2000Hello となります。

文字列を明示的に整数に変換するには、parseInt メソッドを使用します。文字列を明示的に数値に変換するには、parseFloat メソッドを使用します。文字列は、比較の場合は自動的に相当する数値に変換されますが、加算の場合は文字列のままで処理されます。


JScript のデータ型

JScript には、3 つの主要なデータ型、2 つの複合データ型、および 2 つの特殊データ型があります。

直接の構成要素となる主要データ型を次に示します。

  • String (文字列)
  • Number (数値)
  • Boolean (ブール値)

参照データの型となるデータ型を次に示します。

  • Object (オブジェクト)
  • Array (配列)

特殊データ型を次に示します。

  • Null (ヌル)
  • Undefined (未定義)

文字列型

文字列値は、0 個以上の Unicode 文字 (英字、数字、および句読点) strung をつなぎ合わせたものです。文字列のデータ型を使用して JScript でテキストを表示できます。文字列リテラルは、シングル クォーテーション (') またはダブル クォーテーション (") でそれらを囲むことによって、スクリプト内で使用できます。ダブル クォーテーションの記号そのものは、シングル クォーテーションで囲むことにより文字列で使用できます。また、シングル クォーテーション記号も、ダブル クォーテーションで囲むことにより文字列内で使用可能です。次に文字列の例をいくつか示します。

"今日は祝日です。"
'今日は "文化の日" です。'
"42"
"c"

JScript では、1 文字を表す型はありません。JScript で 1 文字を表す場合は、1 文字だけの文字列を作成します。何も入っていない文字列 ("") は、空の文字列 (長さ 0 の文字列) です。

数値型

JScript では、整数と浮動小数点値の区別がありません。つまり、JScript の数値は、このいずれかです (内部的には、JScript はすべての数値を浮動小数点値で表します)。

整数値

整数値は、正の数値、負の数値、および 0 です。10 進数、8 進数、および 16 進数で表記できます。JScript では、ほとんどの数値は 10 進数で表記されます。8 進数の整数であることを示すには、先頭に "0" を付けます。各桁には 0 ～ 7 の数字のみを使用します。先頭に "0" が付いても、各桁に "8" や "9" を使用している数値があれば 10 進数として処理されます。

16 進数 ("hex") の数値であることを示すには、先頭に "0x" (x は大文字でも小文字でもかまいません) を付けます。各桁には 0 ～ 9 の数字および A ～ F の英字 (大文字でも小文字でもかまいません) を使用します。A ～ F の英字は、1 桁分の数値を表すのに使用され、10 進数での 10 ～ 15 に相当します。たとえば、0xF は 15、0x10 は 16 に相当します。

8 進数および 16 進数には負の値もありますが、小数点部分はなく、指数表記は使用できません。

浮動小数点数値

浮動小数点数値では、小数部分を含むすべての数を表すことができます。また、指数表記も使用可能です。10 の累乗の指数を表すには、大文字または小文字の "e" が使用されます。JScript では、IEEE 754 の 8 バイト浮動小数点数を使用した数値表記の既定に従って数値を表記します。表記可能な数値の上限は ±1.7976931348623157x10308、下限は ±5x10-324 になります。単一の "0" で始まり小数点を持つ数値は、10 進数の浮動小数点数として処理されます。

"0x" または "00" で始まり小数点を持つ数値では、エラーが発生します。次に JScript の数値の例を示します。

数 | 説明 | 10 進数では
.0001、0.0001、1e-4、1.0e-4 | この 4 つの浮動小数点数は、すべて同じ値です。 | 0.0001
3.45e2 | 浮動小数点数です。 | 345
42 | 整数です。 | 42
0378 | 整数です。"0" で始まるため 8 進数のように見えますが、8 は 8 進数では使用できない数値なので、10 進数として処理されます。 | 378
0377 | 8 進数です。上記の数値より 1 だけ小さい数値に見えますが、実際にはまったく異なる数値です。 | 255
0.0001 | 浮動小数点数です。"0" で始まりますが小数点があるため 8 進数ではありません。 | 0.0001
00.0001 | エラーです。2 つの "0" で始まるため 8 進数に見えますが、8 進数は小数部を持つことができません。 | N/A (コンパイラ エラー)
0Xff | 16 進数の整数です。 | 255
0x37CF | 16 進数の整数です。 | 14287
0x3e7 | 16 進数の整数です。'e' は累乗として処理されません。 | 999
0x3.45e2 | エラーです。16 進数は小数部を持つことができません。 | N/A (コンパイラ エラー)

また、JScript では、特殊な値を示す数値も使用できます。次のような数値です。

  • NaN (非数)。数学的演算が不適切なデータ (文字列や未定義値) で実行された場合に表示されます。
  • 正の無限大。正の数値が JScript で表記するには大きすぎる場合に表示されます。
  • 負の無限大。負の数値が JScript で表記するには大きすぎる場合に表示されます。
  • 正の 0 および負の 0。JScript では、正の 0 と負の 0 を区別しています。

ブール型

文字列型および数値型では、ほぼ無限とも言える種類の値が利用できるのに対し、ブール型で使用できる数値は 2 種類だけです。リテラルの真 (true) および偽 (false) です。ブール値は、条件の有効性 (条件が真か偽か) を示す論理値を表します。

スクリプト内で行った比較の結果が、ブール値となります。次に JScript のコード例を示します。

y = (x == 2000);

この例では、変数 x の値が 2000 と等しいかどうかを調べます。等しい場合、比較の結果はブール値 true になり、変数 y に代入されます。2000 と等しくない場合は、比較結果はブール値 false になります。

ブール値は、制御構造で特に便利です。次の例では、直接ブール値を作成する比較と、比較結果のブール値を使用するステートメントをまとめています。JScript コードの例を示します。

if (x == 2000)
    z = z + 1;
else
    x = x + 1;

JScript の if/else ステートメントは、ブール値が true の場合はある動作 (z = z + 1) を実行し、ブール値が false の場合は別の動作 (x = x + 1) を実行します。

すべての式は、比較式として使用できます。0、ヌル (null)、未定義型 (undefined)、または空の文字列を評価する式は false として処理されます。それ以外の値を評価する式は true として処理されます。たとえば、次のような式を使用した場合を考えてみましょう。

if (x = y + z) // これは、希望する操作ではないかもしれません。下記を参照してください。

上記の例では、単一の等号 (代入) が使用されているため、x が y + z に等しいかどうかを調べているのではありません。上記のコードでは、y + z の値を変数 x に代入し、その結果 (x の値) が 0 に等しいかどうかを調べています。x が y + z に等しいかどうかを調べるには、次のコードを使用します。

if (x == y + z) // これは、上記のコードとは異なります。

比較処理の詳細については、「JScript のプログラム フロー制御」を参照してください。

ヌル (Null) 型

JScript のヌル型には、null という 1 つの値しかありません。関数名または変数名として null キーワードを使用することはできません。

null を含む変数は、"値がない" か "オブジェクトがない" という状態を示します。つまり、このような変数には有効な数値、文字列、ブール値、配列、またはオブジェクトは含まれません。null 値を代入することによって、変数そのものを削除せずに変数の内容を消去することができます。

JScript では、C および C++ 同様、null と 0 は区別されます。また、JScript の typeof 演算子では、null 値はヌル型ではなくオブジェクト型として扱われるので、注意が必要です。これは、以前のバージョンとの互換性を保持するための処理です。

未定義 (Undefined) 型

undefined 値が返されるのは、次のような場合です。

  • 存在しないオブジェクトのプロパティを使用した場合。
  • 宣言は行われているが、値が代入されていない変数を使用した場合。

変数の型が未定義型であるかどうかを確認することはできますが、未定義型の値との比較で特定の変数の存在は確認できません。次のコードは、変数 x が宣言されているかどうかを調べる例です。

// このメソッドは使用できません。
if (x == undefined)
    // なんらかの処理を行います。

// このメソッドも使用できません。確認してください。
// その文字列は "未定義"です。
if (typeof(x) == undefined)
    // なんらかの処理を行います。

// このメソッドは使用できます。
if (typeof(x) == "undefined")
    // なんらかの処理を行います。

未定義の値を null と比較します。

someObject.prop == null;

この比較は true です。

  • プロパティ someObject.prop に格納される値がヌルの場合。
  • プロパティ someObject.prop が存在しない場合。

オブジェクトのプロパティが存在するかどうかを調べるには、新しい in 演算子を使用できます。

if ("prop" in someObject)
    // someObject はプロパティ "prop" を持ちます。


JScript 演算子

Microsoft®JScript® (以下 JScript) には、算術演算子、論理演算子、ビット演算子、代入演算子などの演算子が用意されています。

算術演算子

説明 | 記号
単項マイナス符号 | -
インクリメント | ++
デクリメント | —
乗算 | *
除算 | /
剰余 | %
加算 | +
減算 | -

論理演算子

説明 | 記号
論理 NOT | !
より小さい | <
より大きい | >
より小さいか等しい | <=
より大きいか等しい | >=
等しい | ==
等しくない | !=
論理 AND | &&
論理 OR | ||
条件演算子 | ?:
カンマ | ,
等しい | ===
等しくない | !==

ビット演算子

説明 | 記号
ビットごとの NOT | ~
ビットごとの左シフト | <<
ビットごとの右シフト | >>
符号なしの右シフト | >>>
ビットごとの AND | &
ビットごとの XOR | ^
ビットごとの OR | |

代入演算子

説明 | 記号
代入 | =
複合代入 | OP=

その他の演算子

説明 | 記号
削除 | delete
型調査 | typeof
void | void
instanceof | instanceof
new | new
in | in

== (等価) 演算子では、等しいかどうかを調べる前に、異なる型の値を強制的に変換する処理が行われる点が === (厳密等価) 演算子と異なります。たとえば、等価演算子では文字列 "1" と数値の 1 の比較結果は true となります。厳密等価演算子では、このような異なる型同士の比較の際の型の強制変換は実行されません。そのため、文字列 "1" と数値の 1 は等しいとは見なされません。

プリミティブな文字列、数値、およびブール値の比較は、値渡しで行われます。値が同じ場合は等しいものとして処理されます。オブジェクト (Array、Function、String,、Number、Boolean、Error、Date、および RegExp オブジェクト) の比較は、参照渡しで行われます。これらの型の場合、2 つの変数の値が同じであっても、まったく同一のオブジェクトを参照している場合以外は真 (true) とは見なされません。

次に例を挙げて説明します。

// 値が同じプリミティブな文字列です。
var string1 = "Hello";
var string2 = "Hello";

// 値が同じ 2 つの String オブジェクトです。
var StringObject1 = new String(string1);
var StringObject2 = new String(string2);

// これは、真 (true) です。
if (string1 == string2)
     // なんらかの処理を行います (この処理は実行されます)。

// これは、偽 (false) です。
if (StringObject1 == StringObject2)
    // なんらかの処理を行います (この処理は実行されません)。

// String オブジェクトの値を比較します。
// toString() メソッドまたは valueOf() メソッドを使用します。
if (StringObject1.valueOf() == StringObject2)
     // なんらかの処理を行います (この処理は実行されます)。


演算子の優先順位

JScript では、演算の優先順位には一定の規則があります。この規則は、式を評価する際の演算子の実行順序を制御します。優先順位の高い演算は、優先順位の低い演算より先に実行されます。たとえば、乗算は加算より先に実行されます。

次の表では、JScript の演算子を優先順位の高い順に上から並べています。優先順位が同等の評価の演算子が使用された式では、左から右の順に演算が実行されます。

演算子 | 説明
. [] () | フィールド アクセス、配列のインデックス、関数の呼び出し、および式のグループ化
++ — - ~ ! delete new typeof void | 単項演算子、データ型の取得、オブジェクトの作成、未定義の値
* / % | 乗算、除算、剰余
+ - + | 加算、減算、文字列の連結
<< >> >>> | ビット シフト
< <= > >= instanceof | より小さい、より小さいか等しい、より大きい、より大きいか等しい、instanceof
== != === !== | 等しい、等しくない、厳密に等しい、厳密に等しくない
& | ビットごとの AND
^ | ビットごとの XOR
| | ビットごとの OR
&& | 論理 AND
|| | 論理 OR
?: | 条件
= OP= | 代入、複合代入
, | 複数の評価

かっこを使用すると、演算子の優先順位と関係なく、演算の実行順序を変更できます。つまり、かっこの内側の演算は、かっこの外側の演算よりも先に実行されます。ただし、かっこの内側の演算子には通常の優先順位が適用されます。

次に例を挙げて説明します。

z = 78 * (96 + 3 + 45)

この式には、=、*、( )、+、および 2 つ目の + の 5 つの演算子があります。演算の優先順位の規則に従うと、これらの演算子は ()、+、+、*、= の順に実行されます。

  1. 最初に、かっこの内側の演算子が評価され、演算が実行されます。かっこ内には、加算演算子が 2 つあります。どちらの加算演算子の優先順位も同じなので、左から右の順に演算が実行されます。したがって、96 と 3 の加算結果に 45 が加算され、かっこの内側の演算結果は 144 になります。
  2. 次に、かっこの外側の乗算が実行されます。78 に 144 が掛けられ、演算結果は 11232 になります。
  3. 最後に代入が実行されます。z に 11232 が代入され、z の値は 11232 になります。


JScript のプログラム フロー制御

通常、JScript スクリプトのステートメントは、記述された順序で実行されます。これは連続実行と呼ばれ、プログラム フローの既定の方法です。

連続実行の代わりに、プログラム フローをスクリプト内の他の部分に転送する方法があります。つまり、順序に従って次のステートメントを実行する代わりに、他のステートメントを実行します。

スクリプトを有効利用するには、このような制御転送を論理に行う必要があります。プログラム制御の転送は、結果をブール値 true または false で返す真理値ステートメントによる決定に基づいて行われます。式を作成した後、結果が真 (true) かどうかが評価されます。このような方法を利用できるプログラム構造は 2 種類あります。

1 つ目は選択構造です。これを使用すると、プログラムに分岐点を作成することによって、プログラム フローの流れを変更できます。JScript では次の 4 つの選択構造を使用できます。

  • 単一選択構造 (if)
  • 分岐選択構造 (if/else)
  • 条件演算子 (?:)
  • 複数選択構造 (switch)

プログラム制御構造の 2 つ目は、反復構造です。これを使用すると、ある条件が真 (true) である間、動作を繰り返す処理を指定できます。制御ステートメントの条件が満たされると (通常は指定した繰り返しの後)、制御は反復構造を抜けて次のステートメントに移ります。JScript では、次の 4 つの反復構造を使用できます。

  • ループの最初に式が評価される (while)
  • ループの最後に式が評価される (do/while)
  • オブジェクトのプロパティごとに処理を行う (for/in)
  • カウンタを使って反復を制御する (for)

選択制御構造や反復制御構造を入れ子にしたり重ねることによって、複雑なスクリプトを作成できます。

構造化されたプログラム フローの 3 つ目の形態は例外処理として提供されているため、このドキュメントでは説明を省きます。

条件ステートメントを使用する

JScript では、条件ステートメントとして if および if...else がサポートされています。if ステートメントで条件を評価すると、評価した条件が満たされる場合にだけ、なんらかの JScript コードが実行されます (if...else ステートメントの場合は、条件が満たされないときに別のコードが実行されます)。単純な if ステートメントの場合、全体を 1 行に収めて記述することもできます。一般には、if ステートメントや if...else ステートメントは複数の行にわたって記述されることになります。

次に、if ステートメント、および if...else ステートメントを使用したコードの例を示します。1 つ目の例は、単純にブール値の評価しています。かっこに囲まれた部分の評価結果が真 (true) の場合にのみ、if ステートメントの後ろのブロック内に記述されたステートメントを実行します。

// この例では、smash() 関数は同じコード内の別の場所で定義されているものとします。
// newShip が真かどうかを調べるため、ブール値を評価します。
if (newShip)
   smash(champagneBottle,bow);

//  この例では、両方の条件が真にならなければ、if ステートメントが真だとは見なされません。
if (rind.color == "濃い黄色 " && rind.texture == "大小のしわ付")
{
   theResponse = ("それはクレンショーメロンですか?");
}

// この例では、2 つの条件のいずれかが真であれば、if ステートメントが真だと見なされます。
var theReaction = "";
if ((dayOfWeek == "土曜日") || (dayOfWeek == "日曜日"))
{
   theReaction = ("浜辺に行くぞ!");
}
else
{
   theReaction = ("ハイホー、ハイホー、仕事に戻らなくちゃ!");
}

条件演算子を使用する

JScript では、条件演算子もサポートされています。条件演算子では、疑問符の後ろにテストする条件を記述し (条件の前に if は記述しません)、その後ろに 2 種類の処理を指定します。この 2 種類の処理のうちの片方は条件が満たされる場合に使用されます。他方は条件が満たされない場合に使用されます。この 2 種類の処理は、コロンで区切ります。

var hours = "";

// このコードは、hours に theHour の値を入れるか、
// theHour - 12 の値を入れるかを調べています。

hours += (theHour >= 12) ? " PM" : " AM";

複数の条件を組み合わせて一緒に評価する場合、その中に結果を予測できる条件が含まれるときは、ショート サーキット評価と呼ばれる機能を使用することでスクリプトの実行速度を速くすることができます。JScript で論理式を評価する場合は、結果を取得するために必要なサブ条件が評価されるだけです。

たとえば、((x == 123) && (y == 42)) のような andAND 式がある場合、JScript では最初に x が 123 であるかを評価します。結果が偽の場合、y が 42 に等しい場合でも式全体は真 (true) にはなりません。そのため、y は評価されず、偽 (false) が返されます。

同様に、複数の条件のうちで 1 つでも真 (true) かどうかを評価するときは、|| 演算子を使います。|| 演算子を使うといずれか 1 つでも条件が真 (true) になった時点で評価処理が終了します。この調整は、評価する条件に関数の呼び出しや複雑な式が含まれている場合など、特に効果があります。ただし、Or 式を記述する場合は、必ず最初に true になりそうな条件を記述するようにしてください。また、And 式を記述する場合は、必ず最初に false になりそうな条件を記述するようにしてください。

この方法でスクリプトを作成した場合の利点は、次のコード例のように、runfirst() 関数が 0 を返すか、または偽 (false) である場合、runsecond() 関数を実行する必要がなくなる点です。

if ((runfirst() == 0) || (runsecond() == 0)) {
    // some code
}

ループ

1 つのステートメントや複数のステートメントが入ったブロックを繰り返し実行する方法には、いくつかの種類があります。一般に、繰り返し実行は "ループ" または "反復処理" と呼ばれます。反復処理は、ループの 1 回の処理を実行します。通常、ループの制御は、ループ内の処理が実行されるたびに値が変化するなんらかの変数を評価して行います。JScript では、4 種類のループをサポートしています。for ループ、for...in ループ、while ループ、do...while ループです。

for ループ

for ステートメントには、カウンタ変数、評価する条件、およびカウンタを更新する処理を指定します。ループの反復が実行される前に、条件が評価されます。評価が成功した場合は、ループ内のコードが実行されます。評価が成功しなかった場合は、ループ内のコードは実行されず、次のループ内の 1 行目のコードの処理が続けられます。カウンタ変数は、ループの実行後、次の反復処理が開始される前に更新されます。

ループの条件が満たされない場合は、ループは一度も実行されません。条件が常に満たされ続けると、無限ループになってしまいます。ループに指定した条件が始めのうちは適切であっても、後から不適切となる場合があるので、ループ処理を記述するときは、注意してください。

/*
カウンタを更新する式 (下記の例では "icount++") は、
ループの最後に実行されます。ループに記述されたステートメントのブロックが実行された後、
条件が評価される前に実行されます。
*/

var howFar = 10; // ループの制限値を 10 に設定します。

var sum = new Array(howFar); // 0 から 9 までの 10 のメンバを持つ sum と呼ばれる配列を作成します。
var theSum = 0;
sum[0] = 0;

for(var icount = 0; icount < howFar; icount++) { // この場合のカウンタは、0 から 9 です。
theSum += icount;
sum[icount] = theSum;
}

var newSum = 0;
for(var icount = 0; icount > howFar; icount++) { // icount が howFar より大きいため、これは 1 度も実行されません。
newSum += icount;
}

var sum = 0;
for(var icount = 0; icount >= 0; icount++) { // これは無限ループです。
sum += icount;
}

for...in ループ

JScript では、オブジェクト内のすべてのユーザー定義プロパティ、または配列内のすべての要素を 1 つずつ処理するための特殊なループが用意されています。for...in ループのループ カウンタは、数値ではなく文字列です。現在のプロパティの名前または現在の配列要素のインデックスが含まれます。

次のコード例では、JScript にはない alert メソッドを使用しているので、Internet Explorer で実行するようにしてください。

// プロパティを持つオブジェクトを作成します。
var myObject = new Object();
myObject.name = "James";
myObject.age = "22";
myObject.phone = "555 1234";

// オブジェクトのすべてのプロパティを数えます。
for (prop in myObject)
{
    // "プロパティ 'name' は James です。"と表示されます。
    window.alert("プロパティ '" + prop + "' は " + myObject[prop] + "です。");
}

for...in ループは、VBScript の For Each...Next ループと似ていますが、動作は異なります。JScript の for...in loop は、JScript のオブジェクトのプロパティを対象として反復処理を行います。VBScript の For Each...Next ループは、コレクションの項目を対象として反復処理を行います。JScript のコレクション全体を対象に反復処理を行うには、Enumerator オブジェクトを使用する必要があります。Internet Explorer オブジェクトのように VBScript の For Each...Next と JScript の for...in ループの両方をサポートしているものもありますが、ほとんどのオブジェクトではサポートしていません。

while ループ

while ループは、for ループと似ています。ただし、for ループとは異なりカウンタ変数とカウンタを更新する処理がありません。ステートメントまたはステートメントのブロックの繰り返し処理を制御する際に、「あるコードを何回実行する」というような単純な規則よりさらに複雑な指定をする必要がある場合に、while ループを使用します。次のコードは、Internet Explorer オブジェクト モデルと while ループを使用して、ユーザーに簡単な質問をする例です。

var x = 0;
while ((x != 42) && (x != null))
{
    x = window.prompt("好きな数字は何ですか?", x);
}

if (x == null)
    window.alert("終了です!");
else
    window.alert("最後の回答です!");
メモ while ループには、明示的なカウンタ変数がありません。このため、ほかの種類のループと比べても、無限ループに陥る可能性が高くなります。また、while ループを使用すると、ループを制御する条件がどこで更新されるのか判断しにくいため、条件が更新されないループを記述する可能性もあります。このような理由から while ループを使用したコードを記述する場合は、特に無限ループを作らないように注意してください。

また、JScript には while ループに似た do...while ループもあります。ただし、do...while ループは、条件がループの最初ではなく最後に評価されるため、少なくとも 1 回は必ず処理が実行されるという点で while ループとは異なります。上のコード例は、次のように書くこともできます。

var x = 0;
do
{
    x = window.prompt("好きな数字は何ですか?", x);
} while ((x != 42) && (x != null));

if (x == null)
    window.alert("終了です!");
else
    window.alert("最後の回答です!");

break ステートメントと continue ステートメント

Microsoft JScript では、ある条件が満たされ、ループの実行を終了する場合に break ステートメントを使用します (break は、switch ブロックの終了にも使用できます)。continue ステートメントを使用すると、コード ブロックの残りの部分を実行しないでカウンタ変数を更新した後 (ただし、for または for...in の場合のみカウンタ変数の更新が行われます)、次の反復処理に移行できます。

次の例では、break ステートメントと continue ステートメントを使用して、上記の例のループを制御します。

var x = 0;
do
{
    x = window.prompt("好きな数字は何ですか?", x);

    // キャンセルされましたか?その場合、ループを終了します。
    if (x == null)
        break;

    // 数字が入力されましたか?
    // その場合、数値の入力は不要です。
    if (Number(x) == x)
        continue;

    // ユーザーに数値の入力だけを促します。
    window.alert("数値の入力だけを行ってください!");

} while (x != 42)

if (x == null)
    window.alert("終了です!");
else
    window.alert("最後の回答です!");


JScript の関数

Microsoft® JScript® の関数は、なんらかの処理を実行して値を返すことができます。関数の結果は、数値計算や比較演算の結果の場合もあります。関数は、"グローバル メソッド" とも呼ばれます。

関数とは、複数の処理がまとめられ、1 つの名前が付けられたものです。関数を使用すると、コードを簡素化することができます。一連のステートメントを記述してそれに名前を付けておくと、必要な情報を渡して関数を呼び出すだけで一連のステートメント全体をまとめて実行できます。

関数に情報を渡す場合は、渡す情報を関数の名前の後ろにかっこで囲んで指定します。関数に渡される情報は、引数またはパラメータと呼ばれます。関数には、引数をまったく必要としないものがあります。また 1 つ以上の引数を必要とするものもあり、用途に応じて引数の数が変わる関数もあります。

JScript では 2 種類の関数をサポートしています。あらかじめ言語に組み込まれている関数と、プログラマが自分で作成する関数です。

特別に用意された組み込み関数

JScript 言語には、いくつかの組み込み関数が用意されています。その中には、式や特殊文字を扱える関数、および文字列を数値に変換する関数があります。便利な組み込み関数として eval() があります。この関数は、文字列形式で表記された JScript で有効なすべてのコードを評価します。eval() 関数では、引数に評価するコードを 1 つ指定します。次にこの関数の使用例を示します。

var anExpression = "6 * 9 % 7";
var total = eval(anExpression); // 変数 total に 5 の値が代入されます。
var yetAnotherExpression = "6 * (9 % 7)";
total = eval(yetAnotherExpression) // 変数 total に 12 の値が代入されます。
// totality に文字列が代入されます (入れ子で記述されます)。
var totality = eval("'大量の貝...'");

これらの関数およびその他の関数の詳細については、「JScript ランゲージ リファレンス」を参照してください。

独自の関数の作成

JScript では、独自の関数を作成し、必要に応じて使用することができます。関数を定義するには、1 つの関数ステートメントと、一連の JScript ステートメントによるブロックを記述します。

次のコード例では、checkTriplet 関数は引数として三角形の 3 つの辺の長さを指定します。指定した数値がピタゴラスの三平方の定理を満たしているかどうかを調べることにより、その三角形が直角三角形かどうかを評価します (直角三角形の斜辺の長さの 2 乗は、ほかの 2 つの辺の長さの 2 乗の和に等しくなります)。checkTriplet 関数は、直角三角形かどうかを評価するときに、ほかの 2 つの関数のいずれかを呼び出します。

浮動小数点数版の評価では、評価変数として非常に小さい数値 ("epsilon") を使用している点に注目してください。浮動小数点数の計算では、丸め誤差によって正しい結果が得られない場合があります。したがって、指定された 3 つの数値のいずれかが整数ではない場合には、ピタゴラスの三平方の定理を満たしているかどうかを直接調べても正しい結果が得られない可能性があります。ただし、直接比較した方がより正確に直角三角形であることを確認できるため、この例のコードでは、まず直接比較することが適切かどうかを調べ、適切であれば直接比較する方法を使用しています。

var epsilon = 0.00000000001; // 浮動小数点数の計算に使用する非常に小さい数値です。

// 関数を調べる整数です。
function integerCheck(a, b, c)
{
   // それ自身を調べます。
   if ( (a*a) == ((b*b) + (c*c)) )
      return true;

   return false;
} // 関数を調べる整数は終わりです。

// 関数を調べる浮動小数点数です。
function floatCheck(a, b, c)
{
   // 調べる数値を作成します。
   var delta = ((a*a) - ((b*b) + (c*c)))

   // 絶対値を調べます。
   delta = Math.abs(delta);

   // 差が epsilon より小さければ、終了です。
   if (delta < epsilon)
      return true;

   return false;
} // 浮動小数点数用の評価関数終わり。

// 三角形チェッカー。
function checkTriplet(a, b, c)
{
   // 値を入れ替えるための一時的な変数を作成します。
   var d = 0;

   // まず、最も長い辺を "a" にします。

   // 必要に応じて a と b を入れ替えます。
   if (b > a)
   {
      d = a;
      a = b;
      b = d;
   }

   // 必要に応じて a と c を入れ替えます。
   if (c > a)
   {
      d = a;
      a = c;
      c = d;
   }

   // 3 つの値を調べます。整数ですか?
   if (((a % 1) == 0) && ((b % 1) == 0) && ((c % 1) == 0))
   {
      // 3 つとも整数であれば、正確な評価を行います。
      return integerCheck(a, b, c);
   }
   else
   {
      // 浮動小数点数がある場合は、適切な範囲内で可能な限り正確な評価を行います。
      return floatCheck(a, b, c);
   }
} // 三角形チェック関数の終わり。

// 次の 3 つのステートメントでは、関数をテストするために単純な値を変数に代入します。
var sideA = 5;
var sideB = 5;
var sideC = Math.sqrt(50.001);

// 関数を呼び出します。呼び出した後は、'result' に結果が入ります。
var result = checkTriplet(sideA, sideB, sideC);


JScript のオブジェクト

JScript のオブジェクトとは、プロパティとメソッドを集めたものです。メソッドとは、オブジェクトのメンバとなっている関数のことです。プロパティとは、値または一連の値 (配列やオブジェクト) がオブジェクトのメンバとなったものを指します。JScript では 4 種類のオブジェクトをサポートしています。組み込みオブジェクト、ユーザーが作成したオブジェクト、ホスト (Internet Explorer の window や document) によって提供されるホスト オブジェクト、および Active X オブジェクト (外部構成要素) です。

配列としてのオブジェクト

JScript では、オブジェクトと配列はほとんど同じように扱われます。どちらにも任意のプロパティを割り当てるすることができ、配列もある意味では特殊なオブジェクトとして扱われています。Arrays オブジェクトと Objects オブジェクトとの相違点は、配列には特殊な処理を行う length プロパティがあるのに対してオブジェクトにはないという点です。length プロパティの機能によって、たとえば、myArray[100] = "hello" のように配列の最大要素よりもさらに大きな値を要素に代入すると、配列のサイズは自動的に 101 に更新されます。同様に、配列の length プロパティを変更すると、配列の一部でなくなった要素が削除されます。

JScript のすべてのオブジェクトは、拡張プロパティをサポートしています。拡張プロパティとは、実行時に直接、追加または削除できるプロパティです。これらのプロパティには、数値を含む任意の名前を指定できます。プロパティの名前が単純な識別子の場合は、オブジェクトの名前の後ろにピリオドを置き、次のように記述します。

var myObj = new Object();

// 拡張プロパティ 'name' と 'age' を追加します。
myObj.name = "Fred";
myObj.age = 42;

プロパティの名前が単純な識別子ではない場合や、スクリプトを書いた時点では決まっていない場合は、プロパティを角かっこで囲み、インデックスとして任意形式の式として記述することもできます。JScript のすべての拡張プロパティの名前は、オブジェクトに追加される前に文字列に変換されます。

var myObj = new Object();

// オブジェクトのプロパティ構文では記述できない拡張プロパティを
// 追加します。
// 先頭に無効な文字であるスペースを使用する場合は、
// 角かっこで囲む必要があります。
myObj["not a valid identifier"] = "これはプロパティの値です。";

// 拡張名の 2 つ目が数値の場合も、
// 角かっこで囲む必要があります。
myObj[100] = "100";

通常、配列要素には 0 で始まる数値のインデックスが付いています。length プロパティは、これらのインデックスと相互に対応して機能しています。すべての配列はオブジェクトでもあるため、拡張プロパティもサポートしています。しかし、拡張プロパティと length プロパティとの間には相互に対応する機能がありません。次に例を挙げて説明します。

// 3 つの要素を持つ配列です。
var myArray = new Array(3);

// データを追加します。
myArray[0] = "Hello";
myArray[1] = 42;
myArray[2] = new Date(2000, 1, 1);

// 3 が表示されます。これは、配列の長さです。
window.alert(myArray.length);

// 拡張プロパティを追加します。
myArray.expando = "JScript!";
myArray["another Expando"] = "Windows";

// まだ 3 が表示されています。2 つの拡張プロパティがあるためです。
// 長さには影響しません。
window.alert(myArray.length);

JScript では、直接的には多次元配列はサポートされていません。しかし、他の配列を含め、配列には要素として任意の種類のデータを保存できます。そのため、他の配列の要素内に配列を保存することで、多次元配列と同じ動作を実行できます。次のコードは、5 個までの値を処理する掛け算表の例です。

// この数値をさらに大きな表に変更します。
var iMaxNum = 5;
// ループ カウンタです。
var i, j;

// 新しい配列です。配列が開始なので、iMaxNum + 1 にします。
// 1 ではなく 0 から開始します。
var MultiplicationTable = new Array(iMaxNum + 1);

// 表内の各行にある主な数値を反復実行します。
for (i = 1; i <= iMaxNum; i++)
{
    // 表に列を作成します。
    MultiplicationTable[i] = new Array(iMaxNum + 1);

    // 行に乗算の結果を記入します。
    for (j = 1; j <= iMaxNum; j++)
    {
        MultiplicationTable[i][j] = i * j;
    }
}

window.alert(MultiplicationTable[3][4]); // 12 が表示されます。
window.alert(MultiplicationTable[5][2]); // 10 が表示されます。
window.alert(MultiplicationTable[1][4]); // 4 が表示されます。


独自のオブジェクトの作成

独自のインスタンスを作成するには、まずコンストラクタ関数を定義します。コンストラクタ関数は新しいオブジェクトを作成し、そのオブジェクトにプロパティを指定します。必要に応じて、メソッドも指定します。次の例では、pasta オブジェクトにコンストラクタ関数を定義しています。this キーワードを使用して、現在のオブジェクトを参照します。

// pasta は 4 つのパラメータを持つコンストラクタです。
function pasta(grain, width, shape, hasEgg)
{
// 原料は何ですか?
    this.grain = grain;

// 太さは?(数値)
    this.width = width;

// 形状はどんなですか? (文字列)
    this.shape = shape;

// つなぎには卵黄を使用していますか?(ブール値)
    this.hasEgg = hasEgg;
}

オブジェクトのコンストラクタを定義済みの場合は、new 演算子を使用してそのインスタンスを作成できます。

var spaghetti = new pasta("wheat", 0.2, "circle", true);
var linguine = new pasta("wheat", 0.3, "oval", true);

オブジェクトのインスタンスにプロパティを追加することで、そのインスタンスを変更することができます。ただし、これらのプロパティは、同じコンストラクタで作成された他のオブジェクトには反映されないため、特に指定して追加しない限り、他のインスタンスで同じプロパティが適用されることはありません。オブジェクトのすべてのインスタンスで使用するプロパティがさらに必要となった場合には、コンストラクタ関数またはコンストラクタのプロトタイプ オブジェクトに追加します。プロトタイプについては、上級者用のドキュメントを参照してください。

// スパゲッティ オブジェクトの追加のプロパティです。
spaghetti.color = "青っぽいわらの色";
spaghetti.drycook = 7;
spaghetti.freshcook = 0.5;

var chowFun = new pasta("米", 3, "平べったさ", false);
// chowFun オブジェクトにも、存在する pasta オブジェクトにも
// スパゲッティ オブジェクトに追加された新しい 3 つのプロパティは
// ありません。

// プロパティ 'foodgroup' を pasta プロトタイプ オブジェクトに追加すると、
// 既に作成済みのもの含めた pasta オブジェクトの
// すべてのインスタンスが使用可能になります。
pasta.prototype.foodgroup = "carbohydrates"

// 現在、spaghetti.foodgroup、chowFun.foodgroup などには、
// 値 "carbohydrates" が含まれています。

定義にメソッドを含める

オブジェクトの定義にメソッド (関数) を含めることができます。方法として、他で定義済みの関数を参照するプロパティをコンストラクタ関数に追加するというやり方があります。次の例では、上記の例で定義済みの pasta コンストラクタ関数を拡張して、オブジェクトの値を表示するときに呼び出される toString メソッドを含むように指定しています。

// pasta は 4 つのパラメータを持つコンストラクタです。
// 最初の部分は、上記の例と同じです。
function pasta(grain, width, shape, hasEgg)
{
// 原料は何ですか?
    this.grain = grain;

// 太さは? (number)
    this.width = width;

// 形状はどんなですか?(文字列)
    this.shape = shape;

// つなぎには卵黄を使用していますか?(ブール値)
    this.hasEgg = hasEgg;

// toString メソッドを追加します (下記で定義されています)。
// これは関数呼び出しではなく
// 関数そのものへの参照なので、
// 関数名の後ろにかっこを付けないでください。
    this.toString = pastaToString;
}

// past オブジェクトの内容を表示する実際の関数です。
function pastaToString()
{
// オブジェクトのプロパティを返します。

return "穀類: " + this.grain + "\n" +
"幅: " + this.width + "\n" +
        "形: " + this.shape + "\n" +
"卵?: " + Boolean(this.hasEgg);
}

var spaghetti = new pasta("wheat", 0.2, "circle", true);
// toString() を呼び出し、スパゲッティ オブジェクトの
// Internet Explorer で必要となるプロパティを表示します。
window.alert(spaghetti);


組み込みオブジェクト

Microsoft JScript では、11 個の組み込みオブジェクトが用意されています。Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error、および String です。それぞれの組み込みオブジェクトは、メソッドおよびプロパティと関連します。メソッドとプロパティの詳細については、「ランゲージ リファレンス」を参照してください。オブジェクトに関しては、このセクションで説明します。

Array オブジェクト

配列の添字は、オブジェクトのプロパティとして扱われ、数値インデックスによって参照されます。Array に追加される名前付きのプロパティは、配列要素と異なり、数値によるインデックス付けはされません。

新しい配列を作成する場合は、new 演算子と Array() コンストラクタを使用します。次に例を示します。

var theMonths = new Array(12);
theMonths[0] = "1 月";
theMonths[1] = "2 月";
theMonths[2] = "3 月";
theMonths[3] = "4 月";
theMonths[4] = "5 月";
theMonths[5] = "6 月";
theMonths[6] = "7 月";
theMonths[7] = "8 月";
theMonths[8] = "9 月";
theMonths[9] = "10 月";
theMonths[10] = "11 月";
theMonths[11] = "12 月";

Array キーワードを使用して配列を作成すると、JScript ではエントリ数を記録する length プロパティが指定されます。数値を指定しないと長さは 0 に設定され、配列にはエントリが含まれません。数値を指定すると、長さはその数値に設定されます。複数のパラメータを指定すると、パラメータは配列のエントリとして使用されます。また、パラメータの数が length プロパティに割り当てられます。以下に、その例を示します。この例は、上記の例と同じ内容です。

var theMonths = new Array("1 月", "2 月", "3 月", "4 月", "5 月", "6 月",
"7 月", "8 月", "9 月", "10 月", "11 月", "12 月");

Array キーワードで作成した配列に要素を追加すると、自動的に length プロパティの値が変更されます。JScript の配列のインデックスは、常に 1 ではなく 0 から開始されます。そのため、length プロパティは、常に配列の最大数より 1 だけ大きい数値になります。

String オブジェクト

JScript では、文字列および数値をオブジェクトのように扱えます。string オブジェクトには、文字列内で使用できる組み込みメソッドが用意されています。substring メソッドはこのような組み込みメソッドの 1 つで、文字列の一部を返します。引数として 2 つの数値を指定します。

aString = "0123456789";
var aChunk = aString.substring(4, 7);  // aChunk を "456".に設定します。
var aNotherChunk = aString.substring(7, 4);  // aNotherChunk に "456" を設定します。
// 上記の例で作成した配列を使用します。
firstLetter = theMonths[5].substring(0,1);  // 変数 firstLetter に "J" を設定します。

String オブジェクトのもう 1 つのプロパティは、length プロパティです。このプロパティには、文字列内の文字数が含まれます (空の文字列の場合は 0)。これは、計算でそのまま使用できる数値です。

var howLong = "Hello World".length  // 変数 howLong に 11 を設定します。

Math オブジェクト

Math オブジェクトには、あらかじめ定義されたプロパティとメソッドがあります。プロパティは特定の数値です。これらの特定の数値の 1 つに、π (約 3.14159...) があります。これは、Math.PI プロパティです。次に例を示します。

// 変数 radius は、宣言され、数値が入力されます。
var circleArea = Math.PI * radius * radius;  //Math と PI には大文字を使用してください。

Math オブジェクトの組み込みメソッドの 1 つに、累乗メソッド pow があります。これは、数値を指定した回数だけ乗算します。次の例では、π と累乗の両方を使用しています。

// これは、指定された半径の球の体積を計算します。
volume = (4/3)*(Math.PI*Math.pow(radius,3));

Date オブジェクト

Date オブジェクトは、現在のシステムの日付を取得したり、日付の差を計算するなど、任意の日付や時間を表すオブジェクトとして使用します。このオブジェクトには、あらかじめ定義されたプロパティとメソッドがあります。通常、Date オブジェクトは、日付の曜日、年月日、時刻、分および秒を表します。この情報は、グリニッジ標準時 (GMT) を基準にしており、1970 年 1 月 1 日 00:00:00.00 からの経過したミリ秒の数値を基に算出されます (本来は、GMT よりも世界標準時によって発信されるシグナルを参照して定められる世界協定時刻 (UTC) という用語を使用することが望ましいと考えられています)。JScript では、紀元前 250,000 年から西暦 255,000 年までの日付を扱うことができます。

新しい Date オブジェクトを作成するには、new 演算子を使用します。次の例では、現在の年、経過日数、および残日数を計算しています。

/*
この例では、上記の例で定義された月の名前の配列を使用します。
最初のステートメントは、"Day Month Date 00:00:00 Year" 形式の
変数 thisIsToday に今日の日付を代入します。
*/
var thisIsToday = new Date();

var toDay = new Date();  // 今日の日付を取得します。

// 年、月、日を取り出します。
var thisYear = toDay.getFullYear();
var thisMonth = theMonths[toDay.getMonth()];
var thisDay = thisMonth  + " " + toDay.getDate() + ", " + thisYear;

Number オブジェクト

Microsoft JScript では、Math オブジェクトで使用できる π のような特殊な数値を表すプロパティの他に、Number オブジェクトで使用できるプロパティが数種類あります。

プロパティ | 説明
MAX_VALUE | 表現できる最も大きい値。約 1.79E+308。負でも正でも可 (システムごとに変更される値です)。
MIN_VALUE | 表現できる最も小さい値。約 2.22E-308。負でも正でも可 (システムごとに変更される値です)。
NaN | 特殊な非数値 (not a number)。
POSITIVE_INFINITY | 表現できる最も大きい正の値 (Number.MAX_VALUE) よりも大きい値は、自動的にこの値に変換されます。infinity と表示されます。
NEGATIVE_INFINITY | 表現できる最も小さい負の値 (-Number.MAX_VALUE) よりも小さい値は、自動的にこの値に変換されます。-infinity と表示されます。

Number.NaN は、"非数" として定義される特殊なプロパティです。たとえば、0 で除算を行った場合に NaN が返されます。数値として解釈できない文字列を解釈しようとした場合にも、Number.NaN が返されます。NaN は、すべての数値との比較、および自分自身との比較処理においても、常に等しくないと評価されます。NaN の結果を評価するには、Number.NaN と比較するのではなく、isNaN() 関数を使用します。


JScript の予約語

JScript には、識別子としては使用できない多くの予約語があります。予約語は言語構文の一部であるため、JScript 言語で特別な意味があります。予約語を使用すると、スクリプトをロードしたときにコンパイル エラーが発生します。

JScript では、将来的に使用される予定の予約語の一覧も用意されています。これらの予約語は、現時点では JScript 言語の一部ではありませんが、将来使用される語として予約されています。

予約語

break | delete | function | return | typeof
case | do | if | switch | var
catch | else | in | this | void
continue | false | instanceof | throw | while
debugger | finally | new | true | with
default | for | null | try |

将来的に使用される予約語

abstract | double | goto | native | static
boolean | enum | implements | package | super
byte | export | import | private | synchronized
char | extends | int | protected | throws
class | final | interface | public | transient
const | float | long | short | volatile

識別子を選択する場合には、JScript の組み込みオブジェクトや関数名として既に使用されている語を使わないように十分に注意してください。たとえば、String または parseInt などは選択できません。


高度な JScript

高度なオブジェクト作成

再帰法

変数のスコープ

データのコピー、受け渡し、および比較

配列の使用

特殊文字

JScript スクリプトのトラブルシューティング


高度なオブジェクト作成

コンストラクタは、特定の種類のオブジェクトをインスタンス化し、初期化するために呼び出す関数です。コンストラクタを呼び出すには、new キーワードを使用します。次に、コンストラクタの使用方法をいくつか示します。

var myObject = new Object();             // 一般的なオブジェクトをプロパティなしで作成します。
var myBirthday = new Date(1961, 5, 10);  //Date オブジェクトを作成します。
var myCar = new Car();                   // ユーザー定義のオブジェクトを作成し、そのプロパティを初期化します。

コンストラクタには、新規作成された空のオブジェクトに対する参照が、特殊キーワード this の値として渡されます。これにより、コンストラクタは新規オブジェクトに対してプロパティを作成し、初期値を指定するなど、適切な初期化処理の実行を受け持ちます。初期化が終了すると、オブジェクトに対する参照がコンストラクタから返されます。

コンストラクタを記述する

Object()、Date()、および Function() のような既定義のコンストラクタ関数と new 演算子を組み合わせ、オブジェクトを作成し、初期化することができます。オブジェクト指向型プログラミングの強力な機能の 1 つとして、カスタム コンストラクタ関数を定義し、自分の記述するスクリプト内で使用するカスタム オブジェクトを作成できるという点を挙げることができます。カスタム コンストラクタでは、あらかじめ定義済みのプロパティを持つオブジェクトも作成可能です。次に、カスタム コンストラクタの例を示します。this キーワードの用法に注意してください。

function Circle (xPoint, yPoint, radius) {
this.x = xPoint;  // 円の中心点の x 要素。
this.y = yPoint;  // 円の中心点の y 要素。
this.r = radius;  // 円の半径。
}

Circle コンストラクタを起動する際、円の中心点と半径の値を指定しています。これらの値を指定することで、作成する円は完全に一意な円オブジェクトとなります。この結果、3 つのプロパティを持つ Circle オブジェクトが作成されます。以下に示すのは、Circle オブジェクトをインスタンス化する例です。

var aCircle = new Circle(5, 11, 99);

オブジェクトの作成にプロトタイプを使う

コンストラクタを記述する際には、それ自体が各コンストラクタのプロパティであるプロトタイプ オブジェクトを使用し、プロパティを継承し、メソッドを共有することができます。プロトタイプ プロパティおよびメソッドは、同じクラスの各オブジェクトに参照渡しでコピーされるため、すべて同じ値を持つことになります。各オブジェクトでプロトタイプ プロパティの値を変更し、そのインスタンス内で既定値を新しい値に変更できます。この場合、この変更によって同じクラスに属するほかのオブジェクトに影響を及ぼすことはありません。次に示すのは、カスタム コンストラクタ Circle を使用した例です。this キーワードの用法に注意して見てください。

Circle.prototype.pi = Math.PI;
function ACirclesArea () {
return this.pi * this.r * this.r; // 円の面積を求める式は πr2 です。
}
Circle.prototype.area = ACirclesArea; // 円の面積を求める式が、プロトタイプ オブジェクト Circle のメソッドとなりました。
var a = ACircle.area();               // Circle オブジェクトで面積を求める関数を起動します。

あらかじめ定義されているコンストラクタ関数すべてに、プロトタイプ オブジェクトが用意されています。この原理を使うと、これらの関数に追加プロパティを定義できます。たとえば、VBScript の Trim 関数での処理のように、文字列の先頭、または末尾のスペースを削除できるようにしたい場合、プロトタイプ オブジェクト String に独自のメソッドを作成すれば、記述するスクリプト内の全文字列がこのメソッドを継承することになります。

// trim と呼ばれる関数を
// String コンストラクタのプロトタイプ オブジェクトにメソッドとして追加します。
String.prototype.trim = function()
{
// 先頭、または末尾のスペースを空の文字列で置換するには、
// 正規表現を使用します。
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

// 次に示すように前後にスペースのある文字列は
var s = "    前後にスペースがあります    ";

// "    前後にスペースがあります     (35)" のように表示されます。
window.alert(s + " (" + s.length + ")");

// 前後のスペースを削除すると、
s = s.trim();
// "前後にスペースがあります (27)" のように表示されます。
window.alert(s + " (" + s.length + ")");


再帰法

再帰法は、重要なプログラミング手法です。再帰法では、関数がその関数自身を呼び出します。再帰法を使用した簡単な例として、階乗の計算があります。0 の階乗は、共に 1 になります。これより大きい数の階乗は、1 * 2 * ... というように階乗を求める数になるまで数字を 1 ずつ増やしながら掛けていくことにより算出できます。

次の段落は、階乗を求める関数の定義です。

"指定された数字が 0 より小さい場合は、計算しません。また、整数でない場合は、端数を切り捨てて整数にします。階乗を求める数字が 0 の場合は、階乗は 1 です。階乗を求める数字が 1 以上の場合は、その数字にその数字より 1 だけ小さい値の階乗を掛けます。"

この計算を行うために使用する関数は、既に作成している関数です。つまり、この関数は、自分自身を呼び出して 1 つ小さい数の階乗を求めることにより、目的の数の階乗を計算できるようになります。これが、再帰の一例です。

再帰法とループの反復処理は密接な関係があります。再帰により反復処理が実行され、反復処理を実行すると再帰が起こります。通常、特定の処理によりその処理自身がある手法に引き渡されるため、ユーザーは単に使いやすい手法を選択するだけで済みます。

しかし、注意しなければならない点があります。再帰法を使用すると、再帰呼び出しが終了しないで永久に結果を得られない再帰関数を作成してしまうことがよくあります。このような再帰は、いわゆる "無限" ループになります。たとえば、階乗の計算の定義から最初の規則 (負の値に関する規則) を省略して関数を作成し、この関数を使用して負の値の階乗を求めようとしたとします。-24 の階乗を求めようとした場合なら、まず -25 の階乗を求めることになります。すると、次に -26 の階乗を求めることになります。このように処理が行われていくと、明らかに再帰呼び出しが終了しないことになります。このため、関数の実行は正常に終了しません。

したがって、再帰関数は、特に注意して設計する必要があります。無限再帰になる可能性がないと思われる場合でも、関数内で再帰呼び出しの回数をカウントしておけば、呼び出しの回数が非常に多くなってあらかじめ設定しておいた回数を超えたときには自動的に実行が終了するように設計することもできます。

次に、階乗を求める関数の定義を、JScript のコードで示します。

// 階乗を計算する関数です。不正な値
// (0 より小さい値) が渡された場合、-1
// が返され、エラーであることを知らせます。
// それ以外の場合は、数値は最も近い整数に変換され、
// その階乗が返されます。
function factorial(aNumber)  {
aNumber = Math.floor(aNumber);  // 数値が整数でない場合は、端数を切り捨てます。
if (aNumber < 0)  {  // 数値が 0 より小さい場合は、計算を中止します。
    return -1;
    }
if (aNumber == 0)  {  // 数値が 0 場合は、その階乗は 1 です。
      return 1;
      }
else return (aNumber * factorial(anumber - 1));  // それ以外の場合は、数値が 1 になるまで再帰呼び出しを行います。
}


変数のスコープ

JScript には 2 つのスコープがあります。変数を関数定義の外で宣言すると、その変数はグローバル変数になり、プログラム内のどこからでもその値を参照したり変更したりできるようになります。関数定義の中で変数を宣言した場合は、その変数はローカル変数になります。ローカル変数は、関数が実行されるたびに生成され、関数の実行完了と同時に破棄されます。その関数以外のコードからその変数にアクセスすることはできません。

C++ などの言語にも "スコープ" があります。これは、新しいスコープを定義するかっこ ("{}") の組み合わせです。JScript ではサポートしていません。

ローカル変数には、グローバル変数と同じ名前を付けることができます。同じ名前を付けても、2 つの変数は完全に区別され、別の変数として処理されます。したがって、片方の値を変更しても、他方にはまったく影響はありません。このようなローカル変数を宣言した関数の中では、ローカル変数の方にしかアクセスできません。

var aCentaur = "半身半馬の怪物、"; // aCentaur のグローバル定義です。

// 簡潔に説明するため、ここに記述される JScript コードは省略します。
function antiquities()  // この関数内でローカル変数 aCentaur を宣言します。
{

// 簡潔に説明するため、ここに記述される JScript コードは省略します。
var aCentaur = "ケンタウロスは、おそらく馬に乗ったスキタイ人戦士です";

// 簡潔に説明するため、ここに記述される JScript コードは省略します。
   aCentaur += "が、間違って報告されました。というのも、"; // ローカル変数に文字列を追加します。

// 簡潔に説明するため、ここに記述される JScript コードは省略します。
} // 関数はここで終わりです。

var nothinginparticular = antiquities();
aCentaur += "経験の浅い無知な兵士が遠くから見たためです。

/*
関数内では、"ケンタウロスは、おそらく馬に乗ったスキタイ人戦士ですが、
間違って報告されました。というのも、" という文字列が変数に格納されます。関数の外では、
文の残りの "半身半馬の怪物、経験の浅い無知な兵士が遠くから見たためです。"
が変数に格納されます。
*/

同一のスコープ内では、どこで変数を宣言しても、その変数がスコープ内の先頭で宣言が行われたように処理されます。このことにより、スクリプトがプログラマの意図したとおりに動作しない状況も発生します。

tweak();
var aNumber = 100;
function tweak()  {
var newThing = 0;  // 変数 newThing を明示的に宣言します。

// このステートメントは、変数 newThing に未定義の値を代入しています。aNumber という名前のローカル変数があるためです。
    newThing = aNumber;

// 次のステートメントは、42 という値をローカル変数 aNumberaNumber に代入しています。
    aNumberaNumber = 42;
    if (false)  {
var aNumber;  // このステートメントは決して実行されません。
aNumber = 123;  // このステートメントは決して実行されません。
}  // 条件処理の終わり。

}   // 関数定義の終わり。

JScript が関数を実行すると、最初にすべての関数宣言の検索が行われます。

var someVariable;

未定義の初期値で変数が作成されます。

var someVariable = "something";

変数が値で宣言されている場合でも、初期値は未定義です。宣言された変数が利用されるのは、宣言を含む行が実行される場合だけです。

JScript では、変数宣言はすべてコードの実行前に処理されます。したがって、宣言が条件ブロックの中にあるか、そうでない構造体の中にあるかは処理には影響しません。変数がすべて検出された後、関数内のコードが起動されます。代入式の左辺にあり、var を使用した宣言が行われていない、つまり、黙示的に宣言されている変数が存在した場合、この変数はグローバル変数として作成されます。


データのコピー、受け渡し、および比較

JScript では、データの処理方法はデータ型ごとに異なります。

"値渡し" と "参照渡し"

数値およびブール値 (真 (true) や偽 (false) の値) のコピー、受け渡し、および比較は、"値渡し" で行われます。値渡しによるコピーや受け渡しでは、コンピュータのメモリ内に空間が新しく確保され、元の値がそこへコピーされます。それぞれの値は別の値と見なされるため、値渡しした後で元の値を変更しても、コピーされた値に影響は及びません (逆の場合も同様です)。

一方、オブジェクト、配列、および関数のコピー、受け渡し、および比較は、"参照渡し" で行われます。参照渡しによるコピーや受け渡しでは、実際に作成されるのは元の項目へのポインタですが、そのポインタを、あたかもコピーされた項目であるかのように扱うことになります。この場合は、元の項目に変更を加えると、元の項目とコピーされた項目の両方が変更されます (逆の場合も同様です)。実際存在する項目は 1 つだけで、"コピーされた項目" は、データへのもう 1 つの参照に過ぎません。

参照渡しによる比較では、2 つの変数がまったく同じ項目を参照していない限り、処理が失敗します。たとえば、2 つの異なる Array オブジェクトは、まったく同じ要素を持っていても、比較においては常に等しくないもの識別されます。比較処理が成功するためには、一方の変数はもう一方の変数の参照である必要があります。2 つの Array オブジェクトが同じ要素を持つものであるかどうかを確認するには、toString() メソッドの結果を比較します。

文字列の場合は、コピーや受け渡しは参照渡しで行われますが、比較は値渡しで行われます。new String("something")) で作成した 2 つの String オブジェクトの場合、その比較は参照渡しで行われますが、一方、または双方の値が文字列の場合には値渡しで行われます。

メモ ASCII 文字セットと ANSI 文字セットでは、その構成方法から、"Zoo" は "aardvark" より小さいと評価されます。つまり、文字の順序の中で大文字は小文字よりも先に来ます。大文字、小文字を区別しない一致検証を行うには、双方の文字列で toUpperCase() または toLowerCase() を呼び出します。

関数へのパラメータの受け渡し

関数へ値渡しでパラメータを渡した場合は、そのパラメータの新しいコピーが作成されます。作成されたコピーは、その関数の中でだけ存在します。オブジェクトや配列を参照として渡され、関数内で新しい値によってこれを上書きしても、関数の外ではこの新しい値は反映されません。関数外でも有効なのは、オブジェクトのプロパティおよび配列の要素に対する変更のみです。

以下に、Internet Explorer オブジェクト モデルを使用した例を示します。

// パラメータを上書き (clobber) するため、変更内容は
// 呼び出し側のコードには反映されません。
function Clobber(param)
{
// パラメータを上書きします。この処理は呼び出し側からは
// 認識されません。
    param = new Object();
param.message = "これは機能しません";
}

// パラメータのプロパティを変更します。
// 呼び出し側のコードからも認識される処理です。
function Update(param)
{
// オブジェクトのプロパティを変更します。
// 呼び出し側のコードからも認識される処理です。
param.message = "変更されました";
}

// オブジェクトを作成し、プロパティを指定します。
var obj = new Object();
obj.message = "これがオリジナルです";

// 関数 Clobber を呼び出し、obj.message を出力します。変更は行われていません。
Clobber(obj);
window.alert(obj.message); // "これがオリジナルです" というメッセージがまだ表示されています。

// 関数 Update を呼び出し、obj.message を出力します。変更が行われました。
Update(obj);
window.alert(obj.message); // "変更されました" が表示されます。

データの比較

値渡しで比較した場合は、別々に存在する項目が互いに等しいかどうかを調べます。通常、この比較はバイトごとに比較されます。一方、参照渡しで比較した場合は、2 つの項目が同一の項目を指すポインタであるかどうかを調べます。そして同一の項目を指していた場合、両者は等しいと評価されます。同一の項目を指していなかった場合は、たとえ値渡しで比較した場合に等しくなる値が格納されても、両者は等しくないと評価されます。

文字列を参照渡しでコピーしたり受け渡したりすると、メモリを節約することができます。ただし、いったん作成した文字列は変更できないため、参照渡しでコピーまたは受け渡しした文字列どうしも比較できます。これにより、片方の文字列が他方とは別々に生成されていなかった場合でも、2 つの文字列が同じ内容を持つかどうかを調べることができます。


配列の使用

Microsoft® JScript® (以下 JScript) で使用する配列は、"散在可能な" 配列です。たとえば、0、1、2 の番号が割り当てられた 3 つの要素を持つ配列の次の要素として、3 ～ 49 の要素ではなく 50 番目の要素を作成したりできます。この場合、自動設定されるサイズ変数を持つ配列であれば、サイズ変数は 4 ではなく 51 として設定されます (配列サイズの自動監視機能については、「組み込みオブジェクト」を参照してください)。もちろん、配列要素の番号がすべて連続した配列も作成できますが、必ずしも連続した配列である必要はありません。実際、JScript では、必ずしも配列に番号の添字を持たせる必要はありません。

JScript では、オブジェクトと配列は基本的にはまったく同じものです。大きな違いは、通常のオブジェクトは自動設定されるサイズのプロパティを持たないこと、および配列はオブジェクトのプロパティやメソッドを持たない点にあります。

配列メンバの指定方法

角かっこ [] を使ってメンバを指定する方法です。角かっこの中には、数値、または整数値として評価される式を入れます。次のコード例では、既にスクリプト内のほかの場所で変数 entryNum を定義し、それに値を代入してあることが前提となっています。

theListing = addressBook[entryNum];
theFirstLine = theListing[1];

連想配列としてのオブジェクト

通常、オブジェクトのプロパティにアクセスするには、ドット演算子 "." を使用します。次に例を挙げて説明します。

myObject.aProperty

この例では、プロパティ名が識別子となっています。また、添字演算子 "[]" を使用してオブジェクトのプロパティにアクセスすることもできます。この方法では、オブジェクトを連想配列として処理しています。連想配列という構造体を使用することで、さまざまなデータ値を多様な文字列に動的に代入できます。次に例を挙げて説明します。

myObject["aProperty"] // 上の例と同じです。

インデックス添字演算子は配列の要素へのアクセスでより一般的に使用されますが、オブジェクトで使用された場合、かっこで囲まれたインデックス部分は常に、文字列リテラルとして表現されたプロパティ名となります。

オブジェクトのプロパティにアクセスする 2 つの方法には、次の表にまとめて示すような重要な違いがあります。

演算子 | プロパティ名の扱い | プロパティ名の操作上の差異
ドット演算子 "." | 識別子 | データとして操作できない
添字演算子 "[]" | 文字列リテラル | データとして操作可能

ユーザー入力データによってオブジェクトを作成するなど、実行時までプロパティ名が何になるかわからないような場合には、上の表に説明した違いを有効に利用できます。連想配列からすべてのプロパティを取得するには、for...in ループを使用する必要があります。


特殊文字 (Jscript)

JScript

特殊文字

Microsoft® JScript® には特殊文字がいくつか用意されており、直接入力することはできない文字を文字列として使用できます。特殊文字は、円記号 (\) で始まります。この円記号 (\) は、次に続く文字が特殊文字であることを JScript のインタープリタに知らせる "エスケープ" 文字です。

エスケープ シーケンス | 文字
\b | バックスペース
\f | フォーム フィード
\n | ライン フィード (改行)
\r | キャリッジ リターン
\t | 水平タブ (Ctrl + I キー)
\' | シングル クォーテーション (')
\" | ダブル クォーテーション (")
\\ | 円記号 (\)

円記号 (\) 自体はエスケープ文字として使われるため、スクリプト内に円記号 (\) を直接入力することはできません。円記号 (\) を文字列として使うには、円記号 (\) を 2 度続けて入力 (\\) する必要があります。

document.write('イメージのパスは、C:\\webstuff\\mypage\\gifs\\garden.gif です。');
document.write('タイトルは、「After the snow of \'97. Grandma\'s house is covered」です。');


JScript スクリプトのトラブルシューティング

どのプログラミング言語にも、注意を怠ると陥ってしまう落とし穴が潜んでいます。また、どの言語でもその言語特有の意外な動作があります。たとえば、null 値を例に取っても、Microsoft® JScript® (以下 JScript) などのスクリプト言語と C 言語や C++ 言語ではその意味は異なります。

ここでは、JScript スクリプトを記述するときに発生する可能性のあるトラブルをいくつか挙げます。

構文エラー

プログラミング言語の構文は自然言語の文法に比べるとずっと厳密であるため、スクリプトを記述するときには細心の注意を払う必要があります。たとえば、文字列を指定する必要のあるパラメータを入力するときに引用符で囲むのを忘れると、それだけで正常に動作しなくなります。

スクリプトの解釈の順序

JScript は、各ユーザーが使用する Web ブラウザの HTML 解析処理の一部分として解釈されます。したがって、ドキュメントの <HEAD> セクション内にスクリプトを記述すると、その部分はどの <BODY> セクションが調べられるよりも先に解釈されます。<BODY> セクションで作成されるオブジェクトがあった場合、そのオブジェクトは <HEAD> が解析される時点では存在しないため、<HEAD> セクションのスクリプト内では扱えません。

メモ この動作は Internet Explorer 独自のものです。ASP および WSH には、他でも適用される異なる起動モデルがあります。

型の自動強制変換

JScript は、自動強制変換が行われる型制限の緩い言語です。このため、実際には、異なる型を持つ値どうしが等しくなることなどないにもかかわらず、次に示す式の例では、真 (true) として評価されます。

"100" == 100;
false == 0;

型と値の両方が同じであることを確認するには、厳密な等価演算子 === を使用します。次に示す式は、どちらも偽 (false) と評価されます。

"100" === 100;
false === 0;

演算子の優先順位

式の評価で何かの演算を行う場合、演算子の優先順位が、式の評価での演算子の記述順序よりも優先されます。たとえば、次に示す式の例では、最初に現れる演算子は減算 (-) の演算子ですが、減算 (-) よりも先に乗算 (*) が行われます。

theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;

オブジェクトでの for...in ループの使用

オブジェクトの各プロパティに対し、for...in ループを使って処理を行う場合は、オブジェクトの各フィールドがどのような順序でループ カウンタ変数に代入されるかをプログラマが予測したり制御したりはできません。さらに、言語のインプリメンテーションが変われば、この順序も変わる可能性があります。

with キーワード

with ステートメントは、目的のオブジェクト内に既に存在するプロパティを扱う場合には便利ですが、このステートメントを使っても、オブジェクトにプロパティを追加できません。オブジェクト内に新しいプロパティを作成するには、オブジェクトを明示的に指定する必要があります。

this キーワード

this キーワードは、オブジェクト定義の中で定義中のオブジェクト自身を指す場合に使用するキーワードです。通常は、オブジェクト定義ではない関数の実行中に、その関数自身を指すために this キーワードやその他の類似のキーワードは使用できません。ただし、その関数がメソッドとしてオブジェクトに割り当てられる関数であれば、割り当て先となるオブジェクトを指すために関数内で this キーワードを使用できます。

Internet Explorer でのスクリプトを表示するスクリプトの記述

</SCRIPT> タグがインタープリタで解釈されると、現在のスクリプトは終了します。"</SCRIPT>" そのものを表示するには、2 つ以上の文字列として記述してください。たとえば、"</SCR" と "IPT>" のように記述すると、それらを表示するステートメントの中で 2 つを連結することができます。

Internet Explorer での暗黙のウィンドウ参照

ウィンドウは同時に複数個開くことができるため、暗黙的なウィンドウ参照を行うと、必ず現在のウィンドウを指していると受け取られます。その他のウィンドウを指すには、明示的な参照を使用する必要があります。


条件コンパイル

条件コンパイルを使用すると、JScript 言語の新機能を利用しながら、その新機能をサポートしていない旧バージョンとの互換性も保持することができます。

条件コンパイルは、@cc_on ステートメント、@if ステートメント、または @set ステートメントを使用することでアクティブ化されます。JScript の新機能を使用する際や、スクリプトにデバッグ サポートを埋め込む場合、コード実行をトレースする場合などに使用するのが一般的です。

条件コンパイルのコードは、必ずコメント内に配置します。このように記述することにより、Netscape Navigator など条件コンパイルを認識しないホストではコードが無視されます。次に例を示します。

/*@cc_on @*/
/*@if (@_jscript_version >= 4)
   alert("JScript バージョン 4 以降です。");
   @else @*/
   alert("最新のスクリプト エンジンが必要です。");
/*@end @*/

この例では、条件コンパイルが @cc_on ステートメントによってアクティブにされた場合に限って使用される、特殊なコメント区切り文字を使用しています。条件コンパイルをサポートしないスクリプト エンジンでは、新しいスクリプト エンジンが必要であることを示すメッセージ情報だけが認識されます。


条件コンパイル変数

次に、条件コンパイルで使用可能な定義済み変数を示します。変数が true でない場合、定義は行われず、アクセスに対しては NaN と同じように機能します。

変数 | 説明
@_win32 | Win32 システム上で実行されていれば真 (true) です。
@_win16 | Win16 システム上で実行されていれば真 (true) です。
@_mac | Apple Macintosh システム上で実行されていれば真 (true) です。
@_alpha | DEC Alpha プロセッサ上で実行されていれば真 (true) です。
@_x86 | Intel プロセッサ上で実行されていれば真 (true) です。
@_mc680x0 | Motorola 680x0 プロセッサ上で実行されていれば真 (true) です。
@_PowerPC | Motorola PowerPC プロセッサ上で実行されていれば真 (true) です。
@_jscript | 常に真 (true) です。
@_jscript_build | JScript スクリプト エンジンのビルド番号を含みます。
@_jscript_version | JScript バージョン番号をメジャー、マイナ形式で含みます。


正規表現の概説

以下のページでは、正規表現についての一般的な使用方法について説明します。

各トピックの内容はそれぞれ独立していますが、それまでに説明されている機能や概念を理解していることを前提に記述されています。したがって、トピックは順に読み進むことをお勧めします。

「正規表現の概説」は次の各トピックで構成されています。

正規表現

正規表現の由来

正規表現の用途

正規表現の構文

正規表現の作成

優先順位

通常文字

特殊文字

印刷できない文字

文字の一致

修飾子

アンカー

代替とグループ化

後方参照


正規表現

これまで使用したことがない人にとっては正規表現という用語やその概念は馴染みにくいかもしれませんが、正規表現を理解することはさほど難しいことではありません。

たとえば、ハード ディスクにあるファイルを検索する場合を考えます。ファイルの検索時に ? や * を指定することも多くあります。? はファイル名の 1 文字に一致し、* は 0 個以上の文字に一致します。たとえば、'data?.dat' というパターンを指定すると、次のファイルが検索されます。

data1.dat
data2.dat
datax.dat
dataN.dat

? の代わりに * を指定すると、ファイルの検索対象が広がります。'data*.dat' は、次のファイルに一致します。

data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat

このようなファイル検索方法も確かに便利ですが、使用できる範囲は限られています。ワイルドカード ? と * は正規表現の概念を理解する上で助けになりますが、正規表現の機能はより豊富で、高い柔軟性も備えています。


正規表現の由来

正規表現の由来は、人の神経系がどのように機能しているかを研究していたころにさかのぼります。神経心理学者である Warren McCulloch と Walter Pitts が、神経回路網を数学的に説明するため方法を開発しました。

1956 年、数学者 Stephen Kleene が、McCulloch と Pitts の初期の作業に基づいて『Representation of Events in Nerve Nets』を著述し、そこで初めて正規表現の概念を紹介しました。ここで「正則集合の代数 (the algebra of regular sets)」を説明するのに使用された式 (expression) が「正規表現 (regular expression)」であり、現在の呼び名もこれに由来しています。

その後、この正規表現の概念は、UNIX の中心的な考案者 Ken Thompson によってコンピュータでの検索アルゴリズムに引き継がれました。正規表現を初めて使用した実用的なアプリケーションは UNIX のエディタ qed です。

このアルゴリズムの実用化に伴い、その他の概念はすべて過去のものとなりました。以降、正規表現は、テキスト ベースのエディタと検索ツールにおいて重要な役割を担い続けています。


正規表現の用途

一般的な検索処理と置換処理では、文字列を正確に指定する必要があります。静的テキストを対象とする単純検索や置換作業には十分かもしれませんが、動的テキストでは柔軟性に欠け、検索が困難になる場合もあります。

正規表現を使用すると、次のことが可能になります。

  • 文字列内のパターンのテスト。たとえば、入力文字列をテストして、文字列内に電話番号またはクレジットカード番号のパターンがあるかどうかをチェックできます。これをデータ確認と呼びます。
  • 文字列の置換。正規表現を使用して、ドキュメント内にある文字列を特定し、削除したり、ほかの文字列と置換できます。
  • パターン マッチに基づく、文字列からのサブ文字列の抽出。ドキュメントまたは入力フィールド内の特定の文字列を検索できます。

たとえば、Web サイト全体を検索して、日付の古いものを削除したり、HTML タグを置換したりする必要がある場合に、削除対象のものや置換対象の HTML タグがファイルに存在するかどうかを正規表現を使用して確認できます。削除対象または置換対象のものだけが含まれるファイルを絞り込むことができます。このようにして、正規表現を使用して日付の古いものを削除し、置換対象のタグを検索して置換できます。

また、文字列操作機能がそれほど充実していないと考えられている言語に対しても、正規表現は便利です。Visual Basic のサブセットである VBScript には、多彩な文字列操作機能があります。それに対して、JScript は C 言語と同様に、文字列操作機能にさしたる充実は見られません。正規表現を使用することで、JScript における文字列操作は格段に改善されます。また、VBScript でも正規表現を使用することでさらに機能が向上し、1 つの式で複数の文字列操作が可能になります。


正規表現の構文

正規表現は、通常の文字 (a ～ z など) と、"メタキャラクタ" という特殊文字から構成される文字列のパターンです。パターンによって、テキスト本文を検索するときに一致する 1 つ以上の文字列を指定します。正規表現は、検索対象の文字列と文字パターンを一致させるためのテンプレートとして機能します。

正規表現の例をいくつか次に示します。

JScript | VBScript | 一致結果
/^\[ \t]*$/ | "^\[ \t]*$" | 空行に一致
/\d{2}-\d{5}/ | "\d{2}-\d{5}" | 2 桁の数字、ハイフン、5 桁の数字で構成される ID 番号を確認
/<(.*)>.*<\/\1>/ | "<(.*)>.*<\/\1>" | HTML タグに一致

次の表は、メタキャラクタの全リストと、正規表現でのメタキャラクタの動作を示しています。

文字 | 説明
\ | 次に続く文字が特殊文字、リテラル、後方参照、または 8 進エスケープであることを示します。たとえば、"n" は文字 "n" と一致します。'\n' は改行文字と一致します。"\\" は "\" と、"\(" は "(" と一致します。
^ | 入力文字列の先頭と一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は '\n' または '\r' の直後にも一致します。
$ | 入力文字列の末尾と一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は '\n' または '\r' の直前にも一致します。
* | 直前のサブ式と 0 回以上一致します。たとえば、"zo*" は "z" とも "zoo" とも一致します。* は {0,} と同じ意味になります。
+ | 直前のサブ式と 1 回以上一致します。たとえば、"zo+" は "zo" や "zoo" とは一致しますが、"z" とは一致しません。+ は {1,} と同じ意味になります。
? | 直前のサブ式と 0 回または 1 回一致します。たとえば、"do(es)?" は "do" または "does" の"do" と一致します。? は {0,1} と同じ意味になります。
{n} | n には 0 以上の整数を指定します。正確に n 回一致します。たとえば、'o{2}' は "Bob" の 'o' とは一致しませんが、"food" の 2 つの o とは一致します。
{n,} | n には 0 以上の整数を指定します。少なくとも n 回一致します。たとえば、'o{2}' は "Bob" の "o" とは一致しませんが、"foooood" のすべての o とは一致します。'o{1,}' は 'o+' と同じ意味になります。'o{0,}' は 'o*' と同じ意味になります。
{n,m} | m および n には 0 以上の整数を指定します。n は m 以下です。n ～ m 回一致します。たとえば、"o{1,3}" は "fooooood" の最初の 3 つの o と一致します。'o{0,1}' は 'o?' と同じ意味になります。カンマと数の間には、スペースを入れないでください。
? | ほかの修飾子 (*, +, ?, {n}, {n,}, {n,m}) の直後に指定すると、一致パターンを制限することができます。既定のパターンでは、できるだけ多数の文字列と一致するのに比べて、制限されたパターンでは、できるだけ少ない文字列と一致します。たとえば、文字列 "oooo" に対して、'o+?' を指定すると 1 つの "o" と一致し、'o+' を指定するとすべての 'o' と一致します。
. | "\n" を除く任意の 1 文字に一致します。'\n' など、任意の文字と一致するには、'[.\n]' などのパターンを指定します。
(pattern) | pattern と一致した文字列を記憶します。記憶した一致文字列は、VBScript の SubMatches コレクションまたは JScript の $0...$9 プロパティを使用して Matches コレクションから取得できます。かっこ ( ) と一致するには、'\(' または '\)' を指定します。
(?:pattern) | pattern と一致しても、その文字列は記憶されず、後で使用することはできません。"or" を意味する (|) を使用してパターンの一部を結合するときに便利です。たとえば、'industry|industries' と指定する代わりに、'industr(?:y|ies)' と指定する方が簡単です。
(?=pattern) | pattern で指定した文字列が続く場合に一致と見なされます (肯定先読み)。一致した文字列は記憶されず、後で使用することはできません。たとえば、"Windows(?=95|98|NT|2000)" は "Windows 2000 " の "Windows" には一致しますが、"Windows 3.1" の "Windows " には一致しません。先読み処理では、読み進まれた文字は処理済みとは見なされません。一致の検出後、次の検索処理は先読みされた文字列の後からではなく、一致文字列のすぐ後から開始されます。
(?!pattern) | pattern で指定しない文字列が続く場合に一致と見なされます (否定先読み)。一致した文字列は記憶されず、後で使用することはできません。たとえば、"Windows(?=95|98|NT|2000)" は "Windows 3.1" の "Windows" には一致しますが、"Windows 2000" の "Windows " には一致しません。先読み処理では、読み進まれた文字は処理済みとは見なされません。一致の検出後、次の検索処理は先読みされた文字列の後からではなく、一致文字列のすぐ後から開始されます。
x|y | x または y と一致します。たとえば、'z|food' は "z" または "food" と一致します。"(z|f)ood" は "zoo" または "food" に一致します。
[xyz] | 文字セットを指定します。角かっこで囲まれた文字の中のいずれかに一致します。たとえば、'[abc]' は "plain" の 'a' と一致します。
[^xyz] | 除外する文字セットを指定します。角かっこで囲まれた文字以外の文字に一致します。たとえば、'[^abc]' は "plain" の 'p' と一致します。
[a-z] | 除外する文字の範囲を指定します。指定された範囲にある文字と一致します。たとえば、"[a-z]" は小文字の英字 "a" から "z" の範囲にある任意の文字と一致します。
[^a-z] | 否定の文字の範囲。指定範囲以外の文字と一致します。たとえば、"[^a-z]" は小文字の英字 "a" から "z" の範囲外にある任意の文字と一致します。
\b | 単語の境界と一致します。単語の境界とは、単語とスペースとの間の位置のことです。たとえば、'er\b' は "never" の 'er' と一致しますが、"verb" の 'er' とは一致しません。
\B | 単語境界以外と一致します。たとえば、'er\B' は "verb" の 'er' と一致しますが、"never" の 'er' とは一致しません。
\cx | x で指定した制御文字と一致します。たとえば、\cM は Control-M またはキャリッジ リターン文字と一致します。x の値は、A-Z または a-z の範囲内で指定します。それ以外を指定すると、リテラル文字 "c" と認識されます。
\d | 任意の 10 進文字と一致します。[0-9] と同じ意味になります。
\D | 10 進数字以外の任意の 1 文字と一致します。[^0-9] と同じ意味になります。
\f | フォームフィード文字と一致します。\x0c および \cL と同じ意味になります。
\n | 改行文字と一致します。\x0a および \cJ と同じ意味になります。
\r | キャリッジ リターン文字と一致します。\x0d および \cM と同じ意味になります。
\s | スペース、タブ、フォームフィードなどの任意の空白文字と一致します。[ \f\n\r\t\v] と同じ意味になります。
\S | 空白文字以外の任意の文字と一致します。[^ \f\n\r\t\v] と同じ意味になります。
\t | タブ文字と一致します。\x09 および \cI と同じ意味になります。
\v | 垂直タブ文字と一致します。\x0b および \cK と同じ意味になります。
\w | 単語に使用される任意の文字と一致します。アンダースコアも含まれます。'[A-Za-z0-9_]' と同じ意味になります。
\W | 単語に使用される文字以外の任意の文字と一致します。'[^A-Za-z0-9_]' と同じ意味になります。
\xn | n に指定した 16 進数のエスケープ値と一致します。16 進数のエスケープ値は 2 桁である必要があります。たとえば、'\x41' は "A" と一致します。'\x041' は '\x04' および "1" と同じ意味になります。この表記により、正規表現で ASCII コードを使用できるようになります。
\num | num と一致します。num には正の整数を指定します。既に見つかって記憶されている部分と一致します。たとえば、'(.)\1' は、連続する 2 つの同じ文字と一致します。
\n | 8 進エスケープ値または後方参照を指定します。\n の前に少なくとも n 個の記憶されたサブ式がある場合は、n は後方参照になります。それ以外の場合で n が 8 進数値 (0-7) である場合は、n は 8 進エスケープです。
\nm | 8 進数のエスケープ値または後方参照を指定します。\nm の前に少なくとも nm 個の記憶されたサブ式がある場合は、nm は後方参照になります。\nm の前に少なくとも n 個の記憶されたサブ式がある場合は、n が後方参照になります。どちらの条件にも当てはまらない場合で n および m が 8 進数 (0-7) である場合は、\nm は 8 進数のエスケープ値 nm と一致します。
\nml | n が 8 進数値 (0-3) で、m と l が 8 進数値 (0-7) の場合、8 進エスケープ値 nml と一致します。
\un | n と一致します。n には Unicode 文字で表した 4 桁の 16 進数を指定します。たとえば、\u00A9 は著作権の記号 (©)と一致します。


正規表現の作成

正規表現は、算術式と同じ要領で作成します。つまり、小さな式を各種メタキャラクタや演算子で組み合わせて大きな式にします。

正規表現では、パターンの各要素を 1 対の区切り記号で囲みます。JScript では、1 対のスラッシュ文字 (/) を区切り記号として使用します。次に例を示します。

/expression/

VBScript では、1 対の引用符 ("") を正規表現の区切り記号として使用します。次に例を示します。

"expression"

上の 2 つの例では、正規表現のパターン (expression) は RegExp オブジェクトの Pattern プロパティに保存されます。

正規表現の要素には個々の文字、文字セット、文字の範囲、選択した文字を使用でき、これらを組み合わせることも可能です。


優先順位

正規表現は、算術式と同じ要領で評価されます。つまり、左から右側へと評価され、各種優先順位も適用されます。

正規表現の各演算子の優先順位を高いものから低いものの順に次の表に示します。

演算子 | 説明
\ | エスケープ
(), (?:), (?=), [] | かっこおよび角かっこ
*、+、?、{n}、{n,}、{n,m} | 修飾子
^、$、\ メタキャラクタ | アンカーおよびシーケンス
| | 代替


通常文字

通常文字は、メタキャラクタとして割り当てられていない文字で、印刷できる文字と印刷できない文字のすべての文字で構成されます。大文字および小文字のすべてのアルファベット、すべての数字、すべての句読点、およびいくつかの記号が含まれます。

正規表現の最も単純な形式は、検索文字列の 1 文字と一致する通常文字です。たとえば、1 文字パターン 'A' は、検索文字列に 'A' が見つかるたびに一致します。1 文字の正規表現パターンの例を次に示します。

/a/
/7/
/M/

上の例と同じ意味の VBScript の 1 文字正規表現は次のとおりです。

"a"
"7"
"M"

複数の 1 文字正規表現をまとめて大きな式にすることもできます。たとえば、次に示す JScript の正規表現は、1 文字正規表現 'a'、'7'、および 'M' を組み合わせただけのものです。

/a7M/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"a7M"

この場合、連結演算子は使用しません。1 文字ずつ続けるだけです。


特殊文字 (正規表現)

JScript

特殊文字

メタキャラクタと一致させるときに、特別に対処する必要のあるメタキャラクタが多数あります。これらの特殊文字と一致させるには、円記号 (\) を先頭に指定して、最初にこの文字を "エスケープ" する必要があります。次の表は、これらの特殊文字とその意味を示しています。

特殊文字 | 説明
$ | 入力文字列の末尾と一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は '\n' または '\r' の直前にも一致します。$ と一致させる場合は \$ と指定します。
( ) | サブ式の開始と終了を指定します。サブ式は記憶され、後で使用することができます。かっこと一致させる場合は、\( および \) と指定します。
* | 直前のサブ式と 0 回以上一致します。* と一致させる場合は \* と指定します。
+ | 直前のサブ式と 1 回以上一致します。+ と一致させる場合は \+ と指定します。
. | 改行文字 \n 以外の 1 文字と一致します。. と一致させる場合は \ と指定します。
[ | 角かっこの式の開始を指定します。[ と一致させる場合は \[ と指定します。
? | 直前のサブ式と 0 回または 1 回一致するか、パターン制限修飾子を意味します。? と一致させる場合は \? と指定します。
\ | 次に続く文字が特殊文字、リテラル、後方参照、または 8 進エスケープであることを示します。たとえば、"n" は文字 "n" と一致します。'\n' は改行文字と一致します。"\\" は "\" と、"\(" は "(" と一致します。
^ | 入力文字列の先頭と一致します。かっこの中で使用した場合は、かっこ内の文字セットを否定します。^ と一致させる場合は \^ と指定します。
{ | 修飾子の式の開始を指定します。[ と一致させる場合は \[ と指定します。
| | 2 つの項目から選択します。| と一致させる場合は \| と指定します。


印刷できない文字

場合によっては、印刷できない文字を使用すると便利なときがあります。印刷できない文字を表すエスケープ シーケンスを次の表に示します。

文字 | 説明
\cx | x で指定した制御文字と一致します。たとえば、\cM は Control-M またはキャリッジ リターン文字と一致します。x の値は、A-Z または a-z の範囲内で指定します。それ以外を指定すると、リテラル文字 "c" と認識されます。
\f | フォームフィード文字と一致します。\x0c および \cL と同じ意味になります。
\n | 改行文字と一致します。\x0a および \cJ と同じ意味になります。
\r | キャリッジ リターン文字と一致します。\x0d および \cM と同じ意味になります。
\s | スペース、タブ、フォームフィードなどの任意の空白文字と一致します。[ \f\n\r\t\v] と同じ意味になります。
\S | 空白文字以外の任意の文字と一致します。[^ \f\n\r\t\v] と同じ意味になります。
\t | タブ文字と一致します。\x09 および \cI と同じ意味になります。
\v | 垂直タブ文字と一致します。\x0b および \cK と同じ意味になります。


文字の一致

ピリオド (.) は、改行文字 (\n) を除いた、文字列内の印刷可能文字または印刷できない文字の 1 文字と一致します。次の JScript の正規表現は、'aac'、'abc'、'acc'、'adc' などと、'a1c'、'a2c'、'a-c'、および 'a#c' と一致します。

/a.c/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"a.c"

ピリオド (.) が入力文字列の一部であるファイル名を含む文字列と一致させる場合は、正規表現のピリオドの前に円記号 (\) を付加します。たとえば、次の JScript の正規表現は 'filename.ext' と一致します。

/filename\.ext/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"filename\.ext"

これらの正規表現の使用方法には、かなりの制限があります。任意の 1 文字と一致するだけです。多くの場合、リストの特定の文字と一致するような指定が必要です。たとえば、第 1 章 (Chapter 1)、第 2 章 (Chapter 2) など、数字で表されている章の見出しを検索するなどが挙げられます。

角かっこの表現

1 つ以上の文字を角かっこ ([ と ]) で囲んで、一致文字のリストを作成できます。角かっこで囲んだ文字のリストは "角かっこ表現" と呼びます。角かっこ内では、ほかの場合と同じように、通常文字はその文字自体を表します。つまり、入力文字列にその文字の一致候補がある場合に一致します。角かっこ表現内では、大半の特殊文字の意味は失われます。次に例を示します。

  • ']' は、最初のアイテムでなければ、リストを終了します。リストで ']' を一致するには、開始の '[' の直後に記述します。
  • '\' はエスケープ文字として使用できます。'\' と一致させる場合は '\\' と指定します。

角かっこ表現の文字は、角かっこ表現の一致候補の 1 文字だけと一致します。たとえば、次の JScript の正規表現は 'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4'、および 'Chapter 5' と一致します。

/Chapter [12345]/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"Chapter [12345]"

単語 'Chapter' とその直後のスペースの位置は、角かっこ内の文字を基準にして固定です。角かっこ表現内の文字群は、単語 'Chapter' とスペースの直後の 1 文字を指定するのに使用されます。この場合は 9 文字目がそれに当たります。

個々の文字ではなく、文字の範囲を指定して一致文字を表現する場合は、範囲の開始文字と終了文字をハイフン (-) でつなぎます。個々の文字の文字値によって、範囲内の相対位置が決まります。次の JScript の正規表現は、上に示した角かっこリストと同じ意味の範囲表現です。

/Chapter [1-5]/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"Chapter [1-5]"

この範囲指定では、範囲の開始文字と終了文字も範囲の中に含まれます。開始文字は Unicode のソート順において、終了文字よりも前である必要があります。

角かっこ表現にハイフンを含める場合は、次のいずれかの方法で行います。

  • 円記号でエスケープする。
    [\-]
  • ハイフンを角かっこリストの先頭または最後に指定する。次の正規表現は、すべての小文字とハイフンに一致します。
    [-a-z]
[a-z-]
  • 範囲の開始文字をコード順でハイフンよりも前の文字にし、終了文字をハイフンと等しいか大きくする。次の正規表現は、どちらもこの条件を満たしています。
    [!--]
[!-~]

リストまたは範囲にないすべての文字を検索するには、リストの先頭にキャレット (^) を指定します。キャレットがリストの先頭以外の位置にある場合は、キャレット文字と一致し、特別な意味は失われます。次の JScript の正規表現は、5 よりも大きい番号の章見出し (chapter) と一致します。

/Chapter [^12345]/

VBScript では、次のようにします。

"Chapter [^12345]"

上の例では、9 文字目が 1、2、3、4、または 5 以外のものと一致します。たとえば、'Chapter 7' や 'Chapter 9' と一致します。

上と同じ意味の正規表現をハイフン (-) を使用して表すこともできます。

JScript の場合は次のようになります。

/Chapter [^1-5]/

VBScript の場合は次のようになります。

"Chapter [^1-5]"

通常、角かっこ表現を使用するのは、任意の大文字または小文字のアルファベットまたは任意の数字を一致させるときです。JScript の正規表現の例を示します。

/[A-Za-z0-9]/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"[A-Za-z0-9]"


修飾子

一致する文字数がいくつあるかわからないときがあります。これに対応するため、正規表現では修飾子の概念を採用しています。この修飾子を使用して、正規表現の所定の要素を何回一致させるか指定することができます。

各種修飾子とその意味を次の表に示します。

文字 | 説明
* | 直前のサブ式と 0 回以上一致します。たとえば、'zo*' は "z" とも "zoo" とも一致します。* は {0,} と同じ意味になります。
+ | 直前のサブ式と 1 回以上一致します。たとえば、"zo+" は "zo" や "zoo" とは一致しますが、"z" とは一致しません。+ は {1,} と同じ意味になります。
? | 直前のサブ式と 0 回または 1 回一致します。たとえば、'do(es)?' は "do" または "does" の"do" と一致します。? は {0,1} と同じ意味になります。
{n} | n には 0 以上の整数を指定します。正確に n 回一致します。たとえば、'o{2}' は "Bob" の 'o' とは一致しませんが、"food" の 2 つの o とは一致します。
{n,} | n には 0 以上の整数を指定します。少なくとも n 回一致します。たとえば、'o{2}' は "Bob" の 'o' とは一致しませんが、"foooood" のすべての o とは一致します。'o{1,}' は 'o+' と同じ意味になります。'o{0,}' は 'o*' と同じ意味になります。
{n,m} | m および n には 0 以上の整数を指定します。n は m 以下です。n ～ m 回一致します。たとえば、'o{1,3}' は "fooooood" の最初の 3 つの o と一致します。'o{0,1}' は 'o?' と同じ意味になります。カンマと数の間には、スペースを入れないでください。

大きなドキュメントでは、章番号が 9 を超えることが考えられます。そのため、2 桁または 3 桁の章番号を扱えるようにすることが必要です。この場合にも修飾子を使用します。次の JScript の正規表現は、任意の番号の章見出し (chapter) と一致します。

/Chapter [1-9][0-9]*/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"Chapter [1-9][0-9]*"

修飾子は範囲表現のあとに指定します。したがって、0 ～ 9 だけの章も含むすべての範囲表現に適用されます。

2 文字目以降は必ずしも数字である必要はないため、'+' 修飾子は使用しません。'?' も、桁数が 2 桁に固定されてしまうため、使用しません。'Chapter' とスペースに続く数字が少なくとも 1 桁あるものと一致します。

章番号が 99 以下であることが確かである場合は、次の JScript の正規表現を使用して、章番号が 1 桁以上 2 桁以下であるものと一致させることができます。

/Chapter [0-9]{1,2}/

VBScript では、次のようにします。

"Chapter [0-9]{1,2}"

上の正規表現では、99 を超える章番号があったときに、その先頭の 2 桁と一致してしまう点がやや不便です。また、第 0 章 (Chapter 0) があったときにも一致してしまいます。2 桁の章番号だけに一致するよう改善した JScript の正規表現を次に示します。

/Chapter [1-9][0-9]?/

または

/Chapter [1-9][0-9]{0,1}/

VBScript では、次のようにします。

"Chapter [1-9][0-9]?"

または

"Chapter [1-9][0-9]{0,1}"

'*'、'+'、および '?' の各修飾子は、すべて "無制限" と呼ばれ、できるだけ多くの文字列と一致します。場合によっては、予想外な結果になることがあります。最小一致で済ませたい場合もあります。

たとえば、HTML ドキュメントの H1 タグで囲まれている章タイトルを検索する場合を考えます。ドキュメントでは次のように記述されています。

<H1>Chapter 1 – Introduction to Regular Expressions</H1>

次の正規表現は、H1 タグの開始記号 (<) から終了記号 (>) までのすべてと一致します。

/<.*>/

VBScript の正規表現は次のとおりです。

"<.*>"

H1 開始タグだけと一致させるには、次の正規表現を使用します。この場合は <H1> だけと一致します。

/<.*?>/

または

"<.*?>"

'*'、'+'、または '?' の各修飾子のあとに '?' を指定すると、無制限の一致から、制限された一致、つまり最小一致に変わります。


アンカー

これまで見てきた例は、章見出しを、その位置に関係なく検索するものでした。文字列 'Chapter'、スペース、章番号の組み合わせは、実際の章見出しである場合もあれば、別の章への参照を示している場合もあります。実際の章見出しは必ず行頭から始まるため、これを利用して、参照を表す章見出しを除外した実際の章見出しだけを検索します。

この場合には、アンカーを使用します。アンカーを使用すると、正規表現の一致箇所を行の先頭または最後に固定することができます。また、単語内または単語の先頭または最後と一致する正規表現を作成することもできます。正規表現のアンカーとその意味を次の表に示します。

文字 | 説明
^ | 入力文字列の先頭と一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は '\n' または '\r' の直後にも一致します。
$ | 入力文字列の末尾と一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は '\n' または '\r' の直前にも一致します。
\b | 単語の境界と一致します。単語の境界とは、単語とスペースとの間の位置のことです。
\B | 単語の境界ではない部分と一致します。

修飾子とアンカーは一緒に使用できません。改行コードまたは単語の境界の前後を同時に指定することはできないため、'^*' などの正規表現は使用できません。

行頭の文字列と一致させるには、正規表現の先頭で '^' を指定します。角かっこ内で使用する '^' とは異なりますので、間違えないようにしてください。まったく別のものです。

行の最後の文字列と一致させるには、正規表現の最後で '$' を指定します。

アンカーを使用した次の JScript の正規表現で章見出しを検索すると、行頭から始まる章見出しのうち、章番号が最大 2 桁までのものと一致します。

/^Chapter [1-9][0-9]{0,1}/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"^Chapter [1-9][0-9]{0,1}"

実際の章見出しは行頭から始まるだけでなく、その行には章見出ししかないため、章見出しは行の最後でもあります。次の正規表現では、参照を除外した、実際の章見出しだけに一致します。行の先頭と最後だけに一致するように正規表現で指定しています。

/^Chapter [1-9][0-9]{0,1}$/

VBScript では、次のようにします。

"^Chapter [1-9][0-9]{0,1}$"

単語の境界と一致させる場合は少し異なりますが、正規表現では重要な機能です。単語の境界とは、単語とスペースとの間の位置のことです。それ以外の位置は、単語の境界ではありません。次の JScript の正規表現は、'Chapter' の先頭の 3 文字と一致します。単語の境界の直後に指定しているためです。

/\bCha/

VBScript の場合。

"\bCha"

'\b' 演算子の位置が重要になります。一致させる文字列の先頭に指定した場合は、単語の先頭が検索対象になります。文字列の最後に指定した場合は、単語の最後が検索対象になります。たとえば、次の正規表現は、単語 'Chapter' の 'ter' と一致します。単語の境界の前に指定しているためです。

/ter\b/

および

"ter\b"

次の正規表現は、単語 'Chapter' の 'apt' と一致しますが、'aptitude' の 'apt' とは一致しません。

/\Bapt/

および

"\Bapt"

これは、'Chapter' の 'apt' は単語の境界にありませんが、'aptitude' の 'apt' は単語の境界にあるためです。単語の境界ではない位置を指定する演算子では、単語の先頭または最後を基準にしないため、演算子を指定する位置は関係ありません。


代替とグループ化

'|' を使用して、 2 つ以上の代替表現を選択できます。章見出しの正規表現を拡張して、章見出し以外のものとも一致させることができます。ただし、思っているほど簡単にはいきません。代替を使用すると、'|' で区切られた表現のうち、最も大きいものと一致します。次に示す JScript と VBScript の正規表現は、1 桁または 2 桁の数字が続く 'Chapter' または 'Section' のうち、行の先頭または最後にあるものと一致するように思えます。

/^Chapter|Section [1-9][0-9]{0,1}$/
"^Chapter|Section [1-9][0-9]{0,1}$"

実際には、上に示した正規表現は、行頭にある単語 'Chapter'、または任意の桁数の数字が続く 'Section' のうち行の最後にあるものと一致します。入力文字列が 'Chapter 22' であるとすると、上の正規表現では、'Chapter' としか一致しません。入力文字列が 'Section 22' である場合は、'Section 22' と一致します。しかし、これは当初の目的とは異なるため、上の正規表現を修正する必要があります。

かっこを使用して代替の範囲を制限し、2 つの単語 'Chapter' と 'Section' だけに適用されるようにします。ただし、かっこはサブ式を作成する場合にも使用されるため、かっこを使用する場合にも注意が必要です。サブ式については後半で説明しています。上の正規表現の適切な位置にかっこを追加して、'Chapter 1' または 'Section 3' のどちらにも一致する正規表現を作成します。

次に示す正規表現では、かっこを使用して 'Chapter' と 'Section' をグループ化し、適切に動作するようにしています。JScript の場合。

/^(Chapter|Section) [1-9][0-9]{0,1}$/

VBScript の場合。

"^(Chapter|Section) [1-9][0-9]{0,1}$"

この正規表現は正しく動作しますが、思いがけない結果をもたらすこともあります。'Chapter|Section' をかっこで囲むことで正しくグループ化されますが、それと同時に、どちらか一致した単語が後で使用できるように記憶されます。上の正規表現では、かっこは 1 組だけなので、記憶される "サブマッチ" も 1 つだけです。このサブマッチを参照するには、VBScript では Submatches コレクションを使用し、JScript では RegExp オブジェクトの $1-$9 プロパティを使用します。

サブマッチを記憶する必要がある場合もあれば、必要ない場合もあります。上の例では、選択できる単語 'Chapter' または 'Section' をグループ化するためだけにかっこを使用しています。一致結果を後で使用することは考えていません。実際にサブマッチを記憶する必要がないのであれば、使用しないようにします。サブマッチを記憶する時間とメモリが節約されるので、正規表現がさらに効果的に動作します。

正規表現のかっこ内で '?:' を指定して、一致結果を記憶させないようにすることができます。次のように正規表現を修正して、サブマッチを記憶させないようにします。JScript の場合。

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

VBScript の場合。

"^(?:Chapter|Section) [1-9][0-9]{0,1}$"

メタキャラクタ '?:' のほかにも、"先読み" 一致で使用される、サブマッチを記憶しない 2 つのメタキャラクタがあります。?= を指定した肯定先読みは、かっこ内の正規表現と一致する文字列が始まる位置にある検索文字列と一致します。'?!' を指定した否定先読みは、正規表現と一致しない文字列が始まる位置にある検索文字列と一致します。

たとえば、Windows 3.1、Windows 95、Windows 98、および Windows NT への参照項目があるドキュメントを考えます。このうち、Windows 95、Windows 98、および Windows NT への参照項目を、すべて Windows 2000 への参照項目に変更するとします。次の JScript の正規表現では、肯定先読みを使用して、Windows 95、Windows 98、および Windows NT と一致させています。

/Windows(?=95 |98 |NT )/

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"Windows(?=95 |98 |NT )"

次の文字列の検索は、先読みに含まれる文字ではなく、パターンが一致した文字列の直後から開始されます。たとえば、上の正規表現で 'Windows 98' と一致した場合、検索は '98' の直後ではなく、'Windows' の直後から開始されます。


後方参照

正規表現の最も重要な機能の 1 つに、一致したパターンの一部を後で使用できるように記憶しておくことがあります。前に説明したように、正規表現のパターンまたはパターンの一部をかっこで囲むと、かっこで囲んだ部分が一時バッファに保存されます。正規表現の保存を無効にするには、サブマッチを記憶しないメタキャラクタ '?:'、'?='、または '?!' を使用します。

記憶された各サブマッチは、正規表現パターンの左から右の順に保存されます。サブマッチが保存されるバッファ番号は 1 から始まり、最大 99 までです。各バッファにアクセスするには、'\n' を使用します。ここで、n はバッファを指定する 1 桁または 2 桁の数字です。

後方参照の最も簡単で便利な用途は、文字列にある 2 つのまったく同じ単語の一致候補を特定することです。次の文で例を示します。

Is is the cost of of gasoline going up up?

見てわかるように、上の文にはいくつかの単語が重複しています。単語を 1 つずつ調べていくことなく、このような文を修正できると便利です。次の JScript の正規表現では、これを実現するため、1 つのサブ式を使用しています。

/\b([a-z]+) \1\b/gi

上の例と同じ意味の VBScript の正規表現は次のとおりです。

"\b([a-z]+) \1\b"

この場合、かっこの中のすべてがサブ式になります。記憶されたサブマッチには、'[a-z]+' で指定されているように、1 つ以上のアルファベットが含まれています。正規表現の 2 番目の部分は、その前に記憶されたサブマッチへの参照です。つまり、かっこ内の正規表現と一致した 2 つ目の一致候補です。'\1' は、1 つ目のサブマッチを指定するのに使用します。単語の境界を表すメタキャラクタによって、離れている単語だけが検出されます。メタキャラクタを指定しないと、正規表現によって "is issued" や "this is" なども間違って検出されてしまいます。

JScript の正規表現では、通常の正規表現に続けてグローバル フラグ ('g') を指定して、入力文字列にある一致候補とできるだけ多く一致するようにします。正規表現の最後には、'i' フラグを指定して、大文字小文字を区別しないようにします。複数行フラグは、改行文字の前後に一致候補が存在する場合があることを表します。VBScript では、これらフラグを正規表現で設定できないので、RegExp オブジェクトの各プロパティを使用して明示的に設定しておく必要があります。

次の JScript コードで上に示した正規表現を使用すると、サブマッチ情報を使用して、テキスト内にある 2 つの連続したまったく同じ単語が、同じ単語 1 つと置換されます。

var ss = "Is is the cost of of gasoline going up up?.\n";
var re = /\b([a-z]+) \1\b/gim;       //正規表現パターンの作成
var rv = ss.replace(re,"$1");   //2 つの連続した単語を 1 つの単語に置換

上の例に最も近い意味の VBScript の正規表現は次のとおりです。

Dim ss, re, rv
ss = "Is is the cost of of gasoline going up up?." & vbNewLine
Set re = New RegExp
re.Pattern = "\b([a-z]+) \1\b"
re.Global = True
re.IgnoreCase = True
re.MultiLine = True
rv = re.Replace(ss,"$1")

VBScript コードでは、グローバル フラグ、大文字小文字を区別しないフラグ、および複数行フラグは、RegExp オブジェクトの名前付きプロパティを使用して設定しています。

replace メソッドで $1 を使用しているのは、1 番目に保存されたサブマッチを参照するためです。サブマッチが複数ある場合は、それぞれ $2、$3 で参照します。

後方参照は、URI (Universal Resource Indicator) をコンポーネントに分割する際にも使用できます。次の URI をプロトコル (ftp、http など)、ドメイン アドレス、ページ/パスに分割するとします。

http://msdn.microsoft.com:80/scripting/default.htm

次の正規表現を使用して分割します。JScript の場合。

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/

VBScript の場合。

"(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)"

1 番目のかっこのサブ式で、Web アドレスのプロトコルの部分を取り出します。コロンと 2 つのスラッシュで始まる単語と一致します。2 番目のかっこのサブ式は、アドレスのドメイン アドレスの部分を取り出します。'^'、'/'、または ':' を含まない文字の並びと一致します。3 番目のかっこのサブ式は、Web サイトのポート番号が指定されている場合に、その番号を取り出します。コロンに続く 0 桁以上の数字と一致します。4 番目のかっこのサブ式は、Web アドレスで指定されたパスとページの情報を取り出します。'#' またはスペース文字以外の 1 文字以上の文字と一致します。

この正規表現を上に示した URI に適用すると、サブマッチは次のようになります。

RegExp.$1 には "http" が記憶されます。

RegExp.$2 には "msdn.microsoft.com" が記憶されます。

RegExp.$3 には ":80" が記憶されます。

RegExp.$4 には "/scripting/default.htm" が記憶されます。


JScript ランゲージ リファレンス

機能に関する情報

エラー

関数

メソッド

オブジェクト

演算子

プロパティ

ステートメント


機能に関する情報

次の表は、Jscript の機能に関する情報の一覧です。

内容 | 機能
ホスト アプリケーションでサポートされる JScript のバージョンの一覧と、バージョンごとの機能の一覧が表示されます。 | バージョン情報
現在 ECMA に準拠している JScript の機能の一覧が表示されます。 | ECMA に準拠する JScript の機能
現在 ECMA に準拠していない JScript の機能の一覧が表示されます。 | ECMA に準拠しないJScript の機能


ECMA に準拠する JScript の機能

次の表は、ECMA に準拠する Jscript 機能の一覧です。

種類 | キーワード
Math オブジェクト | Math abs, acos, asin, atan, atan2, ceil, cos, exp, floor, log, max, min, pow, random, round, sin, sqrt, tan, E, LN2, LN10, LOG2E, LOG10E, PI, SQRT1_2, SQRT2
演算子 | 加算 (+)、減算 (-) 余剰演算 (%) 乗算 (*)、除算 (/) 単項マイナス (-) 等しい (==)、等しくない (!=) より小さい (<)、より小さいか等しい (<=) より大きい (>) より大きいか等しい (>=) 論理 AND (&&)、論理 OR (||)、論理 NOT (!) ビットごとの AND (&)、ビットごとの Or (|)、ビットごとの NOT (~)、ビットごとの XOR (^) 左シフト (<<)、右シフト (>>) 符号なし右シフト (>>>) 条件 (?:) カンマ (,) delete、typeof、void デクリメント (—)、インクリメント (++)
オブジェクト | Array Boolean Date Function Global Math Number Object String
オブジェクトの作成 | Object new constructor、instanceof、prototype、toString、valueOf
関数の作成 | Function arguments、length
グローバルなメソッド | Global escape、unescape eval isFinite、isNaN parseInt、parseFloat
コメント | /*...*/ または //
数値 | Number MAX_VALUE、MIN_VALUE NaN NEGATIVE_INFINITY、POSITIVE_INFINITY
制御構造 | Break continue for for...in if...else return while
宣言 | Function new this var with
代入 | 代入 (=) 複合代入 (OP=)
配列操作 | Array join、length、reverse、sort
日付/時刻 | Date getDate、getDay、getFullYear、getHours、getMilliseconds、getMinutes、getMonth、getSeconds、getTime、getTimezoneOffset、getYear、 getUTCDate、getUTCDay、getUTCFullYear、getUTCHours、getUTCMilliseconds、getUTCMinutes、getUTCMonth、getUTCSeconds、 setDate、setFullYear、setHours、setMilliseconds、setMinutes、setMonth、setSeconds、setTime、setYear、 setUTCDate、setUTCFullYear、setUTCHours、setUTCMilliseconds、setUTCMinutes、setUTCMonth、setUTCSeconds、 toGMTString、toLocaleString、toUTCString、parse、UTC
ブール値 | Boolean
文字列 | String charAt、charCodeAt、fromCharCode indexOf、lastIndexOf split toLowerCase、toUpperCase length
リテラル | NaN null true、false Infinity undefined


ECMA に準拠しない JScript の機能

次の表は、ECMA に準拠しない Jscript 機能の一覧です。

種類 | キーワード
エラー処理 | Error description, number throw ステートメント, try...catch ステートメント
演算子 | 厳密等価演算子 (===)、厳密非等価演算子 (!==)
オブジェクト | Enumerator RegExp Regular Expression VBArray ActiveXObject GetObject
関数の作成 | caller
条件コンパイル | @cc_on ステートメント @if ステートメント @set ステートメント 条件コンパイル変数
スクリプト エンジン ID | ScriptEngine ScriptEngineBuildVersion ScriptEngineMajorVersion ScriptEngineMinorVersion
正規表現とパターン マッチング | RegExp index、input、lastIndex、$1...$9、source、compile、exec、test 正規表現の構文
制御構造 | do...while Labeled switch
配列操作 | concat, slice VBArray dimensions、getItem、lbound、toArray、ubound
日付/時刻 | getVarDate
文字列 | concat、slice match、replace、search anchor、big、blink、bold、fixed、fontcolor、fontsize、italics、link、small、strike、sub、sup
列挙 | Enumerator atEnd、item、moveFirst、moveNext


JScript エラー

次の表に Jscript エラーの種類を示します。

詳細情報 | 参照先
JScript の実行時エラーの一覧。 | 実行時エラー
JScript の構文エラーの一覧。 | 構文エラー


JScript 実行時エラー

JScript 実行時エラーは、JScript のスクリプトがシステムで処理できない動作を実行しようとした場合に発生するエラーです。JScript 実行時エラーは、変数の数式が評価されメモリが割り当てられる、スクリプト実行時に発生します。

エラー番号 | 内容
5000 | 'this' に割り当てることはできません。
5001 | 数字を指定してください。
5002 | 関数を指定してください。
5003 | 関数の戻り値に割り当てることはできません。
5005 | 文字列を指定してください。
5006 | Date オブジェクトを指定してください。
5007 | オブジェクトを指定してください。
5008 | 不正な代入です。
5009 | 定義されていない識別子です。
5010 | ブール型 (Boolean) を指定してください。
5012 | オブジェクトのメンバを指定してください。
5013 | VBArray を指定してください。
5014 | JScript オブジェクトを指定してください。
5015 | Enumerator オブジェクトを指定してください。
5016 | Regular Expression オブジェクトがありません。
5017 | 正規表現で構文エラーが発生しました。
5018 | 文字の繰り返しを表す正規表現演算子が不正です。
5019 | 正規表現の中に ']' を指定してください。
5020 | 正規表現の中に ')' を指定してください。
5021 | 文字セットの範囲が不正です。
5022 | catch ステートメントでは適用されますが、throw ステートメントでは適用されません。
5023 | 関数には、有効なプロトタイプ オブジェクトが存在しません。
5024 | エンコードする URI は無効な文字を含んでいます。
5025 | デコードする URI は有効なエンコーダではありません｡
5026 | 小数の桁数が有効範囲を超えています。
5027 | 有効桁数の範囲を超えています。
5028 | Array または arguments オブジェクトがありません。
5029 | 配列の長さは、正の有限整数でなければなりません。
5030 | 配列の長さには、正の有限数が割り当てられなければなりません。

参 照

JScript 構文エラー


JScript 構文エラー

JScript 構文エラーは、JScript ステートメントの構造が JScript スクリプト言語の文法上の規則に違反した場合に発生するエラーです。JScript 構文エラーは、プログラム実行前のコンパイル時に発生します。

エラー番号 | 内容
1002 | 構文エラーです。
1003 | ':' がありません。
1004 | ';' がありません。
1005 | '(' がありません。
1006 | ')' がありません。
1007 | ']' がありません。
1008 | '{' がありません。
1009 | '}' がありません。
1010 | 識別子がありません。
1011 | '=' がありません。
1012 | '/' がありません。
1014 | 不正な文字です。
1015 | 終了していない文字列型の定数です。
1016 | 終了していないコメントです。
1018 | 'return' ステートメントが関数の外側にあります。
1019 | 'break' はループの外側には指定できません。
1020 | 'continue' はループの外側には指定できません。
1023 | 16 進数を指定してください。
1024 | while を指定してください。
1025 | この Label は既に定義されています。
1026 | この Label が定義されていません。
1027 | 'default' は 'switch' ステートメントのなかでは、一度のみ表示されます。
1028 | 識別子、文字列または数がありません。
1029 | 'End' がありません。
1030 | 条件コンパイルは中止されます。
1031 | 定数がありません。
1032 | '@' がありません。
1033 | catch ステートメントがありません。
1035 | throw ステートメントに指定する式は、ソース コードの同一行に記述してください。

参 照

JScript 実行時エラー


JScript 関数

次の表に Jscript 関数を示します。

内容 | 言語要素
ファイルのオートメーション オブジェクトへの参照を返します。 | GetObject 関数
使用中のスクリプト エンジンを表す文字列を返します。 | ScriptEngine 関数
使用中のスクリプト エンジンのビルド バージョン番号を返します。 | ScriptEngineBuildVersion 関数
使用中のスクリプト エンジンのメジャー バージョン番号を返します。 | ScriptEngineMajorVersion 関数
使用中のスクリプト エンジンのマイナ バージョン番号を返します。 | ScriptEngineMinorVersion 関数


GetObject 関数 (Jscript)

JScript

GetObject 関数

ファイルのオートメーション オブジェクトへの参照を返します。

GetObject([pathname] [, class])

引数

pathname
省略可能です。オブジェクトが含まれているファイル名までのフル パスを指定します。省略した場合は、引数 class を必ず指定する必要があります。
class
省略可能です。オブジェクトのクラスを指定します。

引数 class は、次の指定項目 (appname.objectype) から構成されます。

appname
必ず指定します。オブジェクトを提供するアプリケーションの名前を指定します。
objectype
必ず指定します。作成するオブジェクトの種類またはクラスを指定します。

解説

ファイルのオートメーション オブジェクトにアクセスし、オブジェクトをオブジェクト変数に代入するには、GetObject 関数を使用します。GetObject 関数で返されるオブジェクトへの参照は、オブジェクト変数に代入します。次に例を示します。

var CADObject;
CADObject = GetObject("C:\\CAD\\SCHEMA.CAD");

このコード例が実行されると、指定された引数 pathname に対応するアプリケーションが起動し、指定されたファイルのオブジェクトがアクティブになります。GetObject 関数では、引数 pathname に長さ 0 の文字列 ("") が指定されると、指定の種類の新規オブジェクトのインスタンスを返します。引数 pathname が省略されると、指定の種類の現在アクティブなオブジェクトを返します。指定の種類のオブジェクトが存在しない場合は、エラーが発生します。

アプリケーションによっては、ファイルの一部をアクティブにできるものがあります。ファイル名の最後に感嘆符 (!) を付け、続けてアクティブにするファイルの部分を表す文字列を指定します。このような文字列を作成する方法については、オブジェクトを作成したアプリケーションのマニュアルを参照してください。

たとえば、描画のアプリケーションでは、1 つのファイルの複数のレイヤに描画を保存することがあります。次のコード例を使用すると、SCHEMA.CAD という描画ファイルの 1 つのレイヤをアクティブにできます。

var LayerObject = GetObject("C:\\CAD\\SCHEMA.CAD!Layer3");

オブジェクトのクラスが指定されていない場合、指定されたファイル名を基に、オートメーションは起動するアプリケーションとアクティブにするオブジェクトを決定します。ただし、ファイルによって、複数のオブジェクトのクラスをサポートしている場合があります。たとえば、描画ファイルは Application、Drawing、および Toolbar の 3 種類の異なるオブジェクトをサポートし、すべてのオブジェクトが同じファイルに含められます。ファイルのどのオブジェクトをアクティブにするかは、引数 class で指定します。次に例を示します。

var MyObject;
MyObject = GetObject("C:\\DRAWINGS\\SAMPLE.DRW", "FIGMENT.DRAWING");

このコード例では、FIGMENT が描画のアプリケーションの名前で、DRAWING がそのアプリケーションによってサポートされるオブジェクトの種類です。アクティブになったオブジェクトをコードで参照するには、定義したオブジェクト変数を使います。上の例では、オブジェクト変数 MyObject を使って新規オブジェクトのプロパティとメソッドにアクセスします。次に例を示します。

MyObject.Line(9, 90);
MyObject.InsertText(9, 100, "Hello, world.");
MyObject.SaveAs("C:\\DRAWINGS\\SAMPLE.DRW");
メモ GetObject 関数は、オブジェクトの現在のインスタンスがある場合や、既にロードされたファイルからオブジェクトを作成する場合に使います。現在のインスタンスがない場合、またはロード済みのファイルからオブジェクトを起動しない場合は、ActiveXObject オブジェクトを使います。

シングルインスタンス オブジェクトとしてオブジェクトが登録された場合、ActiveXObject オブジェクトを何度使用しても、作成されるオブジェクトのインスタンスは 1 つだけです。シングルインスタンス オブジェクトの場合、引数 pathname に長さ 0 の文字列 ("") を指定して GetObject 関数を呼び出すと、常に同じインスタンスを返します。また、引数 pathname を省略すると、エラーになります。

必要条件

バージョン 5

参 照

ActiveXObject オブジェクト


ScriptEngine 関数 (Jscript)

JScript

ScriptEngine 関数

使用中のスクリプト エンジンを表す文字列を返します。

ScriptEngine( )

解説

ScriptEngine 関数の戻り値は次のとおりです。

String | 内容
JScript | 現在のスクリプト エンジンは、Microsoft JScript です。
VBA | 現在のスクリプト エンジンは、Microsoft Visual Basic for Applications です。
VBScript | 現在のスクリプト エンジンは、Microsoft Visual Basic Scripting Edition です。

使用例

次のコードは、ScriptEngine 関数の使用例です。

function GetScriptEngineInfo(){
   var s;
   s = ""; // 文字列を連結します。
   s += ScriptEngine() + " Version ";
   s += ScriptEngineMajorVersion() + ".";
   s += ScriptEngineMinorVersion() + ".";
   s += ScriptEngineBuildVersion();
   return(s);
}

必要条件

バージョン 5

参 照

ScriptEngineBuildVersion 関数 | ScriptEngineMajorVersion 関数 | ScriptEngineMinorVersion 関数


ScriptEngineBuildVersion 関数 (Jscript)

JScript

ScriptEngineBuildVersion 関数

使用中のスクリプト エンジンのビルド バージョン番号を返します。

ScriptEngineBuildVersion( )

解説

この関数の戻り値は、使用中のスクリプト言語のダイナミックリンク ライブラリ (DLL) 内に格納されているバージョン情報から直接取得されます。

使用例

次のコードは、ScriptEngineBuildVersion 関数の使用例です。

function GetScriptEngineInfo(){
   var s;
   s = ""; // 文字列を連結します。
   s += ScriptEngine() + " Version ";
   s += ScriptEngineMajorVersion() + ".";
   s += ScriptEngineMinorVersion() + ".";
   s += ScriptEngineBuildVersion();
   return(s);
}

必要条件

バージョン 5

参 照

ScriptEngine 関数 | ScriptEngineMajorVersion 関数 | ScriptEngineMinorVersion 関数


ScriptEngineMajorVersion 関数 (Jscript)

JScript

ScriptEngineMajorVersion 関数

使用中のスクリプト エンジンのメジャー バージョン番号を返します。

ScriptEngineMajorVersion( )

解説

この関数の戻り値は、使用中のスクリプト言語のダイナミックリンク ライブラリ (DLL) 内に格納されているバージョン情報から直接取得されます。

使用例

次のコードは、ScriptEngineMajorVersion 関数の使用例です。

function GetScriptEngineInfo(){
   var s;
   s = ""; // 文字列を連結します。
   s += ScriptEngine() + " Version ";
   s += ScriptEngineMajorVersion() + ".";
   s += ScriptEngineMinorVersion() + ".";
   s += ScriptEngineBuildVersion();
   return(s);
}

必要条件

バージョン 5

参 照

ScriptEngine 関数 | ScriptEngineBuildVersion 関数 | ScriptEngineMinorVersion 関数


ScriptEngineMinorVersion 関数 (Jscript)

JScript

ScriptEngineMinorVersion 関数

使用中のスクリプト エンジンのマイナ バージョン番号を返します。

ScriptEngineMinorVersion( )

解説

この関数の戻り値は、使用中のスクリプト言語のダイナミックリンク ライブラリ (DLL) 内に格納されているバージョン情報から直接取得されます。

使用例

次のコードは、ScriptEngineMinorVersion 関数の使用例です。

function GetScriptEngineInfo(){
   var s;
   s = ""; // 文字列を連結します。
   s += ScriptEngine() + " Version ";
   s += ScriptEngineMajorVersion() + ".";
   s += ScriptEngineMinorVersion() + ".";
   s += ScriptEngineBuildVersion();
   return(s);
}

必要条件

バージョン 5

参 照

ScriptEngine 関数 | ScriptEngineBuildVersion 関数 | ScriptEngineMajorVersion 関数


JScript メソッド

次の表に Jscript メソッドを示します。

内容 | 言語要素
指定された数値の絶対値を返します。 | abs メソッド
指定された数値のアークコサインを返します。 | acos メソッド
String オブジェクトに格納されている文字列の前後に HTML の NAME 属性を指定する <A> タグを挿入します。 | anchor メソッド
指定された数値のアークサインを返します。 | asin メソッド
指定された数値のアークタンジェントを返します。 | atan メソッド
X 軸から座標 (x,y) までのラジアン単位の角度を返します。 | atan2 メソッド
列挙子がコレクションの最後に置かれているかどうかを示すブール値を返します。 | atEnd メソッド
String オブジェクトに格納されている文字列の前後に HTML の <BIG> タグを挿入します。 | big メソッド
String オブジェクトに格納されている文字列の前後に HTML の <BLINK> タグを挿入します。 | blink メソッド
String オブジェクトに格納されている文字列の前後に HTML の <B> タグを挿入します。 | bold メソッド
指定された数値と等しいかまたはそれより大きい値となる最小の整数を返します。 | ceil メソッド
指定されたインデックス番号の位置にある文字を返します。 | charAt メソッド
指定した文字の Unicode でのコード値を返します。 | charCodeAt メソッド
正規表現を内部形式にコンパイルします。 | compile メソッド
2 つの配列を連結した新しい配列を返します。 | concat メソッド (Array オブジェクト)
指定した 2 つの文字列を連結し、連結した文字列を格納した String オブジェクトを返します。 | concat メソッド (String オブジェクト)
指定された数値のコサインを返します。 | cos メソッド
VBArray の次元数を返します。 | dimensions メソッド
String オブジェクトを変換し、すべてのコンピュータで読み込めるようにします。 | escape メソッド
JScript のコードを評価します。 | eval メソッド
指定された文字列内で、パターンに一致する文字列の検索を実行します。 | exec メソッド
指定された数値を指数とする e (自然対数の底) の累乗を返します。 | exp メソッド
String オブジェクトに格納されている文字列の前後に HTML の <TT> タグを挿入します。 | fixed メソッド
指定された数値と等しいかまたはそれより小さい値となる最大の整数を返します。 | floor メソッド
String オブジェクトに格納されている文字列の前後に HTML のフォントの色を指定する <FONT> タグを挿入します。 | fontcolor メソッド
String オブジェクトに格納されている文字列の前後に HTML のフォントのサイズを指定する <FONT> タグを挿入します。 | fontsize メソッド
Unicode のコード値から文字列を作成します。 | fromCharCode メソッド
Date オブジェクトに格納されているローカル時間の日付の日の部分を返します。 | getDate メソッド
Date オブジェクトに格納されているローカル時間の日付の曜日を返します。 | getDay メソッド
Date オブジェクトに格納されているローカル時間の日付の年を返します。 | getFullYear メソッド
Date オブジェクトに格納されているローカル時間の時の部分を返します。 | getHours メソッド
指定した位置の項目を返します。 | getItem メソッド
Date オブジェクトに格納されているローカル時間のミリ秒の部分を返します。 | getMilliseconds メソッド
Date オブジェクトに格納されているローカル時間の分の部分を返します。 | getMinutes メソッド
Date オブジェクトに格納されているローカル時間の日付の月の部分を返します。 | getMonth メソッド
Date オブジェクトに格納されているローカル時間の秒の部分を返します。 | getSeconds メソッド
Date オブジェクトに格納されている時刻を返します。 | getTime メソッド
ホスト コンピュータの時刻と世界協定時刻 (UTC) との差を分単位の値で返します。 | getTimezoneOffset メソッド
Date オブジェクトに格納されている世界協定時刻 (UTC) の日付の値を返します。 | getUTCDate メソッド
Date オブジェクトに格納されている世界協定時刻 (UTC) の日付の曜日を返します。 | getUTCDay メソッド
Date オブジェクトに格納されている世界協定時刻 (UTC) の日付の年を返します。 | getUTCFullYear メソッド
Date オブジェクトに格納されている世界協定時刻 (UTC) の時の部分を返します。 | getUTCHours メソッド
Date に格納されている世界協定時刻 (UTC) のミリ秒の値を返します。 | getUTCMilliseconds メソッド
Date オブジェクトに格納されている世界協定時刻 (UTC) の分の部分を返します。 | getUTCMinutes メソッド
Date オブジェクトに格納されている世界協定時刻 (UTC) の月の部分を返します。 | getUTCMonth メソッド
Date オブジェクトに格納されている世界協定時刻 (UTC) の秒の部分を返します。 | getUTCSeconds メソッド
Date オブジェクトに格納されている日付の VT_DATE 値を返します。 | getVarDate メソッド
Date オブジェクトに格納されている年の部分を返します。 | getYear メソッド
String オブジェクト (文字列) 内を、指定された文字列で先頭から検索します。 | indexOf メソッド
指定した数値が有限かどうかを調べます。 | isFinite メソッド
指定された値が NaN (not a number) かどうかを調べます。 | isNaN メソッド
String オブジェクトに格納されている文字列の前後に HTML の <I> タグを挿入します。 | italics メソッド
コレクション内の現在の項目を返します。 | item メソッド
配列内の各要素を連結してできた String オブジェクトを返します。 | join メソッド
String オブジェクト (文字列) 内を、指定された検索文字列で後方から検索します。 | lastIndexOf メソッド
VBArray の指定した次元での最も小さいインデックス値を返します。 | lbound メソッド
String オブジェクトに格納されている文字列の前後に HTML の HREF 属性を指定する <A> タグを挿入します。 | link メソッド
指定された数値の自然対数を返します。 | log メソッド
指定された Regular Expression オブジェクトを使って文字列に対して検索を実行します。 | match メソッド
指定された 2 つの数値のうち大きい方の値を返します。 | max メソッド
指定された 2 つの数値のうち小さい方の値を返します。 | min メソッド
コレクション内の現在の項目を最初の項目に設定し直します。 | moveFirst メソッド
現在の項目をコレクション内の次の項目へ移動します。 | moveNext メソッド
日付を表す文字列を解析し、その日付と 1970 年 1 月 1 日午前 00:00:00 との差を表すミリ秒単位の値を返します。 | parse メソッド
文字列から変換した浮動小数点数を返します。 | parseFloat メソッド
文字列から変換した整数を返します。 | parseInt メソッド
引数 exponent を指数とする引数 base の累乗を返します。 | pow メソッド
0 ～ 1 の範囲での擬似乱数を返します。 | random メソッド
正規表現を使って置換された文字列のコピーを返します。 | replace メソッド
Array オブジェクトの要素を反転させます。 | reverse メソッド
指定された数式の値に最も近い整数を返します。 | round メソッド
正規表現に一致する最初の文字列の位置を返します。 | search メソッド
Date オブジェクトに格納されている日付の日の部分をローカル時間で設定します。 | setDate メソッド
Date オブジェクトの日付の年の部分をローカル時間で設定します。 | setFullYear メソッド
Date オブジェクトに格納されている時刻の時の部分をローカル時間で設定します。 | setHours メソッド
Date オブジェクトに格納されている時刻のミリ秒の部分をローカル時間で設定します。 | setMilliseconds メソッド
Date オブジェクトに格納されている時刻の分の部分をローカル時間で設定します。 | setMinutes メソッド
Date オブジェクトに格納されている日付の月の部分をローカル時間で設定します。 | setMonth メソッド
Date オブジェクトに格納されている時刻の秒の部分をローカル時間で設定します。 | setSeconds メソッド
Date オブジェクトに格納する日付および時刻を直接設定します。 | setTime メソッド
Date オブジェクトに格納されている日付の日の部分を世界協定時刻 (UTC) で設定します。 | setUTCDate メソッド
Date オブジェクトに格納されている日付の年の部分を世界協定時刻 (UTC) で設定します。 | setUTCFullYear メソッド
Date オブジェクトに格納されている時刻の時の部分を世界協定時刻 (UTC) で設定します。 | setUTCHours メソッド
Date オブジェクトに格納されている時刻のミリ秒の部分を世界協定時刻 (UTC) で設定します。 | setUTCMilliseconds メソッド
Date オブジェクトに格納されている時刻の分の部分を世界協定時刻 (UTC) で設定します。 | setUTCMinutes メソッド
Date オブジェクトに格納されている日付の月の部分を世界協定時間 (UTC) で設定します。 | setUTCMonth メソッド
Date オブジェクトに格納されている時刻の秒の部分を世界協定時刻 (UTC) で設定します。 | setUTCSeconds メソッド
Date オブジェクトの日付の年の部分を設定します。 | setYear メソッド
指定された数値のサインの値を返します。 | sin メソッド
配列の一部を返します。 | slice メソッド (Array オブジェクト)
文字列の一部分を返します。 | slice メソッド (String オブジェクト)
String オブジェクトに格納されている文字列の前後に HTML の <SMALL> タグを挿入します。 | small メソッド
要素の順序を並べ替えた Array オブジェクトを返します。 | sort メソッド
文字列が複数の文字列に分割されたときの文字列の配列を返します。 | split メソッド
指定された数値の平方根を返します。 | sqrt メソッド
String オブジェクトに格納されている文字列の前後に HTML の <STRIKE> タグを挿入します。 | strike メソッド
String オブジェクトに格納されている文字列の前後に HTML の <SUB> タグを挿入します。 | sub メソッド
文字列内の、指定位置からの指定された長さを持つ部分を返します。 | substr メソッド
String オブジェクトに格納されている文字列内の指定された位置にある文字列を返します。 | substring メソッド
String オブジェクトに格納されている文字列の前後に HTML の <SUP> タグを挿入します。 | sup メソッド
指定された数値のタンジェントの値を返します。 | tan メソッド
文字列内でパターンに一致する部分が存在するかどうかを調べます。 | test メソッド
VBArray を JScript の標準配列に変換します。 | toArray メソッド
GMT 規約を使用して日付データを文字列に変換します。 | toGMTString メソッド
実行されるロケールでの既定の書式を使用して日付データを文字列に変換します。 | toLocaleString メソッド
すべての英字を小文字に変換した文字列を返します。 | toLowerCase メソッド
オブジェクトの値を表す文字列を返します。 | toString メソッド
すべての英字を大文字に変換した文字列を返します。 | toUpperCase メソッド
日付を世界協定時刻 (UTC) の文字列に変換します。 | toUTCString メソッド
VBArray の指定された次元での最も大きいインデックス値を返します。 | ubound メソッド
escape メソッドを使ってエスケープコード付きの文字に変換した String オブジェクトの文字列を元の形に変換します。 | unescape メソッド
世界協定時刻 (UTC) (つまり GMT) の 1970 年 1 月 1 日 0 時 0 分 0 秒と、指定した日付との間をミリ秒単位で返します。 | UTC メソッド
指定されたオブジェクトのプリミティブ値を返します。 | valueOf メソッド


abs メソッド

指定された数値の絶対値を返します。

Math.abs(number)

必須の引数 number には、絶対値を求める値を数式で指定します。

解説

戻り値は、引数 number の絶対値です。

使用例

次のコードは、abs メソッドの使用例です。

function ComparePosNegVal(n)
{
   var s;
   var v1 = Math.abs(n);
   var v2 = Math.abs(-n);
   if (v1 == v2)
      s = n + " および " + -n " の絶対値は同一です。";
   return(s);
}

必要条件

バージョン 1

参 照

Math Object メソッド

対象: Math オブジェクト


acos メソッド

指定された数値のアークコサインを返します。

Math.acos(number)

引数 number には、アークコサインを求める値を数式で指定します。

解説

戻り値は、引数 number のアークコサインです。

必要条件

バージョン 1

参 照

asin メソッド | atan メソッド | cos メソッド | sin メソッド | tan メソッド

対象: Math オブジェクト


anchor メソッド

String オブジェクトに格納されている文字列の前後に HTML の NAME 属性を指定する <A> タグを挿入します。

strVariable.anchor(anchorString)

引数

strVariable
必ず指定します。String オブジェクトの名前またはリテラルを指定します。
anchorString
必ず指定します。アンカー タグの NAME 属性に挿入する文字列を指定します。

解説

anchor メソッドを呼び出すと、String オブジェクトから名前付きアンカーが作成されます。anchor メソッドの使用例を次に示します。

var strVariable = "これはアンカーです";
strVariable = strVariable.anchor("Anchor1");

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<A NAME="Anchor1">これはアンカーです</A>

このメソッドの実行時には、<A> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

link メソッド| String Object メソッド | String Object プロパティ

対象: String オブジェクト


apply メソッド

現在のオブジェクトに他のオブジェクトを代入し、オブジェクトのメソッドを適用します。

apply([thisObj[,argArray]])

引数

thisObj
省略可能です。現在のオブジェクトとして使用するオブジェクトを指定します。
argArray
省略可能です。関数に渡す引数の配列を指定します。

解説

argArray が有効な配列でない場合、または arguments オブジェクトでない場合は、TypeError になります。

argArray と thisObj のどちらも指定しない場合は、global オブジェクトが thisObj として使用され、引数は渡されません。

必要条件

バージョン 5.5

参 照

対象: Function オブジェクト


asin メソッド

指定された数値のアークサインを返します。

Math.asin(number)

必須の引数 number には、アークサインを求める値を数式で指定します。

解説

戻り値は、引数 number のアークサインです。

必要条件

バージョン 1

参 照

acos メソッド | atan メソッド | cos メソッド | Math Object メソッド | sin メソッド | tan メソッド

対象: Math オブジェクト


atan メソッド

指定された数値のアークタンジェントを返します。

Math.atan(number)

必須の引数 number には、アークタンジェントを求める値を数式で指定します。

解説

戻り値は、引数 number のアークタンジェントです。

必要条件

バージョン 1

参 照

acos メソッド | asin メソッド | atan2 メソッド | cos メソッド | Math Object メソッド | sin メソッド | tan メソッド

対象: Math オブジェクト


atan2 メソッド

X 軸から座標 (x,y) までのラジアン単位の角度を返します。

Math.atan2(y, x)

引数

x
必ず指定します。デカルト座標系での x 座標を表す数式を指定します。
y
必ず指定します。デカルト座標系での y 座標を表す数式を指定します。

解説

戻り値は、座標 (x,y) から求められた角度を表す -π ～ π の値です。

必要条件

バージョン 1

参 照

atan メソッド | tan メソッド

対象: Math オブジェクト


atEnd メソッド

列挙子がコレクションの最後に置かれているかどうかを示すブール値を返します。

myEnum.atEnd()

myEnum には、Enumerator オブジェクトの名前を指定します。

解説

atEnd メソッドは、現在の項目がコレクションの最後に置かれている場合、コレクションが空の場合、または現在の項目が未定義の場合は、真 (true) を返します。それ以外の場合は、偽 (false) を返します。

使用例

次のコードは、atEnd メソッドを使ってドライブの一覧が最後まで列挙されているかどうかを調べる例です。

function ShowDriveList(){
   var fso, s, n, e, x;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);
   s = "";
   for (; !e.atEnd(); e.moveNext())
   {
      x = e.item();
      s = s + x.DriveLetter;
      s += " - ";
      if (x.DriveType == 3)
         n = x.ShareName;
      else if (x.IsReady)
         n = x.VolumeName;
      else
         n = "[ドライブの準備ができていません。]";
      s +=   n + "<br>";
   }
   return(s);
}

必要条件

バージョン 2

参 照

item メソッド | moveFirst メソッド | moveNext メソッド

対象: Enumerator オブジェクト


big メソッド

String オブジェクトに格納されている文字列の前後に HTML の <BIG> タグを挿入します。

strVariable.big( )

必須の strVariable 参照には、String オブジェクトの名前またはリテラルを指定します。

解説

big メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.big( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<BIG>これは文字列オブジェクトです</BIG>

このメソッドの実行時には、<BIG> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

small メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


blink メソッド

String オブジェクトに格納されている文字列の前後に HTML の <BLINK> タグを挿入します。

strVariable.blink( )

必須の strVariable 参照には、String オブジェクトの名前またはリテラルを指定します。

解説

blink メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.blink( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<BLINK>これは文字列オブジェクトです</BLINK>

このメソッドの実行時には、<BLINK> タグが既に元の文字列内にあるかどうかの確認は行われません。

<BLINK> タグは、Microsoft® Internet Explorer ではサポートされていません。

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ

対象: String オブジェクト


bold メソッド

String オブジェクトに格納されている文字列の前後に HTML の <B> タグを挿入します。

strVariable.bold()

必須の strVariable 参照には、String オブジェクトの名前またはリテラルを指定します。

解説

bold メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.bold( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<B>これは文字列オブジェクトです</B>

このメソッドの実行時には、<B> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

italics メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


call メソッド

現在のオブジェクトに他のオブジェクトを代入し、オブジェクトのメソッドを呼び出します。

call([thisObj[, arg1[, arg2[,  [, argN]]]]])

引数

thisObj
省略可能です。現在のオブジェクトとして使用するオブジェクトを指定します。
arg1, arg2, , argN
省略可能です。メソッドに渡す引数のリストを指定します。

解説

別のオブジェクトに代わってメソッドを呼び出すときに call メソッドを使用します。call メソッドを使用すると、関数のオブジェクトのコンテキストを、元のコンテキストから thisObj で指定した新しいオブジェクトに変更できます。

thisObj を指定しない場合は、global オブジェクトが thisObj として使用されます。

必要条件

バージョン 5.5

参 照

対象: Function オブジェクト


ceil メソッド

指定された数値と等しいかまたはそれより大きい値となる最小の整数を返します。

Math.ceil(number)

必須の引数 number には、数式を指定します。

解説

戻り値は、引数 number と等しいかまたはそれより大きい値となる最小の整数です。

必要条件

バージョン 1

参 照

floor メソッド | Math Object メソッド

対象: Math オブジェクト


charAt メソッド

指定されたインデックス番号の位置にある文字を返します。

strObj.charAt(index)

引数

strObj
必ず指定します。String オブジェクトの名前またはリテラルを指定します。
index
必ず指定します。取り出す文字の 0 から数えたインデックス番号を指定します。指定できる値の範囲は、0 から文字列の長さより 1 小さい値までの範囲です。

解説

charAt メソッドの戻り値は、指定された位置にある文字です。文字列内の先頭の文字は 0、2 文字目は 1 となります。有効ではない範囲の値を指定した場合、空の文字列を返します。

使用例

次のコードは、charAt メソッドの使用例です。

function charAtTest(n){
   var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //変数を初期化します。
   var s;                                  //変数を宣言します。
   s = str.charAt(n - 1);                  //適切な文字を取得します。
                                            // n – 1 の位置から開始します。
   return(s);                              //文字を返します。
}

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ

対象: String オブジェクト


charCodeAt メソッド

指定した位置にある文字の Unicode コードを整数値で返します。

strObj.charCodeAt(index)

引数

strObj
必ず指定します。任意の String オブジェクトまたはリテラルを指定します。
index
必ず指定します。文字の位置を 0 から始まるインデックスで指定します。指定できる値は 0 ～ (文字列長 - 1) の範囲です。

解説

文字列の先頭文字はインデックス 0 に、2 番目の文字はインデックス 1 になります。

index で指定した位置に文字がない場合は、NaN を返します。

使用例

charCodeAt メソッドの使用例を次に示します。

function charCodeAtTest(n){
  var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 変数を初期化します。
  var n;                                  // 変数を宣言します。
  n = str.charCodeAt(n - 1);              // n 番目の文字の Unicode 値を
                                          // 取得します。
  return(n);                              // 値を返します。
}

必要条件

バージョン 5.5

参 照

fromCharCode メソッド | String オブジェクトのメソッド

対象: String オブジェクト


compile メソッド

実行を高速化するために、正規表現を内部形式にコンパイルします。

rgExp.compile(pattern, [flags])

引数

rgExp
必ず指定します。Regular Expression オブジェクトのインスタンスを指定します。変数名やリテラルを指定することもできます。
pattern
必ず指定します。コンパイルする正規表現パターンを格納した文字列式を指定します。
flags
省略可能です。指定可能なフラグは、次のとおりです。
  • g (引数 pattern に指定したパターンと一致する文字列をすべて検索するグローバル検索)
  • i (大文字小文字を区別しない)
  • m (複数行検索)

解説

compile メソッドは、検索の実行を高速化するために、引数 pattern に指定したパターンを内部形式に変換します。これにより、たとえばループ内などで、正規表現をより効率よく使用できるようになります。正規表現をコンパイルすると、繰り返し同じ表現を使用する場合に処理が速くなります。ただし、正規表現を変更すると使用できなくなります。

使用例

次のコードは、compile メソッドの使用例です。

function CompileDemo(){
   var rs;
   var s = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp"
   // 大文字用の正規表現を作成します。
   var r = new RegExp("[A-Z]", "g");
   var a1 = s.match(r)              // 文字列を検索します。
   // 小文字用の正規表現をコンパイルします。
   r.compile("[a-z]", "g");
   var a2 = s.match(r)              // 文字列を検索します。
   return(a1 + "\n" + a2;
}

必要条件

バージョン 3

参 照

Regular Expression Object メソッド | Regular Expression Object プロパティ | 正規表現の構文

対象: Regular Expression オブジェクト


concat メソッド (Array オブジェクト)

2 つ以上の配列を連結した新しい配列を返します。

array1.concat([item1[, item2[, . . . [, itemN]]]])

引数

array1
必ず指定します。他のすべての配列と連結する Array オブジェクトの名前を指定します。
item1,. . ., itemN
省略可能です。array1 の後に追加する項目を指定します。

解説

concat メソッドは、array1 と他の項目が連結された配列が格納された Array オブジェクトを返します。

項目 (item1 _ itemN) は、左から右の順で追加されます。項目の 1 つが配列である場合は、array1 の最後に追加されます。項目が配列以外である場合は、配列の最後に 1 つの配列要素として追加されます。

元の配列の要素は、次のように結果の配列にコピーされます。

  • 連結される配列から新しい配列にオブジェクト参照をコピーした場合、オブジェクト参照によって指定されるオブジェクトは変わりません。新しい配列と元の配列のいずれかが変更されると、その変更は他方にも反映されます。
  • 新しい配列に数値または文字列の値が連結された場合は、値のみがコピーされます。一方の配列が変更された場合でも、その変更は他方には反映されません。

使用例

次のコードは、concat メソッドの配列内での使用例です。

function ConcatArrayDemo(){
   var a, b, c, d;
   a = new Array(1,2,3);
   b = "JScript");
   c = new Array(42, "VBScript);
   d = a.concat(b, c);
// 配列 [1, 2, 3, "JScript", 42, "VBScript"] を返します。
   return(d);
}

必要条件

バージョン 3

参 照

concat メソッド (String オブジェクト) | join メソッド | String オブジェクト

対象: Array オブジェクト


concat メソッド (String オブジェクト)

指定した 2 つ以上の文字列を連結し、連結した文字列を格納した文字列の値を返します。

string1.concat([string2[, string3[, . . . [, stringN]]]])

引数

string1
必ず指定します。指定した他のすべての文字列と連結する String オブジェクトの名前またはリテラルを指定します。
string2,. . ., stringN
省略可能です。string1 の最後に連結する String オブジェクトの名前またはリテラルを指定します。

解説

concat メソッドの処理内容は、result = string1 + string2 + string3 + � + stringN と記述した場合と同じです。元の文字列または結果の文字列のいずれかが変更された場合でも、その変更は他の文字列には反映されません。引数が文字列でない場合は、文字列に変換された後 string1 に連結されます。

使用例

次のコードは文字列内での concat メソッドの使用例です。

function concatDemo(){
   var str1 = "ABCDEFGHIJKLM"
   var str2 = "NOPQRSTUVWXYZ";
   var s = str1.concat(str2);
   // 連結した文字列を返します。
   return(s);
}

必要条件

バージョン 3

参 照

加算演算子 (+) | Array オブジェクト | concat メソッド (Array オブジェクト) | String Object メソッド

対象: String オブジェクト


cos メソッド

指定された数値のコサインを返します。

Math.cos(number)

必須の引数 number には、コサインを求める値を数式で指定します。

解説

戻り値は、引数 number のコサインの値です。

必要条件

バージョン 1

参 照

acos メソッド | asin メソッド | atan メソッド | Math Object メソッド | sin メソッド | tan メソッド

対象: Math オブジェクト


decodeURI メソッド

コード化された URI (Uniform Resource Identifier) のコード化される前のものを返します。

decodeURI(URIstring)

引数 URIstring は必ず指定し、コード化された URI を表す値を指定します。

解説

旧版の unescape メソッドの代わりに decodeURI メソッドを使用します。

decodeURI メソッドは文字列値を返します。

URIString が有効でない場合、URIError が発生します。

必要条件

バージョン 5.5

参 照

decodeURIComponent メソッド | encodeURI メソッド

対象: Global オブジェクト


decodeURIComponent メソッド

コード化された URI (Uniform Resource Identifier) コンポーネントのコード化される前のものを返します。

decodeURIComponent(encodedURIString)

引数 encodedURIString は必ず指定し、コード化された URI コンポーネントを表す値を指定します。

解説

URIComponent は完全な URI の一部です。

encodedURIString が有効でない場合、URIError が発生します。

必要条件

バージョン 5.5

参 照

decodeURI メソッド | encodeURI メソッド

対象: Global オブジェクト


dimensions メソッド

VBArray の次元数を返します。

array.dimensions( )

必須の引数 array には、VBArray オブジェクトの名前を指定します。

解説

dimensions メソッドは、指定した VBArray が持つ次元数を取得するためのメソッドです。

次のコードは、3 つの部分から構成されます。最初の部分は、Visual Basic のセーフ配列を作成する VBScript のコードです。2 番目の部分は、このセーフ配列の次元数と各次元の上限値を取得する JScript のコードです。どちらのコードも、HTML ページの <HEAD> セクションに記述します。3 番目の部分は、ほかの 2 つのコードを実行するために <BODY> セクションに記述する JScript のコードです。

<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
   Dim i, j, k
   Dim a(2, 2)
   k = 1
   For i = 0 To 2
      For j = 0 To 2
         a(j, i) = k
         k = k + 1
      Next
   Next
   CreateVBArray = a
End Function
-->
</SCRIPT>

<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vba)
{
   var i, s;
   var a = new VBArray(vba);
   for (i = 1; i <= a.dimensions(); i++)
   {
      s = "次元 ";
      s += i + " の上限値は ";
      s += a.ubound(i)+ " です。<BR>";
   }
   return(s);
}
-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT language="jscript">
   document.write(VBArrayTest(CreateVBArray()));
</SCRIPT>
</BODY>

必要条件

バージョン 3

参 照

getItem メソッド | lbound メソッド | toArray メソッド | ubound メソッド

対象: VBArray オブジェクト


encodeURI メソッド

文字列を有効な URI (Uniform Resource Identifier) としてコード化します。

encodeURI(URIString)

引数 URIString は必ず指定し、コード化された URI を表す値を指定します。

解説

encodeURI メソッドはコード化された URI を返します。結果を decodeURI に渡すと、元の文字列が返されます。encodeURI メソッドでは、「:」、「/」、「;」、「?」の各文字はコード化されません。これらの文字をコード化するには encodeURIComponent を使用します。

必要条件

バージョン 5.5

参 照

decodeURI メソッド | decodeURIComponent メソッド

対象: Global オブジェクト


encodeURIComponent メソッド

文字列を有効な URI (Uniform Resource Identifier) としてコード化します。

encodeURIComponent(encodedURIString)

The required encodedURIString argument is a value representing an encoded URI component.

解説

encodeURIComponent メソッドはコード化された URI を返します。結果を decodeURIComponent に渡すと、元の文字列が返されます。encodeURIComponent メソッドでは、すべての文字がコード化されるため、/folder1/folder2/default.html などのパスを表す文字列には注意が必要です。スラッシュ (/) もコード化されるため、Web サーバーへの要求として送信する場合は無効になります。文字列に URI コンポーネントが複数含まれる場合は、encodeURI メソッドを使用します。

必要条件

バージョン 5.5

参 照

decodeURI メソッド | decodeURIComponent メソッド

対象: Global オブジェクト


escape メソッド

String オブジェクトをエンコードして、すべてのコンピュータで読めるようにします。

escape(charString)

必須の引数 charStrin には、変換する String オブジェクトまたはリテラルを指定します。

解説

escape メソッドは、引数 charstring で指定された文字列内のすべてのスペース、句読点、アクセント記号付き文字、およびその他の非 ASCII文字を %xx という形式に変換し、文字列の値 (Unicode 形式) を返します。xx は、その文字を表す 16 進数の数字です。たとえば、スペースを指定すると、"%20" という文字列が返されます。

256 以上の値を持つ文字は %uxxxx という形式で保存されます。

メモ escape メソッドは、URI (Uniform Resource Identifier) の変換には使用しないでください。代わりに、encodeURI メソッドおよび encodeURIComponent メソッドの使用をお勧めします。

必要条件

バージョン 1

参 照

encodeURI メソッド | encodeURIComponent メソッド | String オブジェクト | unescape メソッド

対象: Global オブジェクト


eval メソッド

JScript のコードを評価し、実行します。

eval(codeString)

必須の引数 codestring には、有効な JScript コードの入った文字列の値を指定します。この文字列は、JScript パーサーによって解析され、実行されます。

解説

eval メソッドを使用すると、JScript ソース コードを動的に実行できます。たとえば、次のコード例では、Date オブジェクトの入った新しい変数 mydate が作成されます。

eval("var mydate = new Date();");

eval メソッドに渡されたコードは、eval メソッドを呼び出す場合と同じように実行されます。

必要条件

バージョン 1

参 照

String オブジェクト

対象: Global オブジェクト


exec メソッド

正規表現パターンを使って文字列に対して検索を実行し、検索結果を含む配列を返します。

rgExp.exec(str)

引数

rgExp
必ず指定します。正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスです。
str
必ず指定します。検索対象とする String オブジェクトの名前またはリテラルを指定します。

解説

パターンに一致する文字列が見つからなかった場合、exec メソッドは null を返します。一致する文字列が見つかった場合は、配列を返し、さらにグローバルな RegExp オブジェクトのプロパティが検索結果を反映して更新されます。配列の要素 0 には一致結果全体が、要素が 1 から n には、一致結果の中に副次的に含まれる一致の内容が格納されます。この処理は、グローバル フラグ (g) が設定されていない場合の match メソッドの処理と同じです。

正規表現でグローバル フラグが設定されている場合は、lastIndex の値で指定された位置から文字列の検索が開始されます。グローバル フラグが設定されていない場合、lastIndex の値に関係なく検索は文字列の先頭から開始されます。

exec メソッドが返す配列には、input、index、および lastIndex の 3 つのプロパティがあります。input プロパティには、検索文字列全体が格納されます。index プロパティには、検索終了後の文字列内で一致が検出された各文字列位置が格納されます。lastIndex プロパティには、一致文字列の最後の文字に続く位置が格納されます。

使用例

次のコードは、exec メソッドの使用例です。

function RegExpTest(){
  var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
  if (ver >= 5.5){                 // JScript バージョンをテストします。
    var src = "The rain in Spain falls mainly in the plain.";
    var re = /\w+/g;               // 正規表現パターンを作成します。
    var arr;
    while ((arr = re.exec(src)) != null)
       document.write(arr.index + "-" + arr.lastIndex + "\t" + arr);
  }
  else{
    alert("You need a newer version of JScript for this to work");
  }
}

必要条件

バージョン 3

参 照

match メソッド | RegExp オブジェクト | Regular Expression Object メソッド | Regular Expression Object プロパティ | 正規表現の構文 | search メソッド | test メソッド

対象: Regular Expression オブジェクト


exp メソッド

指定された数値を指数とする e (自然対数の底) の累乗を返します。

Math.exp(number)

必須の引数 number には、e の指数にする数値を数式で指定します。

解説

戻り値は、enumber です。ここで、定数 e は約 2.178 の値を持つ自然対数の底、number は引数として渡された値です。

必要条件

バージョン 1

参 照

E プロパティ | Math Object メソッド

対象: Math オブジェクト


fixed メソッド

String オブジェクトに格納されている文字列の前後に HTML の <TT> タグを挿入します。

strVariable.fixed( )

必須の strVariable 参照には、String オブジェクトの名前またはリテラルを指定します。

解説

fixed メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.fixed();

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<TT>これは文字列オブジェクトです</TT>

このメソッドの実行時には、<TT> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ

対象: String オブジェクト


floor メソッド

指定された数値と等しいかまたはそれより小さい値となる最大の整数を返します。

Math.floor(number)

必須の引数 number には、数式を指定します。

解説

戻り値は、引数 number と等しいかまたはそれより小さい値となる最大の整数です。

必要条件

バージョン 1

参 照

ceil メソッド | Math Object メソッド

対象: Math オブジェクト


fontcolor メソッド

String オブジェクトに格納されている文字列の前後に HTML のフォントの色を指定する <FONT> タグを挿入します。

strVariable.fontcolor(colorVal)

引数

strVariable
必ず指定します。String オブジェクトの名前またはリテラルを指定します。
colorVal
必ず指定します。色を表す 16 進数の値または色の文字列定数を指定します。

解説

fontcolor メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.fontcolor("red");

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<FONT COLOR="RED">これは文字列です</FONT>

使用できる色の文字列定数は、使用する Microsoft® JScript® のホスト アプリケーションごとで (つまり、ブラウザ、サーバーなどの種類により) 異なります。また、ホスト アプリケーションのバージョンにより使用できる色名が異なる場合もあります。詳細については、ホスト アプリケーションのマニュアルを参照してください。

このメソッドの実行時には、<FONT> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

fontsize メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


fontsize メソッド

String オブジェクトに格納されている文字列の前後に HTML のフォントのサイズを指定する <FONT> タグを挿入します。

strVariable.fontsize(intSize)

引数

strVariable
必ず指定します。String オブジェクトの名前またはリテラルを指定します。
intSize
必ず指定します。テキストのサイズを指定する整数を指定します。

解説

fontsize メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.fontsize(-1);

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<FONT SIZE="-1">これは文字列です</FONT>

この引数に指定できる値は、使用する Microsoft® JScript® のホスト アプリケーションごとに異なります。詳細については、ホスト アプリケーションのマニュアルを参照してください。

このメソッドの実行時には、<FONT> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

fontcolor メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


fromCharCode メソッド

Unicode のコード値から文字列を作成します。

String.fromCharCode([code1[, code2[, ...[, codeN]]]])

引数

String
必ず指定します。String オブジェクトを指定します。
code1, . . . , codeN
省略可能です。文字列に変換する文字の Unicode でのコード値を指定します。省略した場合、空の文字列になります。

解説

fromCharCode を呼び出す前に String オブジェクトを作成しておく必要はありません。

次のコードは、変数 test に "plain" という文字列が含まれます。

var test = String.fromCharCode(112, 108, 97, 105, 110);

必要条件

バージョン 3

参 照

charCodeAt メソッド | String Object メソッド

対象: String オブジェクト


getDate メソッド

Date オブジェクトに格納されているローカル時間の日付の日の部分を返します。

dateObj.getDate()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)の日付の値を取得するには、getUTCDate メソッドを使用します。

戻り値は、Date オブジェクトに格納されている日付の日を表す 1 ～ 31 の範囲内の整数です。

使用例

次のコードは、getDate メソッドの使用例です。

function DateDemo(){
   var d, s = "今日の日付: ";
   d = new Date();
   s += (d.getMonth() + 1) + "/";
   s += d.getDate() + "/";
   s += d.getYear();
   return(s);
}

必要条件

バージョン 1

参 照

Date Object メソッド | getUTCDate メソッド | setDate メソッド| setUTCDate メソッド

対象: Date オブジェクト


getDay メソッド

Date オブジェクトに格納されているローカル時間の日付の曜日を返します。

dateObj.getDay()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)の日付の値を取得するには、getUTCDay メソッドを使用します。

getDay メソッドの戻り値は、曜日を表す 0 ～ 6 の範囲内の数値です。各数値が表す曜日は次のとおりです。

値 | 曜日
0 | 日曜日
1 | 月曜日
2 | 火曜日
3 | 水曜日
4 | 木曜日
5 | 金曜日
6 | 土曜日

次のコードは、getDay メソッドの使用例です。

function DateDemo(){
   var d, day, x, s = "今日の曜日: ";
   var x = new Array("日曜日", "月曜日", "火曜日");
   var x = x.concat("水曜日", "木曜日", "金曜日");
   var x = x.concat("土曜日");
   d = new Date();
   day = d.getDay();
   return(s += x[day]);
}

必要条件

バージョン 1

参 照

Date Object メソッド | getUTCDay メソッド

対象: Date オブジェクト


getFullYear メソッド

Date オブジェクトに格納されているローカル時間の日付の年を返します。

dateObj.getFullYear()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)の年を取得するには、getUTCFullYear メソッドを使用します。

getFullYear メソッドは、4 桁の数値で年を返します。たとえば、1976 年の場合は、"1976" を返します。これにより、2000 年 1 月 1 日を 1900 年 1 月 1 日と誤って認識するという 2000 年問題を回避することができます。

次のコードは、GetFullYear メソッドの使用例です。

function DateDemo(){
   var d, s = "世界協定時刻で表した今日の日付: ";
   d = new Date();
   s += (d.getMonth() + 1) + "/";
   s += d.getDate() + "/";
   s += d.getFullYear();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getUTCFullYear メソッド | setFullYear メソッド | setUTCFullYear メソッド

対象: Date オブジェクト


getHours メソッド

Date オブジェクトに格納されているローカル時間の時の部分を返します。

dateObj.getHours()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)の時の部分を取得するには、getUTCHours メソッドを使用します。

getHours メソッドの戻り値は、Date オブジェクトに格納されている時刻の 0 時からの経過時間を表す 0 ～ 23 の範囲内の整数です。ただし、戻り値が 0 のときは、午前 1:00:00 より前の場合のほかに、Date オブジェクトが作成されたときにオブジェクトに時刻データが格納されなかった場合を考慮する必要があります。どちらの場合かを判断するには、分および秒の値も調べます。Date オブジェクトに時刻データが格納されていない場合は、時、分、秒のすべてが 0 になります。

次のコードは、getHours メソッドの使用例です。

function TimeDemo(){
   var d, s = "現在のローカル時間: ";
   var c = ":";
   d = new Date();
   s += d.getHours() + c;
   s += d.getMinutes() + c;
   s += d.getSeconds() + c;
   s += d.getMilliseconds();
   return(s);
}

必要条件

バージョン 1

参 照

Date Object メソッド | getUTCHours メソッド | setHours メソッド | setUTCHours メソッド

対象: Date オブジェクト


getItem メソッド

指定した位置の項目を返します。

safeArray.getItem(dimension1[, dimension2, ...], dimensionN)

引数

safeArray
必ず指定します。VBArray オブジェクトの名前を指定します。
dimension1, ..., dimensionN
目的の項目の正確な位置を指定します。n は VBArray の次元数です。

使用例

次のコードは、3 つの部分から構成されます。最初の部分は、Visual Basic のセーフ配列を作成する VBScript のコードです。2 番目の部分は、このセーフ配列に対して反復処理を行い、各要素の内容を出力する JScript のコードです。どちらのコードも、HTML ページの <HEAD> セクションに記述します。3 番目の部分は、ほかの 2 つのコードを実行するために <BODY> セクションに記述する JScript のコードです。

<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
   Dim i, j, k
   Dim a(2, 2)
   k = 1
   For i = 0 To 2
      For j = 0 To 2
         a(i, j) = k
         document.writeln(k)
         k = k + 1
      Next
      document.writeln("<BR>")
   Next
   CreateVBArray = a
End Function
-->
</SCRIPT>
<SCRIPT LANGUAGE="JScript">
<!--
function GetItemTest(vbarray)
{
   var i, j;
   var a = new VBArray(vbarray);
   for (i = 0; i <= 2; i++)
   {
      for (j =0; j <= 2; j++)
      {
         document.writeln(a.getItem(i, j));
      }
   }
}-->
</SCRIPT>
</HEAD>
&ltBODY>
<SCRIPT LANGUAGE="JScript">
<!--
   GetItemTest(CreateVBArray());
-->
</SCRIPT>
</BODY>

必要条件

バージョン 1

参 照

dimensions メソッド | lbound メソッド | toArray メソッド | ubound メソッド

対象: VBArray オブジェクト


getMilliseconds メソッド

Date オブジェクトに格納されているローカル時間のミリ秒の部分を返します。

dateObj.getMilliseconds()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)のミリ秒の値を取得するには、getUTCMilliseconds メソッドを使用します。

戻り値のミリ秒の範囲は、0 ～ 999 です。

使用例

次のコードは、getMilliseconds メソッドの使用例です。

function TimeDemo(){
   var d, s = "現在のローカル時間: ";
   var c = ":";
   d = new Date();
   s += d.getHours() + c;
   s += d.getMinutes() + c;
   s += d.getSeconds() + c;
   s += d.getMilliseconds();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getUTCMilliseconds メソッド | setMilliseconds メソッド| setUTCMilliseconds メソッド

対象: Date オブジェクト


getMinutes メソッド

Date オブジェクトに格納されているローカル時間の分の部分を返します。

dateObj.getMinutes()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)の分の部分を取得するには、getUTCMinutes メソッドを使用します。

getMinutes メソッドの戻り値は、Date オブジェクトに格納されている時刻の分の部分を表す 0 ～ 59 の範囲内の整数です。ただし、戻り値が 0 のときは、毎正時を過ぎた時間が 1 分に満たない場合のほかに、Date オブジェクトが作成されたときにオブジェクトに時刻データが格納されなかった場合を考慮する必要があります。どちらの場合かを判断するには、時および秒の値が 0 になっていないかどうかを調べます。Date オブジェクトに時刻データが格納されていない場合は、時、分、秒のすべてが 0 になります。

使用例

次のコードは、getMinutes メソッドの使用例です。

function TimeDemo(){
   var d, s = "現在のローカル時間: ";
   var c = ":";
   d = new Date();
   s += d.getHours() + c;
   s += d.getMinutes() + c;
   s += d.getSeconds() + c;
   s += d.getMilliseconds();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getUTCMinutes メソッド | setMinutes メソッド | setUTCMinutes メソッド

対象: Date オブジェクト


getMonth メソッド

Date オブジェクトに格納されているローカル時間の日付の月の部分を返します。

dateObj.getMonth()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)の日付の月の部分を取得するには、getUTCMonth メソッドを使用します。

getMonth メソッドの戻り値は、Date オブジェクトに格納されている日付の月の部分を表す 0 ～ 11 の範囲内の整数です。ただし、返される整数の月は一般に使用される数字ではなく、一般に表す数字より 1 小さい値です。たとえば、Date オブジェクトに "Jan 5, 1996 08:47:00" というデータが格納されている場合は、0 が返されます。

使用例

次のコードは、getMonth メソッドの使用例です。

function DateDemo(){
   var d, s = "今日の日付: ";
   d = new Date();
   s += (d.getMonth() + 1) + "/";
   s += d.getDate() + "/";
   s += d.getYear();
   return(s);
}

必要条件

バージョン 1

参 照

Date Object メソッド | getUTCMonth メソッド | setMonth メソッド | setUTCMonth メソッド

対象: Date オブジェクト


getSeconds メソッド

Date オブジェクトに格納されているローカル時間の秒の部分を返します。

dateObj.getSeconds()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

世界協定時刻 (UTC)の秒の部分を取得するには、getUTCSeconds メソッドを使用します。

getSeconds メソッドの戻り値は、Date オブジェクトに格納されている時刻の秒の部分を表す 0 ～ 59 の範囲内の整数です。ただし、戻り値が 0 のときは、オブジェクトに格納されていた時刻が毎分 1 秒を経過していない時刻の場合のほかに、Date オブジェクトが作成されたときにオブジェクトに時刻データが格納されなかった場合を考慮する必要があります。どちらの場合かを判断するには、時および分の値も調べます。Date オブジェクトに時刻データが格納されていない場合は、時、分、秒のすべてが 0 になります。

使用例

次のコードは、getSeconds メソッドの使用例です。

function TimeDemo(){
   var d, s = "現在のローカル時間: ";
   var c = ":";
   d = new Date();
   s += d.getHours() + c;
   s += d.getMinutes() + c;
   s += d.getSeconds() + c;
   s += d.getMilliseconds();
   return(s);
}

必要条件

バージョン 1

参 照

Date Object メソッド | getUTCSeconds メソッド | setSeconds メソッド | setUTCSeconds メソッド

対象: Date オブジェクト


getTime メソッド

Date オブジェクトに格納されている時刻を返します。

dateObj.getTime()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

getTime メソッドの戻り値は、1970 年 1 月 1 日午前 00:00:00 と Date オブジェクトに格納されている時刻との差をミリ秒単位で表す整数値です。使用できる日付の範囲は、概算で 1970 年 1 月 1 日午前 00:00:00 から 285,616 年 12 月 31 日午後 12:59:59 までです。負の数値は、1970 年以前の日付を示します。

複数の日付データや時刻データを使って計算を行う場合は、1 日、1 時間、1 分間などの時間をミリ秒単位で表す変数を定義しておくと便利です。次に例を示します。

var MinMilli = 1000 * 60
var HrMilli = MinMilli * 60
var DyMilli = HrMilli * 24

使用例

次のコードは、getTime メソッドの使用例です。

function GetTimeTest(){
   var d, s, t;
   var MinMilli = 1000 * 60;
   var HrMilli = MinMilli * 60;
   var DyMilli = HrMilli * 24;
   d = new Date();
   t = d.getTime();
   s = "1970 年 1 月 1 日より "
   s += Math.round(t / DyMilli) + " 日経過しています。";
   return(s);
}

必要条件

バージョン 1

参 照

Date Object メソッド | setTime メソッド

対象: Date オブジェクト


getTimezoneOffset メソッド

ホスト コンピュータの時刻と世界協定時刻 (UTC)との差を分単位の値で返します。

dateObj.getTimezoneOffset()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

getTimezoneOffset メソッドの戻り値は、現在のコンピュータの時刻と UTC の時刻との差を分単位で表す整数です。戻り値は、スクリプトが実行されているコンピュータの時刻を基にした値になります。つまり、このメソッドがサーバー側スクリプトから呼び出された場合は、サーバー コンピュータの時刻を基にした値が返され、クライアント側スクリプトから呼び出された場合はクライアント コンピュータの時刻を基にした値が返されます。

コンピュータの時刻が UTC より遅い場合 (太平洋夏時間など) は正の値、UTC より早い場合 (日本時間など) は負の値になります。

たとえば、ニューヨークのサーバーが、12 月 1 日にロサンゼルスのクライアントからのアクセスを受けたとします。この場合、getTimezoneOffset メソッドが、クライアント側スクリプトで実行された場合は 480 が返され、サーバー側スクリプトで実行された場合は 300 が返されます。

使用例

次のコードは、getTimezoneOffset メソッドの使用例です。

function TZDemo(){
   var d, tz, s = "現在のローカル時間は、グリニッジ標準時 (GMT) より";
   d = new Date();
   tz = d.getTimezoneOffset();
   if (tz < 0)
      s += tz / 60 + " 時間前です。";
   else if (tz == 0)
      s += "GMT";
   else
      s += tz / 60 + " 時間後です。";
   return(s);
}

必要条件

バージョン 1

参 照

Date Object メソッド

対象: Date オブジェクト


getUTCDate メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)の日付の日の部分を返します。

dateObj.getUTCDate()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間の日付の日の部分を取得するには、getDate メソッドを使用します。

戻り値は、Date オブジェクトに格納されている日付の日を表す 1 ～ 31 の範囲内の整数です。

使用例

次のコードは、getUTCDate メソッドの使用例です。

function UTCDateDemo(){
   var d, s = "世界協定時刻で表した今日の日付: ";
   d = new Date();
   s += (d.getUTCMonth() + 1) + "/";
   s += d.getUTCDate() + "/";
   s += d.getUTCFullYear();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getDate メソッド | setDate メソッド | setUTCDate メソッド

対象: Date オブジェクト


getUTCDay メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)の日付の曜日を返します。

dateObj.getUTCDay()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間の日付の曜日を取得するには、getDay メソッドを使用します。

getUTCDay メソッドの戻り値は、Date オブジェクトに格納されている日付の曜日の部分を表す 0 ～ 6 の範囲内の整数です。各整数が表す曜日は次のとおりです。

値 | 曜日
0 | 日曜日
1 | 月曜日
2 | 火曜日
3 | 水曜日
4 | 木曜日
5 | 金曜日
6 | 土曜日

使用例

次のコードは、getUTCDay メソッドの使用例です。

function DateDemo(){
   var d, day, x, s = "今日の曜日: ";
   var x = new Array("日曜日", "月曜日", "火曜日");
   var x = x.concat("水曜日", "木曜日", "金曜日");
   var x = x.concat("土曜日");
   d = new Date();
   day = d.getUTCDay();
   return(s += x[day]);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getDay メソッド

対象: Date オブジェクト


getUTCFullYear メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)の日付の年を返します。

dateObj.getUTCFullYear()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間の年を取得するには、getFullYear メソッドを使用してください。

getUTCFullYear メソッドの戻り値は 4 桁の年です。これにより、2000 年 1 月 1 日を 1900 年 1 月 1 日と誤って認識するという 2000 年問題を回避することができます。

使用例

次のコードは、getUTCFullYear メソッドの使用例です。

function UTCDateDemo(){
   var d, s = "世界協定時刻で表した今日の日付: ";
   d = new Date();
   s += (d.getUTCMonth() + 1) + "/";
   s += d.getUTCDate() + "/";
   s += d.getUTCFullYear();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getFullYear メソッド | setFullYear メソッド | setUTCFullYear メソッド

対象: Date オブジェクト


getUTCHours メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)の時の部分を返します。

dateObj.getUTCHours()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間での 0 時からの時単位の経過時間を取得するには、getHours メソッドを使用します。

getUTCHours メソッドの戻り値は、Date オブジェクトに格納されている 0 時からの経過時間を時単位で表す 0 ～ 23 の範囲内の整数です。ただし、戻り値が 0 のときは、午前 1:00:00 より前の場合のほかに、Date オブジェクトが作成されたときにオブジェクトに時刻データが格納されなかった場合を考慮する必要があります。どちらの場合かを判断するには、分および秒の値も調べます。Date オブジェクトに時刻データが格納されていない場合は、時、分、秒のすべてが 0 になります。

使用例

次のコードは、getUTCHours メソッドの使用例です。

function UTCTimeDemo(){
   var d, s = "現在の世界協定時刻 (UTC): ";
   var c = ":";
   d = new Date();
   s += d.getUTCHours() + c;
   s += d.getUTCMinutes() + c;
   s += d.getUTCSeconds() + c;
   s += d.getUTCMilliseconds();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getHours メソッド | setHours メソッド | setUTCHours メソッド

対象: Date オブジェクト


getUTCMilliseconds メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)のミリ秒の値を返します。

dateObj.getUTCMilliseconds()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間でのミリ秒の値を取得するには、getMilliseconds メソッドを使用します。

戻り値のミリ秒の範囲は、0 ～ 999 です。

使用例

次のコードは、getUTCMilliSeconds メソッドの使用例です。

function UTCTimeDemo(){
   var d, s = "現在の世界協定時刻 (UTC): ";
   var c = ":";
   d = new Date();
   s += d.getUTCHours() + c;
   s += d.getUTCMinutes() + c;
   s += d.getUTCSeconds() + c;
   s += d.getUTCMilliseconds();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getMilliseconds メソッド | setMilliseconds メソッド | setUTCMilliseconds メソッド

対象: Date オブジェクト


getUTCMinutes メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)の分の部分を返します。

dateObj.getUTCMinutes()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間の分の部分を取得するには、getMinutes メソッドを使用します。

getUTCMinutes メソッドの戻り値は、Date オブジェクトに格納されている時刻の分の部分を表す 0 ～ 59 の範囲内の整数です。ただし、戻り値が 0 のときは、毎正時を過ぎた時間が 1 分に満たない場合のほかに、Date オブジェクトが作成されたときにオブジェクトに時刻データが格納されなかった場合を考慮する必要があります。どちらの場合かを判断するには、時および秒の値も調べます。Date オブジェクトに時刻データが格納されていない場合は、時、分、秒のすべてが 0 になります。

使用例

次のコードは、getUTCMinutes メソッドの使用例です。

function UTCTimeDemo()
{
   var d, s = "現在の世界協定時刻 (UTC): ";
   var c = ":";
   d = new Date();
   s += d.getUTCHours() + c;
   s += d.getUTCMinutes() + c;
   s += d.getUTCSeconds() + c;
   s += d.getUTCMilliseconds();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getMinutes メソッド | setMinutes メソッド | setUTCMinutes メソッド

対象: Date オブジェクト


getUTCMonth メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)の日付の月を返します。

dateObj.getUTCMonth()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間での月を取得するには、getMonth メソッドを使用します。

getUTCMonth メソッドの戻り値は、Date オブジェクトに格納されている日付の月の部分を表す 0 ～ 11 の範囲内の整数です。ただし、返される整数の月は一般に使用される数字ではなく、一般に表す数字より 1 小さい値です。たとえば、Date オブジェクトに "Jan 5, 1996 08:47:00.0" というデータが格納されている場合、getUTCMonth メソッドは 0 を返します。

使用例

次のコードは、getUTCMonth メソッドの使用例です。

function UTCDateDemo(){
   var d, s = "世界協定時刻で表した今日の日付: ";
   d = new Date();
   s += (d.getUTCMonth() + 1) + "/";
   s += d.getUTCDate() + "/";
   s += d.getUTCFullYear();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getMonth メソッド | setMonth メソッド | setUTCMonth メソッド

対象: Date オブジェクト


getUTCSeconds メソッド

Date オブジェクトに格納されている世界協定時刻 (UTC)の秒の部分を返します。

dateObj.getUTCSeconds()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

ローカル時間での秒の部分を取得するには、getSeconds メソッドを使用します。

getUTCSeconds メソッドの戻り値は、Date オブジェクトに格納されている時刻の秒の部分を表す 0 ～ 59 の範囲内の整数です。ただし、戻り値が 0 のときは、オブジェクトに格納されていた時刻が 1 分のうちの最初の 1 秒を経過していない時刻の場合のほかに、Date オブジェクトが作成されたときにオブジェクトに時刻データが格納されなかった場合を考慮する必要があります。どちらの場合かを判断するには、時および分の値も調べます。Date オブジェクトに時刻データが格納されていない場合は、時、分、秒のすべてが 0 になります。

使用例

次のコードは、getUTCSeconds メソッドの使用例です。

function UTCTimeDemo(){
   var d, s = "現在の世界協定時刻 (UTC): ";
   var c = ":";
   d = new Date();
   s += d.getUTCHours() + c;
   s += d.getUTCMinutes() + c;
   s += d.getUTCSeconds() + c;
   s += d.getUTCMilliseconds();
   return(s);
}

必要条件

バージョン 3

参 照

Date Object メソッド | getSeconds メソッド | setSeconds メソッド | setUTCSeconds メソッド

対象: Date オブジェクト


getVarDate メソッド

Date オブジェクトに格納されている日付の VT_DATE 値を返します。

dateObj.getVarDate()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

getVarDate メソッドは、VT_DATE 形式で日付の値をやり取りする COM オブジェクト、ActiveX® オブジェクト、またはその他のオブジェクトを扱う場合に使用します。たとえば、Visual Basic や VBScript があります。実際の形式は、JScript ではなく地域設定によって異なります。

必要条件

バージョン 3

参 照

getDate メソッド | parse メソッド

対象: Date オブジェクト


getYear メソッド

Date オブジェクトに格納されている年の部分を返します。

dateObj.getYear()

必須の dateObj 参照には、Date オブジェクトの名前を指定します。

解説

getYear メソッドは廃止されました。現在、以前のバージョンとの互換性のためにのみ提供されています。代わりに、getFullYear メソッドの使用をお勧めします。

getYear メソッドでは、Date オブジェクトに格納されている年が 1900 年から 1999 年の間の場合は、1900 年との差を表す "年" を 2 桁の整数値として返します。それ以外の場合には、4 桁の整数値が返されます。たとえば、Date オブジェクトに格納されている年が 1996 年の場合は、年数を 96 で返し、1825 年や 2025 年の場合は、その 4 桁の値をそのまま返します。

メモ JScript Version 1.0 では、getYear メソッドは年を表す値にかかわらず、Date オブジェクトに指定された年の値から 1900 を引いた結果を値として返します。たとえば、Date オブジェクトに格納されている年が 1899 年の場合は年数を -1 で返し、2000 年の場合は、100 を返します。

使用例

次のコードは、getYear メソッドの使用例です。

function DateDemo(){
   var d, s = "今日の日付: ";
   d = new Date();
   s += (d.getMonth() + 1) + "/";
   s += d.getDate() + "/";
   s += d.getYear();
   return(s);
}

必要条件

バージョン 1

参 照

Date Object メソッド | getFullYear メソッド | getUTCFullYear メソッド | setFullYear メソッド | setUTCFullYear メソッド | setYear メソッド

対象: Date オブジェクト


indexOf メソッド

String オブジェクト (文字列) 内を、指定された文字列で先頭から検索します。

strObj.indexOf(subString[, startIndex])

引数

strObj
必ず指定します。String オブジェクトの名前またはリテラルを指定します。
subString
必ず指定します。String オブジェクト内で検索するサブストリングを指定します。
startIndex
省略可能です。検索を開始する String オブジェクト内での位置を整数値で指定します。省略した場合は、文字列の先頭から検索が開始されます。

解説

indexOf メソッドの戻り値は、String オブジェクト内で見つかったサブストリングの先頭位置を示す整数値です。サブストリングが見つからなかった場合は、-1 が返されます。

引数 startindex で負の値を指定した場合、0 として処理されます。また、文字列の末尾の位置番号より大きい値を指定した場合、末尾の位置番号として処理されます。

検索は左から右方向で行われます。それ以外の場合、このメソッドは lastIndexOf と同じです。

使用例

次のコードは、indexOf メソッドの使用例です。

function IndexDemo(str2){
   var str1 = "BABEBIBOBUBABEBIBOBU"
   var s = str1.indexOf(str2);
   return(s);
}

必要条件

バージョン 1

参 照

lastIndexOf メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


isFinite メソッド

指定した数値が有限かどうかを調べます。

isFinite(number)

必須の引数 number には、任意の数値を指定します。

解説

引数 number に指定した値が NaN、負の無限大、正の無限大のいずれでもなければ、真 (true) が返されます。いずれかに該当する場合は、偽 (false) が返されます。

必要条件

バージョン 3

参 照

isNaN メソッド

対象: Global オブジェクト


isNaN メソッド

指定された値が予約値 NaN (not a number) かどうかを示すブール値を返します。

isNaN(numValue)

必須の numvalue には、NAN かどうかを調べる値を指定します。

解説

isNaN メソッドは、指定した値が NaN だった場合は真 (true) を返し、それ以外の場合は偽 (false) を返します。通常、parseInt メソッドや parseFloat メソッドからの戻り値を調べるために使用します。

また、変数をその変数自体と比較して、NaN かどうかを調べることもできます。値が等しいと評価されない場合、その変数は NaN となります。NaN は、自身と比較して等しいと評価されない唯一の値です。

必要条件

バージョン 1

参 照

isFinite メソッド | NaN プロパティ (Global オブジェクト) | parseFloat メソッド | parseInt メソッド

対象: Global オブジェクト


italics メソッド

String オブジェクトに格納されている文字列の前後に HTML の <I> タグを挿入します。

strVariable.italics( )
"String Literal".italics( )

解説

italics メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.italics( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<I>これは文字列です</I>

このメソッドの実行時には、<I> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

bold メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


item メソッド

コレクション内の現在の項目を返します。

enumObj.item()

必須の enumObj 参照には、Enumerator オブジェクトの名前を指定します。

解説

item メソッドは、現在の項目を返します。コレクションが空の場合、または現在の項目が未定義の場合は、undefined を返します。

使用例

次のコードは、item メソッドを使って Drives コレクションのメンバを返す例です。

function ShowDriveList(){
   var fso, s, n, e, x;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);
   s = "";
   for (; !e.atEnd(); e.moveNext())
   {
      x = e.item();
      s = s + x.DriveLetter;
      s += " - ";
      if (x.DriveType == 3)
         n = x.ShareName;
      else if (x.IsReady)
         n = x.VolumeName;
      else
         n = "[ドライブの準備ができていません。]";
      s +=  n + "<BR>";
   }
   return(s);
}

必要条件

バージョン 3

参 照

atEnd メソッド | moveFirst メソッド | moveNext メソッド

対象: Enumerator オブジェクト


join メソッド

指定された区切り文字で区切られた配列内の各要素を連結してできた文字列値を返します。

arrayObj.join(separator)

引数

arrayObj
必ず指定します。Array オブジェクトの名前を指定します。
separator
必ず指定します。配列要素を結合するときに区切り文字として使用する String オブジェクトの名前を指定します。省略した場合、各配列要素はカンマで区切られます。

解説

任意の要素が undefined または null の場合は、空の文字列として処理されます。

使用例

次のコードは、join メソッドの使用例です。

function JoinDemo(){
   var a, b;
   a = new Array(0,1,2,3,4);
   b = a.join("-");
   return(b);
}

必要条件

バージョン 2

参 照

Array Object メソッド | String オブジェクト

対象: Array オブジェクト


lastIndexOf メソッド

String オブジェクト (文字列) 内を、指定された検索文字列で後方から検索します。

strObj.lastIndexOf(substring[, startindex])

引数

strObj
必ず指定します。String オブジェクトの名前またはリテラルを指定します。
substring
必ず指定します。検索する検索文字列を指定します。
startindex
省略可能です。検索を開始する String オブジェクト内での位置を整数値で指定します。省略した場合は、文字列の末尾から検索が開始されます。

解説

lastIndexOf メソッドの戻り値は、String オブジェクト内で見つかった検索文字列の先頭位置を示す整数値です。検索文字列が見つからなかった場合は、-1 が返されます。

引数 startindex で負の値を指定した場合、0 として処理されます。また、文字列の末尾の位置番号より大きい値を指定した場合、末尾の位置番号として処理されます。

検索は右から左方向で行われます。それ以外の場合、このメソッドは indexOf と同じです。

次のコードは、lastIndexOf メソッドの使用例です。

function lastIndexDemo(str2)
{
   var str1 = "BABEBIBOBUBABEBIBOBU"
   var s = str1.lastIndexOf(str2);
   return(s);
}

必要条件

バージョン 1

参 照

indexOf メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


lbound メソッド

VBArray の指定した次元での最も小さいインデックス値を返します。

safeArray.lbound(dimension)

引数

safeArray
必ず指定します。VBArray オブジェクトの名前を指定します。
dimension
省略可能です。VBArray の、最も小さいインデックスを取得する次元を指定します。省略した場合は、1 が指定されたものとします。

解説

VBArray が空の場合は、undefinedが返されます。引数 dimension に VBArray の次元数より大きい値を指定したり、負の値を指定したりすると、"インデックスが有効範囲にありません。" というエラーが発生します。

使用例

次のコードは、3 つの部分から構成されます。最初の部分は、Visual Basic のセーフ配列を作成する VBScript のコードです。2 番目の部分は、このセーフ配列の次元数と各次元の下限値を取得する JScript のコードです。セーフ配列は、Visual Basic というよりもむしろ VBScript で作成されるので、下限値は常に 0 になります。どちらのコードも、HTML ページの <HEAD> セクションに記述します。3 番目の部分は、ほかの 2 つのコードを実行するために <BODY> セクションに記述する JScript のコードです。

<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
   Dim i, j, k
   Dim a(2, 2)
   k = 1
   For i = 0 To 2
      For j = 0 To 2
         a(j, i) = k
         k = k + 1
      Next
   Next
   CreateVBArray = a
End Function
-->
</SCRIPT>

<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vba){
   var i, s;
   var a = new VBArray(vba);
   for (i = 1; i <= a.dimensions(); i++)
   {
      s = "次元 ";
      s += i + " の下限値は ";
      s += a.lbound(i)+ " です。<BR>";
      return(s);
   }
}
-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT language="jscript">
   document.write(VBArrayTest(CreateVBArray()));
</SCRIPT>
</BODY>

必要条件

バージョン 3

参 照

dimensions メソッド | getItem メソッド | toArray メソッド | ubound メソッド

対象: VBArray オブジェクト


link メソッド

String オブジェクトに格納されている文字列の前後に HTML の HREF 属性を指定する <A> タグを挿入します。

strVariable.link(linkstring)
"String Literal".link(linkstring)

引数 linkstring には、アンカー タグの HREF 属性に入れる文字列を指定します。

解説

この link メソッドを呼び出すと、String オブジェクトからのハイパーリンクが作成されます。このメソッドの使用例を次に示します。

var strVariable = "これはハイパーリンクです";
strVariable = strVariable.link("http://www.microsoft.com");

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<A HREF="http://www.microsoft.com">これはハイパーリンクです</A>

このメソッドの実行時には、<A> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

anchor メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


localeCompare メソッド

現在の国別情報において、2 つの文字列が等しいかどうかを表す値を返します。

stringVar.localeCompare(stringExp)

引数

stringVar
必ず指定します。String オブジェクトまたはリテラルを指定します。
stringExp
必ず指定します。stringVar と比較する文字列を指定します。

解説

localeCompare では、国別情報に基づいて stringVar と stringExp の文字列を比較し、システムのデフォルト国別情報の並びに従って -1、0、または +1 を返します。

stringVar が stringExp の前に来る場合、localeCompare は –1 を返します。stringVar が stringExp の後ろに来る場合は +1 を返します。戻り値がゼロ (0) の場合は、2 つの文字列は等しいことを表します。

必要条件

バージョン 5.5

参 照

toLocalString

対象: String オブジェクト


log メソッド

指定された数値の自然対数を返します。

Math.log(number)

必須の引数 number には、自然対数を求める値を数式で指定します。

戻り値

戻り値は、引数 number の自然対数です。e が底となります。

必要条件

バージョン 1

参 照

Math Object メソッド

対象: Math オブジェクト


match メソッド

正規表現パターンを使って文字列に対して検索を実行し、検索結果を含む配列を返します。

stringObj.match(rgExp)

引数

stringObj
必ず指定します。検索対象とする String オブジェクトの名前または文字列リテラルを指定します。
rgExp
必ず指定します。正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスです。正規表現パターンおよびフラグを含む変数名または文字列リテラルを指定することもできます。

解説

パターンに一致する文字列が見つからなかった場合、match メソッドは null を返します。一致する文字列が見つかった場合は、配列を返し、さらにグローバルな RegExp オブジェクトのプロパティが検索結果を反映して更新されます。

exec メソッドが返す配列には、input、index、および lastIndex の 3 つのプロパティがあります。input プロパティには、検索文字列全体が格納されます。index プロパティには、検索終了後の文字列内で一致が検出された各文字列位置が格納されます。lastIndex プロパティには、一致文字列の最後の文字に続く位置が格納されます。

グローバル フラグ (g) が設定されていない場合、配列の要素 0 には一致結果全体が、要素が 1 から n には、一致結果の中に副次的に含まれる一致の内容が格納されます。この処理は、グローバルなフラグが設定されていない場合の exec メソッドの処理と同じです。グローバル フラグが設定されている場合、要素 0 から n には検出されたすべての一致がそれぞれ格納されます。

使用例

次のコードは、match メソッドの使用例です。

function MatchDemo(){
   var r, re;                    //変数を宣言します。
   var s = "The rain in Spain falls mainly in the plain";
   re = /ain/i;    //正規表現パターンを作成します。
   r = s.match(re);   //パターンに一致する文字列を検索します。
   return(r);         //最初に検索された "ain" を返します。
}

次のコードは、g フラグが設定されている場合の match メソッドの使用例です。

function MatchDemo(){
   var r, re;                    //変数を宣言します。
   var s = "The rain in Spain falls mainly in the plain";
   re = /ain/ig;      //正規表現パターンを作成します。
   r = s.match(re);   //パターンに一致する文字列を検索します。
   return(r);         //4 つの "ain" すべてが含まれている
// 配列を返します。
}

次のコードは、match メソッドの文字列リテラルの使用例です。

var r, re = "Spain";
r = "The rain in Spain".replace(re, "Canada");

必要条件

バージョン 3

参 照

exec メソッド | RegExp オブジェクト | replace メソッド | search メソッド | String Object メソッド | test メソッド

対象: String オブジェクト


max メソッド

指定された 0 以上の数値のうち大きい方の値を返します。

Math.max([number1[, number2[. . . [,numberN]]]])

省略可能な引数 number1, number2, . . ., numberN は、評価される数式です。

解説

引数を指定しない場合、戻り値は NEGATIVE_INFINITY に等しくなります。引数 NaN を指定すると、戻り値も NaN になります。

必要条件

バージョン 1

参 照

Math Object メソッド | min メソッド| NEGATIVE_INFINITY プロパティ

対象: Math オブジェクト


min メソッド

指定された 0 以上の数値のうち小さい方の値を返します。

Math.min([number1[, number2[. . . [,numberN]]]])

省略可能な引数 number1, number2, . . ., numberN は、評価される数式です。

解説

引数を指定しない場合、戻り値は POSITIVE_INFINITY に等しくなります。引数 NaN を指定すると、戻り値も NaN になります。

必要条件

バージョン 1

参 照

Math Object メソッド | max メソッド | POSITIVE_INFINITY プロパティ

対象: Math オブジェクト


moveFirst メソッド

コレクション内の現在の項目を最初の項目に設定し直します。

enumObj.moveFirst( )

必須の enumObj 参照には、Enumerator オブジェクトの名前を指定します。

解説

コレクション内に項目が 1 つもない場合は、現在の項目は undefinedに設定されます。

使用例

次のコードは、moveFirst メソッドを使って、Drives コレクションのメンバのうち最初のメンバから評価するために使用する例です。

function ShowFirstAvailableDrive(){
   var fso, s, e, x;                //変数を宣言します。
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);      //Enumerator オブジェクトを作成します。
   e.moveFirst();                   //最初のドライブに移動します。
   s = "";                              //s を初期化します。
   do
   {
      x = e.item();                 //ドライブが存在するかどうかを確認します。
      if (x.IsReady)                //ドライブの準備ができているかどうかを確認します。
      {
         s = x.DriveLetter + ":";   //ドライブ名 1st を s に割り当てます。
         break;
      }
      else
         if (e.atEnd())             //コレクションの最後に置かれているかどうかを確認します。
         {
            s = "利用可能なドライブはありません。";
            break;
         }
      e.moveNext();                 //次のドライブに移動します。
   }
   while (!e.atEnd());              //コレクションの最後に置かれていない場合に実行します。
   return(s);                       //利用可能なドライブの一覧を返します。
}

必要条件

バージョン 3

参 照

atEnd メソッド | item メソッド | moveNext メソッド

対象: Enumerator オブジェクト


moveNext メソッド

現在の項目をコレクション内の次の項目へ移動します。

enumObj.moveNext( )

必須の enumObj 参照には、Enumerator オブジェクトの名前を指定します。

解説

列挙子がコレクション内の最後に置かれていた場合、またはコレクションが空の場合、現在の項目は undefinedに設定されます。

次のコードは、moveNext メソッドを使って、Drives コレクションの次の項目 (ドライブ) に移動する例です。

function ShowDriveList(){
   var fso, s, n, e, x;                 //変数を宣言します。
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);      //Enumerator オブジェクトを作成します。
   s = "";                              //s を初期化します。
   for (; !e.atEnd(); e.moveNext())
   {
      x = e.item();
      s = s + x.DriveLetter;            //ドライブ文字を追加します。
      s += " - ";                       //"-" を追加します。
      if (x.DriveType == 3)
         n = x.ShareName;               //共有名を追加します。
      else if (x.IsReady)
         n = x.VolumeName;              //ボリューム名を追加します。
      else
         n = "[ドライブの準備ができていません。]";       //ドライブの準備ができていないことを示します。
      s +=   n + "\n";
   }
   return(s);                           //ドライブのステータスを返します。
}

必要条件

バージョン 3

参 照

atEnd メソッド | item メソッド | moveFirst メソッド

対象: Enumerator オブジェクト


parse メソッド

日付を表す文字列を解析し、その日付と 1970 年 1 月 1 日午前 00:00:00 との差を表すミリ秒単位の値を返します。

Date.parse(dateVal)

必須の引数 dateVal には、日付を特定の書式 ("Jan 5, 1996 08:47:00") で表した文字列か、または ActiveX® などの他のオブジェクトから取得した VT_DATE 値を指定します。

解説

parse メソッドの戻り値は、指定された日付と 1970 年 1 月 1 日午前 00:00:00 との差をミリ秒単位で表す整数値です。

parse メソッドは Date オブジェクトの静的な (static) メソッドです。Date オブジェクトのインスタンスに対して実行するメソッドではなく、次のコードのように使用するメソッドです。

var datestring = "November 1, 1997 10:15 AM";
Date.parse(datestring)

parse メソッドで正しく日付を解析させるには、次の条件を満す文字列を指定する必要があります。

  • 日付の指定には "/" または "-" を使用できます。ただし、指定する順序は米国で一般的に使用されている Short Date 形式 ("月/日/年") で記述します。たとえば "7/20/96"と記述します。
  • "July 10 1995" という Long Date 形式で日付を指定する場合、年、月、日はどのような順序でも指定できます。年は 2 桁でも 4 桁でも指定できます。ただし、年を 2 桁で指定できるのは日付が 1970 年以降の場合だけです。
  • かっこで囲まれた文字列はすべてコメントとして扱われます。かっこは入れ子でも記述できます。
  • カンマおよびスペースは、両方とも区切り文字として扱われます。区切り文字は、複数の記述ができます。
  • 月および日の名前は 2 文字以上で指定します。2 文字で指定した名前に複数の月または日が該当する場合は、その中の最後の名前が使用されます。たとえば、月に "Ju" と指定すると、June (6 月) ではなく July (7 月) となります。
  • 指定した日付に合わない曜日を指定した場合、曜日は無視されます。たとえば、1996 年 11 月 9 日は実際には金曜日に当たるのに、"Tuesday November 9 1996" という文字列を指定した場合でも、メソッドは曜日だけを無視して正常に実行されます。その結果、Date オブジェクトの日付は、"Friday November 9 1996" となります。
  • 米国のすべての標準タイムゾーン、および UTC と GMT に対応しています。
  • 時、分、秒は省略可能です。指定する場合はコロンで区切ります。"10:"、"10:11"、"10:11:12" という指定はすべて有効です。
  • 24 時間形式で時刻を指定する場合は、12 時以降の時刻に "PM" を指定するとエラーが発生します。たとえば、"23:15 PM" と指定するとエラーが発生します。
  • 無効な日付の入った文字列を指定するとエラーが発生します。たとえば、年が 2 つ指定されている、月が 2 つ指定されているなどの文字列を指定するとエラーが発生します。

使用例

次のコードは、parse メソッドの使用例です。日付を表す関数では、その日付と 1970 年 1 月 1 日との差を返します。

function GetTimeTest(testdate){
   var s, t;                    //変数を宣言します。
   var MinMilli = 1000 * 60;       //変数を初期化します。
   var HrMilli = MinMilli * 60;
   var DyMilli = HrMilli * 24;
   t = Date.parse(testdate);       //testdate を解析します。
   s = testdate + " と 1970 年 1 月 1 日の間には、"                //返す文字列を作成します。
   s += Math.round(Math.abs(t / DyMilli)) + " 日あります。"
   return(s);                      // 結果を返します。
}

必要条件

バージョン 1

参 照

Date Object メソッド

対象: Date オブジェクト


parseFloat メソッド

文字列から変換した浮動小数点数を返します。

parseFloat(numString)

必須の引数 numstring には、浮動小数点数を含む文字列を指定します。

解説

parseFloat メソッドは、引数 numString に含まれる数値と等しい数値を返します。引数 numString の先頭に浮動小数点数がない場合は、NaN (not a number) を返します。

parseFloat("abc")      // NaN を返します。
parseFloat("1.2abc")   // 1.2 を返します。

値が NaN かどうかを調べるには、isNaN メソッドを使用します。

必要条件

バージョン 1

参 照

isNaN メソッド | parseInt メソッド | String オブジェクト

対象: Global オブジェクト


parseInt メソッド

文字列から変換した整数を返します。

parseInt(numString, [radix])

引数

numString
必ず指定します。数値に変換する文字列を指定します。
radix
省略可能です。引数 numstring に含まれる数値の基数を表す 2 ～ 36 の範囲の値を指定します。省略した場合、先頭に "0x" が付いている文字列は 16 進数、"0" が付いている文字列は 8 進数と見なされます。これ以外の文字列は、10 進数と見なされます。

解説

parseInt メソッドは、引数 numString に含まれる数値と等しい整数を返します。引数 numString の先頭に整数がない場合は、NaN (not a number) を返します。

parseInt("abc")     // NaN を返します。
parseInt("12abc")   // 12 を返します。

値が NaN かどうかを調べるには、isNaN メソッドを使用します。

必要条件

バージョン 1

参 照

isNaN メソッド | parseFloat メソッド | String オブジェクト | valueOf メソッド

対象: Global オブジェクト


pop メソッド

配列にある最後の要素を取り出し、それを返します。

arrayObj.pop( )

arrayObj 参照は必ず指定し、Array オブジェクトを指定します。

解説

配列が空の場合は、undefined を返します。

必要条件

バージョン 5.5

参 照

push メソッド

対象: Array オブジェクト


pow メソッド

引数 exponent を指数とする引数 base の累乗を返します。

Math.pow(base, exponent)

引数

base
必ず指定します。累乗の基数とする値を数式で指定します。
exponent
必ず指定します。累乗の指数とする値を数式で指定します。

使用例

次の例では、10 の 3 乗を算出し、1000 を返します。

Math.pow(10,3);

必要条件

バージョン 1

参 照

Math Object メソッド

対象: Math オブジェクト


push メソッド

配列に新しい要素を追加し、その要素を追加した後の配列の長さを返します。

arrayObj.push([item1 [item2 [. . . [itemN ]]]])

引数

arrayObj
必ず指定します。Array オブジェクトを指定します。
item, item2,. . . itemN
省略可能です。Array の新しい要素を指定します。

解説

push メソッドでは、引数に指定された順に要素を追加します。引数の 1 つが配列である場合は、1 つの要素として追加します。複数の配列の要素を連結する場合は concat メソッドを使用します。

必要条件

バージョン 5.5

参 照

Concat メソッド | pop Method

対象: Array オブジェクト


random メソッド

0 ～ 1 の範囲での擬似乱数を返します。

Math.random( )

解説

生成される擬似乱数は、0 ～ 1 の範囲内の値をとります (0 は含まれ、1 は含まれません)。つまり、戻り値が 0 になることはあっても 1 になることはありません。乱数ジェネレータのシードは、JScript がロードされた時点で自動的に生成されます。

必要条件

バージョン 1

参 照

Math Object メソッド

対象: Math オブジェクト


replace メソッド

正規表現または検索文字列を使って置換された文字列のコピーを返します。

stringObj.replace(rgExp, replaceText)

引数

stringObj
必ず指定します。置換処理の対象となる String オブジェクトの名前または文字列リテラルを指定します。この文字列は、replace メソッドにより変更されません。
rgExp
必ず指定します。正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスを指定します。String オブジェクトの名前またはリテラルを指定することもできます。rgExp が Regular Expression オブジェクトのインスタンスでない場合は文字列に変換され、完全に一致する文字列の検索が実行されます。文字列から正規表現への変換は行われません。
replaceText
必ず指定します。検索で見つかった部分を置換するテキストが入った String オブジェクトまたは文字列リテラルを指定します。JScript 5.5 以降では、置換するテキストを返す関数を指定することもできます。

解説

replace メソッドは、指定された置換を終えた後の stringObj のコピーを返します。

次の表にある変数を使用して、最後に検出した一致やその文字列を指定できます。一致変数は、テキストの置換処理において、対象を動的に指定する必要がある場合に使用します。

文字 | 意味
$$ | $ (JScript 5.5 以降)
$& | stringObj に、全体が一致するパターンを指定します (JScript 5.5 以降)。
$` | $& より前方にある stringObj の部分を取得します (JScript 5.5 以降)。
$' | $& より後方にある stringObj の部分を取得します (JScript 5.5 以降)。
$n | サブ文字列の中で n 番目に検出されたものを取得します。n には 1 桁の 10 進数値 (1 ～ 9) を指定します (JScript 5.5 以降)。
$nn | サブ文字列の中で nn 番目に検出されたものを取得します。nn には 2 桁の 10 進数値 (01 ～ 99) を指定します (JScript 5.5 以降)。

replaceText が関数の場合、一致する各文字列に対してこの関数が m + 3 個の引数を伴って呼び出されます。m は、rgExp の中で使用されている取得を示す開きかっこの数です。1 個目の引数は一致したサブ文字列です。次の引数は、検索結果そのものです。m + 2 個目の引数は stringObj で一致したオフセットを表し、m + 3 個目の引数は stringObj を表します。結果は、該当する関数呼び出しの戻り値をそれぞれ一致する文字列と置換した文字列値で返されます。

replace メソッドを実行すると、グローバルな RegExp オブジェクトのプロパティが更新されます。

使用例

次のコードは、replace メソッドの使用例です。"A" という単語を "The" という単語の最初のインスタンスに置換します。

function ReplaceDemo(){
   var r, re;                    //変数を宣言します。
   var ss = "The man hit the ball with the bat.\n";
   ss += "while the fielder caught the ball with the glove.";
   re = /The/g;             //正規表現パターンを作成します。
   r = ss.replace(re, "A");    //"A" を "The" に置換します。
   return(r);                   //置換後の文字列を返します。
}

さらに、replace メソッドでは、パターンに一致する文字列どうしを置換することができます。次のコードは、文字列の中の単語の各ペアを交換する例です。

function ReplaceDemo(){
   var r, re;                    //変数を宣言します。
   var ss = "The rain in Spain falls mainly in the plain.";
   re = /(\S+)(\s+)(\S+)/g;             //正規表現パターンを作成します。
   r = ss.replace(re, "$3$2$1");   // 単語の各ペアを交換します。
   return(r);                      // 結果の文字列を返します。
}

次のコードは、replaceText に関数を使用して華氏を摂氏に変換する例です。JScript 5.5 以降で使用できます。この関数は、"F" の直後に数値が続く文字列 (次の例では、"Water freezes at 32F and boils at 212F.") で機能します。

function f2c(s) {
var test = /(\d+(\.\d*)?)F\b/g;    // パターンを初期化します。
  return(s.replace
    (test,
      function($0,$1,$2) {
        return((($1-32) * 5/9) + "C");
      }
    )
  );
}
document.write(f2c("Water freezes at 32F and boils at 212F."));

必要条件

バージョン 1

参 照

exec メソッド | match メソッド | RegExp オブジェクト | search メソッド | String Object メソッド | test メソッド

対象: String オブジェクト


reverse メソッド

Array オブジェクトの要素を反転させます。

arrayObj.reverse( )

必須の arrayObj 参照には、Array オブジェクトの名前を指定します。

解説

指定された Array オブジェクト内で要素の位置を反転させます。このメソッドを実行しても、新しい Array オブジェクトは作成されません。

配列内の要素が連続していない場合、このメソッドを実行すると新しい要素が作成され、配列内の連続していない要素の間に挿入されます。作成された要素の値は、undefinedになります。

使用例

次のコードは、reverse メソッドの使用例です。

function ReverseDemo(){
   var a, l;                   // 変数を宣言します。
   a = new Array(0,1,2,3,4);   // 配列を作成して要素を設定します。
   l = a.reverse();            // 配列の要素を反転します。
   return(l);                  // 要素が反転された配列を返します。
}

必要条件

バージョン 2

参 照

Array Object メソッド

対象: Array オブジェクト


round メソッド

指定された数式の値に最も近い整数を返します。

Math.round(number)

必須の引数 number には、値の最も近い整数に丸める値を数式で指定します。

解説

引数 number の小数部分が 0.5 以上の場合、この引数より大きい値となる最小の整数が戻り値として返されます。小数部分が 0.5 未満の場合、この引数より小さいかまたは等しい値となる最大の整数が戻り値として返されます。

必要条件

バージョン 1

参 照

Math Object メソッド

対象: Math オブジェクト


search メソッド

正規表現に一致する最初の文字列の位置を返します。

stringObj.search(rgExp)

引数

stringObj
必ず指定します。検索対象とする String オブジェクトの名前または文字列リテラルを指定します。
rgExp
必ず指定します。正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスです。

解説

search メソッドは、パターンに一致する文字列が見つかったかどうかを示します。一致する文字列が見つかった場合、search メソッドは、その文字列が先頭からどれだけ離れているかを示す整数値を返します。一致する文字列が見つからなかった場合は、-1 を返します。

使用例

次のコードは、search メソッドの使用例です。

function SearchDemo(){
   var r, re;                   // 変数を宣言します。
   var s = "The rain in Spain falls mainly in the plain.";
   re = /falls/i;               // 正規表現パターンを作成します。
   r = s.search(re);            // 指定された文字列を検索します。
   return(r);                   // ブール値で結果を返します。
}

必要条件

バージョン 3

参 照

exec メソッド | match メソッド | Regular Expression オブジェクト | 正規表現の構文 | replace メソッド | String Object メソッド | test メソッド

対象: String オブジェクト


setDate メソッド

ローカル時間を使って Date オブジェクトの日付の日の部分を設定します。

dateObj.setDate(numDate)

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numDate
必ず指定します。設定する日を表す数値を指定します。

解説

世界協定時刻 (UTC)を使って日付の日の部分を設定するには、setUTCDate メソッドを使用します。

Date オブジェクトに格納されている月の日数より大きな値や負の値を引数 numDate に指定すると、引数 numDate に指定した値から格納されている月の日数を引いた値が日の値に設定されます。たとえば、1996 年 1 月 5 日の日付が格納されている Date オブジェクトに対して setDate(32) というメソッドを実行すると、日付は 1996 年 2 月 1 日に変更されます。負の値を指定した場合も同様の動作になります。

使用例

次のコードは、setDate メソッドの使用例です。

function SetDateDemo(newdate){
   var d, s;                  // 変数を宣言します。
   d = new Date();            // Date オブジェクトを作成します。
   d.setDate(newdate);        // 日付を newdate に設定します。
   s = "現在の設定は、";
   s += d.toLocaleString();  s += " です。";
   return(s);                 // 新しく設定された日付を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getDate メソッド | getUTCDate メソッド | setUTCDate メソッド

対象: Date オブジェクト


setFullYear メソッド

ローカル時間で Date オブジェクトの年の部分を設定します。

dateObj.setFullYear(numYear[, numMonth[, numDate]])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numYear
必ず指定します。設定する年を表す数値を指定します。
numMonth
省略可能です。設定する月を表す数値を指定します。引数 numDate を指定する場合、この引数を指定する必要があります。
numDate
省略可能です。設定する日を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numMonth を指定しなかった場合、月の部分を返す getMonth メソッドにより返される値が設定されます。

引数に有効範囲を超える値や負の値を指定すると、その値に応じて格納されているほかの値が変更されます。

世界協定時刻 (UTC) を使って年を設定するには、setUTCFullYear メソッドを使用してください。

Date オブジェクトでサポートされている年の範囲は、1970 年の前後の約 285,616 年です。

使用例

次のコードは、setFullYear メソッドの使用例です。

function SetFullYearDemo(newyear){
   var d, s;                  // 変数を宣言します。
   d = new Date();            // Date オブジェクトを作成します。
   d.setFullYear(newyear);    // 年を設定します。
   s = "現在の設定は、";
   s += d.toLocaleString();  s += " です。";
   return(s);                 //新しく設定された日付を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getFullYear メソッド | getUTCFullYear メソッド | setUTCFullYear メソッド

対象: Date オブジェクト


setHours メソッド

Date オブジェクトに格納されている時刻の時の部分をローカル時間で設定します。

dateObj.setHours(numHours[, numMin[, numSec[, numMilli]]])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numHours
必ず指定します。設定する時を表す数値を指定します。
numMin
省略可能です。設定する分を表す数値を指定します。引数 numSec か numMilli を指定する場合、この引数を指定する必要があります。
numSec
省略可能です。設定する秒を表す数値を指定します。引数 numMilli を指定する場合、この引数を指定する必要があります。
numMilli
省略可能です。設定するミリ秒を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numMinutes を指定しなかった場合、月の部分を返す getMinutes メソッドにより返される値が設定されます。

世界協定時刻 (UTC) の時刻の時の部分を設定するには、setUTCHours メソッドを使用します。

引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、日付が "Jan 5, 1996 00:00:00" と格納されている場合に setHours(30) メソッドを使用すると、日付は "Jan 6, 1996 06:00:00" に変更されます。負の値を指定した場合も、同様に処理されます。

使用例

次のコードは、setHours メソッドの使用例です。

function SetHoursDemo(nhr, nmin, nsec){
   var d, s;                     // 変数を宣言します。
   d = new Date();               // Date オブジェクトを作成します。
   d.setHours(nhr, nmin, nsec);  // 時間、分、および秒を設定します。
   s = "現在の設定は、" + d.toLocaleString()  + " です。"
   return(s);                    // 新しく設定された日付を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getHours メソッド | getUTCHours メソッド | setUTCHours メソッド

対象: Date オブジェクト


setMilliseconds メソッド

Date オブジェクトの時刻のミリ秒の部分を、ローカル時間で設定します。

dateObj.setMilliseconds(numMilli)

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numMilli
必ず指定します。設定するミリ秒を表す数値を指定します。

解説

ミリ秒を世界協定時刻 (UTC) で設定するには、setUTCMilliseconds メソッドを使用してください。

引数 numMilli に 999 を超える値か負の値を指定すると、値に応じて格納されている秒 (場合によっては分、時) の値が変更されます。

使用例

次のコードは、setMilliseconds メソッドの使用例です。

function SetMSecDemo(nmsec){
   var d, s;                    // 変数を宣言します。
   var sep = ":";               // 区切り文字を初期化します。
   d = new Date();              // Date オブジェクトを作成します。
   d.setMilliseconds(nmsec);    // ミリ秒を設定します。
   s = "現在の設定は、";
   s += d.toLocaleString() + sep + d.getMilliseconds; s += " です。";
   return(s);                   // 新しく設定された日付を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getMilliseconds メソッド | getUTCMilliseconds メソッド | setUTCMilliseconds メソッド

対象: Date オブジェクト


setMinutes メソッド

Date オブジェクトに格納されている時刻の分の部分をローカル時間で設定します

dateObj.setMinutes(numMinutes[, numSeconds[, numMilli]])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numMinutes
必ず指定します。設定する分を表す数値を指定します。
numSeconds
省略可能です。設定する秒を表す数値を指定します。引数 numMilli を指定する場合、この引数を指定する必要があります。
numMilli
省略可能です。設定するミリ秒を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numSeconds を指定しなかった場合、月の部分を返す getSeconds メソッドにより返される値が設定されます。

世界協定時刻 (UTC) を使って時刻の分の部分を設定するには、setUTCMinutes メソッドを使用します。

引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、日付が "Jan 5, 1996 00:00:00" と格納されている場合に setMinutes(90) メソッドを使用すると、日付は "Jan 5, 1996 01:30:00" に変更されます。負の値を指定した場合も、同様に処理されます。

使用例

次のコードは、setMinutes メソッドの使用例です。

function SetMinutesDemo(nmin, nsec){
   var d, s;                    // 変数を宣言します。
   d = new Date();              // Date オブジェクトを作成します。
   d.setMinutes(nmin, nsec);    // 分を設定します。
   s = "現在の設定は、"; s += d.toLocaleString(); s += " です。";
   return(s);                   // 新しく設定された値を返します。
}

必要条件

バージョン 1

参 照

Date Object メソッド | getMinutes メソッド | getUTCMinutes メソッド | setUTCMinutes メソッド

対象: Date オブジェクト


setMonth メソッド

Date オブジェクトに格納されている日付の月の部分をローカル時間で設定します。

dateObj.setMonth(numMonth[, dateVal])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numMonth
必ず指定します。設定する月を表す数値を指定します。
dateVal
省略可能です。設定する日を表す数値を指定します。省略した場合は、getDate メソッドにより返される値が使用されます。

解説

月の設定を世界協定時刻 (UTC) で行うには、setUTCMonth メソッドを使用してください。

引数 numMonth に 11 を超える値 (1 月は 0) または負の値を指定すると、値に応じて格納されている年の値が変更されます。たとえば、日付が "Jan 5, 1996" と格納されている場合に setMonth(14) メソッドを使用すると、日付は "Mar 5, 1997" に変更されます。

使用例

次のコードは、setMonth メソッドの使用例です。

function SetMonthDemo(newmonth){
   var d, s;               // 変数を宣言します。
   d = new Date();         // Date オブジェクトを作成します。
   d.setMonth(newmonth);   // 月を設定します。
   s = "現在の設定は、";
   s += d.toLocaleString();
   return(s);              // 新しく設定された値を返します。
}

必要条件

バージョン 1

参 照

Date Object メソッド | getMonth メソッド | getUTCMonth メソッド | setUTCMonth メソッド

対象: Date オブジェクト


setSeconds メソッド

Date オブジェクトに格納されている時刻の秒の部分をローカル時間で設定します。

dateObj.setSeconds(numSeconds[, numMilli])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numSeconds
必ず指定します。設定する秒を表す数値を指定します。
numMilli
省略可能です。設定するミリ秒を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numMilli を指定しなかった場合、月の部分を返す getMilliseconds メソッドにより返される値が設定されます。

世界協定時刻 (UTC) を使って時刻の秒の部分を設定するには、setUTCSeconds メソッドを指定してください。

引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、日付が "Jan 5, 1996 00:00:00" と格納されている場合に setSeconds(150) メソッドを使用すると、日付は "Jan 5, 1996 00:02:30" に変更されます。

使用例

次のコードは、setSeconds メソッドの使用例です。

function SetSecondsDemo(nsec, nmsec){
   var d, s;                   // 変数を宣言します。
   var sep = ":";
   d = new Date();             // Date オブジェクトを作成します。
   d.setSeconds(nsec, nmsec);  // 秒およびミリ秒を設定します。
   s = "現在の設定は、";
   s += d.toLocaleString() + sep + d.getMilliseconds();
   return(s);                  // 新しく設定された値を返します。
}

必要条件

バージョン 1

参 照

Date Object メソッド | getSeconds メソッド | getUTCSeconds メソッド | setUTCSeconds メソッド

対象: Date オブジェクト


setTime メソッド

Date オブジェクトに格納する日付および時刻を直接設定します。.

dateObj.setTime(milliseconds)

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
milliseconds
必ず指定します。グリニッジ標準時の 1970 年 1 月 1 日 0 時 0 分 0 秒からの経過したミリ秒数単位の数値を指定します。

解説

引数 milliseconds に負の値を指定すると、1970 年以前の日付となります。有効な日付の範囲は、1970 年の前後の約 285,616 年です。

setTime メソッドを使用して日付と時刻を設定する場合は、指定する値はタイムゾーンに依存しません。

使用例

次のコードは、setTime メソッドの使用例です。

function SetTimeTest(newtime){
   var d, s;                  // 変数を宣言します。
   d = new Date();            // Date オブジェクトを作成します。
   d.setTime(newtime);        // 時刻を設定します。
   s = "現在の設定は、";
   s += d.toUTCString();
   return(s);                 // 新しく設定された値を返します。
}

必要条件

バージョン 1

参 照

Date Object メソッド | getTime メソッド

対象: Date オブジェクト


setUTCDate メソッド

Date オブジェクトに格納されている日付の日の部分を世界協定時刻 (UTC) で設定します。

dateObj.setUTCDate(numDate)

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numDate
必ず指定します。設定する日を表す数値を指定します。

解説

日の設定をローカル時間で行うには、setDate メソッドを使用してください。

Date オブジェクトに格納されている月の日数より大きな値や負の値を引数 numDate に指定すると、引数 numDate に指定した値から格納されている月の日数を引いた値が日の値に設定されます。たとえば、1996 年 1 月 5 日の日付が格納されていて setUTCDate(32) という呼び出しを行うと、日付は 1996 年 2 月 1 日になります。負の値を指定した場合も、同様に処理されます。

使用例

次のコードは、setUTCDate メソッドの使用例です。

function SetUTCDateDemo(newdate){
   var d, s;                   // 変数を宣言します。
   d = new Date();             // Date オブジェクトを作成します。
   d.setUTCDate(newdate);      // 世界協定時刻を設定します。
   s = "現在の設定は、";
   s += d.toUTCString();
   return(s);                  // 新しく設定された値を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getDate メソッド | getUTCDate メソッド | setDate メソッド

対象: Date オブジェクト


setUTCFullYear メソッド

Date オブジェクトに格納されている日付の年の部分を世界協定時刻 (UTC) で設定します。.

dateObj.setUTCFullYear(numYear[, numMonth[, numDate]])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numYear
必ず指定します。設定する年を表す数値を指定します。
numMonth
省略可能です。設定する月を表す数値を指定します。引数 numDate を指定する場合、この引数を指定する必要があります。
numDate
省略可能です。設定する日を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numMonth を指定しなかった場合、月の部分を返す getUTCMonth メソッドにより返される値が設定されます。

引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されているほかの値が変更されます。

年の設定をローカル時間で行うには、setFullYear メソッドを使用してください。

Date オブジェクトでサポートされている年の範囲は、1970 年の前後の約 285,616 年です。

使用例

次のコードは、setUTCFullYear メソッドの使用例です。

function SetUTCFullYearDemo(newyear){
   var d, s;                   // 変数を宣言します。
   d = new Date();             // Date オブジェクトを作成します。
   d.setUTCFullYear(newyear);  // 世界協定時刻で 4 桁の年を設定します。
   s = "現在の設定は、";
   s += d.toUTCString();
   return(s);                  // 新しく設定された値を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getFullYear メソッド | getUTCFullYear メソッド | setFullYear メソッド

対象: Date オブジェクト


setUTCHours メソッド

Date オブジェクトに格納されている時刻の時の部分を世界協定時刻 (UTC) で設定します。

dateObj.setUTCHours(numHours[, numMin[, numSec[, numMilli]]])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numHours
必ず指定します。設定する時を表す数値を指定します。
numMin
省略可能です。設定する分を表す数値を指定します。引数 numSec または numMilli を指定する場合、この引数を指定する必要があります。
numSec
省略可能です。設定する秒を表す数値を指定します。引数 numMilli を指定する場合、この引数を指定する必要があります。
numMilli
省略可能です。設定するミリ秒を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numMin を指定しなかった場合、getUTCMinutes メソッドにより返される値が設定されます。

時の設定をローカル時間deflocaltimeで行うには、setHours メソッドを使用してください。

引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、日付が "Jan 5, 1996 00:00:00.00" と格納されている場合に setUTCHours(30) メソッドを使用すると、日付は "Jan 6, 1996 06:00:00.00" に変更されます。

使用例

次のコードは、setUTCHours メソッドの使用例です。

function SetUTCHoursDemo(nhr, nmin, nsec){
   var d, s;                        // 変数を宣言します。
   d = new Date();                  // Date オブジェクトを作成します。
   d.setUTCHours(nhr, nmin, nsec);  // 世界協定時刻で時間、分、および秒を設定します。
   s = "現在の設定は、"; s += d.toUTCString(); s += " です。"
   return(s);                       // 新しく設定された値を返します。}
}

必要条件

バージョン 3

参 照

Date Object メソッド | getHours メソッド | getUTCHours メソッド | setHours メソッド

対象: Date オブジェクト


setUTCMilliseconds メソッド

Date オブジェクトに格納されている時刻のミリ秒の部分を世界協定時刻 (UTC) で設定します。

dateObj.setUTCMilliseconds(numMilli)

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numMilli
必ず指定します。設定するミリ秒を表す数値を指定します。

解説

ミリ秒の設定をローカル時間で行うには、setMilliseconds メソッドを使用してください。

引数 numMilli に 999 を超える値か負の値を指定すると、値に応じて格納されている秒 (場合によっては分、時) の値が変更されます。

使用例

次のコードは、setUTCMilliseconds メソッドの使用例です。

function SetUTCMSecDemo(nmsec){
   var d, s;                           // 変数を宣言します。
   var sep = ":";                      // 区切り文字を初期化します。
   d = new Date();                     // Date オブジェクトを作成します。
   d.setUTCMilliseconds(nmsec);        // 世界協定時刻でミリ秒を設定します。
   s = "現在の設定は、";
   s += d.toUTCString() + sep + d.getUTCMilliseconds();
   return(s);                          // 新しく設定された値を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getMilliseconds メソッド | getUTCMilliseconds メソッド | setMilliseconds メソッド

対象: Date オブジェクト


setUTCMinutes メソッド

Date オブジェクトに格納されている時刻の分の部分を世界協定時刻 (UTC) で設定します。

dateObj.setUTCMinutes(numMinutes[, numSeconds[, numMilli]])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numMinutes
必ず指定します。設定する分を表す数値を指定します。
numSeconds
省略可能です。設定する秒を表す数値を指定します。引数 numMilli を指定する場合、この引数を指定する必要があります。
numMilli
省略可能です。設定するミリ秒を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numSeconds を指定しなかった場合、月の部分を返す getUTCSeconds メソッドにより返される値が設定されます。

分の設定をローカル時間で行うには、setMinutes メソッドを使用してください。

引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、日付が "Jan 5, 1996 00:00:00.00" と格納されている場合に、setUTCMinutes(70) メソッドを使用すると、日付は "Jan 5, 1996 01:10:00.00" に変更されます。

使用例

次のコードは、setUTCMinutes メソッドの使用例です。

function SetUTCMinutesDemo(nmin, nsec){
   var d, s;                    // 変数を宣言します。
   d = new Date();              // Date オブジェクトを作成します。
   d.setUTCMinutes(nmin,nsec);  // 世界協定時刻で分を設定します。
   s = "現在の設定は、" + d.toUTCString() "です。"
   return(s);                   // 新しく設定された値を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getMinutes メソッド | getUTCMinutes メソッド | setMinutes メソッド

対象: Date オブジェクト


setUTCMonth メソッド

Date オブジェクトに格納されている日付の月の部分を世界協定時間 (UTC) で設定します。

dateObj.setUTCMonth(numMonth[, dateVal])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numMonth
必ず指定します。設定する月を表す数値を指定します。
dateVal
省略可能です。設定する日を表す数値を指定します。省略した場合は、getUTCDate メソッドにより返される値が使用されます。

解説

月の設定をローカル時間で行うには、setMonth メソッドを使用してください。

引数 numMonth に 11 を超える値 (1 月は 0) や負の値を指定すると、値に応じて格納されている年の値が変更されます。たとえば、日付が "Jan 5, 1996 00:00:00.00" と格納されている場合に setUTCMonth(14) メソッドを使用すると、日付は "Mar 5, 1997 00:00:00.00" に変更されます。

使用例

次のコードは、setUTCMonth メソッドの使用例です。

function SetUTCMonthDemo(newmonth){
   var d, s;                       // 変数を宣言します。
   d = new Date();                 // Date オブジェクトを作成します。
   d.setUTCMonth(newmonth);        // 世界協定時刻で月を設定します。
   s = "現在の設定は、";
   s += d.toUTCString(); "です。"
   return(s);                      // 新しく設定された値を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getMonth メソッド | getUTCMonth メソッド | setMonth メソッド

対象: Date オブジェクト


setUTCSeconds メソッド

Date オブジェクトに格納されている時刻の秒の部分を世界協定時刻 (UTC) で設定します。

dateObj.setUTCSeconds(numSeconds[, numMilli])

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numSeconds
必ず指定します。設定する秒を表す数値を指定します。
numMilli
省略可能です。設定するミリ秒を表す数値を指定します。

解説

省略可能な引数を指定しないで、set で始まる名前の各メソッドを使用した場合、省略した設定の部分には対応する get で始まる名前のメソッドで返される値が設定されます。たとえば、省略可能な引数 numMilli を指定しなかった場合、月の部分を返す getUTCMilliseconds メソッドにより返される値が設定されます。

秒の設定をローカル時間で行うには、setSeconds メソッドを使用してください。

引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、日付が "Jan 5, 1996 00:00:00.00" と格納される場合に setSeconds(150) メソッドを使用すると、日付は "Jan 5, 1996 00:02:30.00" に変更されます。

使用例

次のコードは、setSeconds メソッドの使用例です。

function SetUTCSecondsDemo(nsec, nmsec){
   var d, s;                                // 変数を宣言します。
   d = new Date();                          // Date オブジェクトを作成します。
   d.setUTCSeconds(nsec, nmsec);            // 世界協定時刻で秒およびミリ秒を設定します。
   s = "現在のミリ秒 (UTC) の設定は、";
   s += d.getUTCMilliseconds(); "です。"    // 新しい設定を取得します。
   return(s);                               // 新しく設定された値を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | getSeconds メソッド | getUTCSeconds メソッド | setSeconds メソッド

対象: Date オブジェクト


setYear メソッド

Date オブジェクトの日付の年の部分を設定します。

dateObj.setYear(numYear)

引数

dateObj
必ず指定します。任意の Date オブジェクトを指定します。
numYear
必ず指定します。設定する年から 1900 を引いた数値を指定します。

解説

JScript では、setYear メソッドが setFullYear メソッドに置き換えられました。setYear メソッドは、以前のバージョンとの互換性のためにのみ提供されています。

Date オブジェクトに対して 1997 年を設定するには、setYear(97) メソッドを実行します。また、2010 年を設定するには、setYear(2010) メソッドを実行します。0 ～ 99 の範囲で年を設定するには、setFullYear メソッドを使用します。

メモ JScript Version 1.0 では、setYear メソッドは年を表す値にかかわらず、numYear 引数に指定された値に 1900 を追加した結果を値として使用しますたとえば numYear 引数に 1899 を設定した場合は -1、2000 を設定した場合は 100 になります。

必要条件

バージョン 1

参 照

Date Object メソッド | getFullYear メソッド | getUTCFullYear メソッド | getYear メソッド | setFullYear メソッド | setUTCFullYear メソッド

対象: Date オブジェクト


shift メソッド

配列にある最初の要素を取り出し、それを返します。

arrayObj.shift( )

arrayObj 参照は必ず指定し、Array オブジェクトを指定します。

解説

shift メソッドは、配列にある最初の要素を取り出し、それを返します。

必要条件

バージョン 5.5

参 照

unshift メソッド

対象: Array オブジェクト


sin メソッド

指定された数値のサインの値を返します。

Math.sin(number)

引数 number には、サインを求める値を数式で指定します。

解説

戻り値は、引数 number のサインの値です。

必要条件

バージョン 1

参 照

acos メソッド1 | asin メソッド | atan メソッド | cos メソッド | Math Object メソッド | tan メソッド

対象: Math オブジェクト


slice メソッド (Array オブジェクト)

配列の一部を返します。

arrayObj.slice(start, [end])

引数

arrayObj
必ず指定します。Array オブジェクトの名前を指定します。
start
必ず指定します。arrayObj で指定したオブジェクト内での取り出す部分の先頭を、インデックス番号で指定します。
end
省略可能です。arrayObj で指定したオブジェクト内での取り出す部分の終端を、インデックス番号で指定します。

解説

slice メソッドは、arrayObj に指定したオブジェクト内の指定した部分の格納された Array オブジェクトを返します。

slice メソッドは、引数 end で指定した要素の 1 つ前の要素までをコピーします。引数 start に負の値を指定した場合、length + start として処理されます。length は配列の長さです。引数 end に負の値を指定した場合、length + end として処理されます。length は配列の長さです。引数 end を省略した場合は、arrayObj オブジェクトの最後までが抽出されます。end が start の前で発生した場合、要素は新しい配列にコピーされません。

使用例

次のコードは、myArray の最後の要素を除くすべての要素を newArray オブジェクトにコピーする例です。

newArray = myArray.slice(0, -1)

必要条件

バージョン 3

参 照

slice メソッド (String オブジェクト) | String オブジェクト

対象: Array オブジェクト


slice メソッド (String オブジェクト)

文字列の一部分を返します。

stringObj.slice(start, [end])

引数

stringObj
必ず指定します。String オブジェクトの名前またはリテラルを指定します。
start
必ず指定します。stringObj に指定した文字列内での指定する部分の開始位置を、インデックス番号で指定します。
end
省略可能です。stringObj で指定した文字列内での指定する部分の終了位置を、インデックス番号で指定します。

解説

slice メソッドは、stringObj で指定した文字列内の指定した部分が格納された String オブジェクトを返します。

slice メソッドは、引数 end で指定した要素の 1 つ前の要素までをコピーします。引数 start に負の値を指定した場合、length + start として処理されます。length は文字列の長さです。引数 end に負の値を指定した場合、length + end として処理されます。length は文字列の長さです。省略した場合は、stringObj で指定した文字列の最後までが取り出されます。end が start の前で発生した場合、文字は新しい文字列にコピーされません。

使用例

次のコードは、同じ結果を返す 2 つの slice メソッドの例です。2 つ目の例の -1 は、str1 内の最後の文字を終了位置に指定しています。

str1.slice(0)
str2.slice(0,-1)

必要条件

バージョン 3

参 照

Array オブジェクト | slice メソッド (Array オブジェクト) | String Object メソッド

対象: String オブジェクト


small メソッド

String オブジェクトに格納されている文字列の前後に HTML の <SMALL> タグを挿入します。

strVariable.small( )
"String Literal".small( )

解説

次のコードは、Small メソッドの使用例です。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.small( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<SMALL>これは文字列オブジェクトです</SMALL>

このメソッドの実行時には、<SMALL> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

big メソッド | String Object メソッド | String Object プロパティ

対象: String オブジェクト


sort メソッド

要素の順序を並べ替えた Array オブジェクトを返します。

arrayobj.sort(sortFunction)

引数

arrayObj
必ず指定します。Array オブジェクトの名前を指定します。
sortFunction
省略可能です。要素の順序を決定するために使用する関数の名前を指定します。この引数を省略すると、要素は値 (文字列の場合は文字コード) を基に昇順に並べ替えられます。

解説

sort メソッドは、指定された Array オブジェクト内の要素を並べ替えます。このメソッドを実行しても、新しい Array オブジェクトは作成されません。

引数 sortFunction に指定する場合は、次の戻り値を返すような関数を指定する必要があります。

  • 1 つ目の引数が 2 つ目の引数よりも小さい場合は、負の値を返す関数。
  • 2 つの引数が等しい場合は 0 を返す関数。
  • 1 つ目の引数が 2 つ目の引数よりも大きい場合は、正の値を返す関数。

使用例

次のコードは、sort メソッドの使用例です。

function SortDemo(){
   var a, l;                       // 変数を宣言します。
   a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
   l = a.sort();                   // 配列の要素を並べ替えます。
   return(l);                      // 要素が並べ替えられた配列を返します。
}

必要条件

バージョン 2

参 照

Array Object メソッド

対象: Array オブジェクト


splice メソッド

配列から要素を取り出し、必要に応じて新しい要素をその位置に挿入し、取り出した要素を返します。

arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])

引数

arrayObj
必ず指定します。Array オブジェクトを指定します。
start
必ず指定します。要素を取り出す配列の開始位置を 0 から始まる番号で指定します。
deleteCount
必ず指定します。取り出す要素の数を指定します。
item1, item2,. . .,itemN
省略可能です。取り出した要素の後に挿入する要素を指定します。

解説

splice メソッドは、指定された数の要素を start の位置から取り出し、新しい要素を挿入して arrayObj を修正します。取り出した要素は新しい array オブジェクトとして返します。

必要条件

バージョン 5.5

参 照

slice メソッド (Array)

対象: Array オブジェクト


split メソッド

文字列が複数の文字列に分割されたときの文字列の配列を返します。

stringObj.split([separator[, limit]])

引数

stringObj
必ず指定します。テキスト削除の対象となる String オブジェクトの名前またはリテラルを指定します。このオブジェクトは、split メソッドにより変更されません。
separator
省略可能です。文字列を区切る 1 つまたは複数の文字を表す、Regular Expression オブジェクトの文字列またはインスタンスを指定します。省略した場合、文字列全体を含む単一要素の配列が返されます。
limit
省略可能です。配列に返される要素の数を制限する値を指定します。

解説

split メソッドの結果は、stingObj が separator の位置で分割されてできた文字列の配列です。separator は、配列要素の一部としては返されません。.

使用例

このコードは、split メソッドの使用例です。

function SplitDemo(){
   var s, ss;
   var s = "The rain in Spain falls mainly in the plain.";
   // スペースの位置で分割します。
   ss = s.split(" ");
   return(ss);
}

必要条件

バージョン 3

参 照

concat メソッド | RegExp オブジェクト | Regular Expression オブジェクト | 正規表現の構文 | String Object メソッド

対象: String オブジェクト


sqrt メソッド

指定された数値の平方根を返します。

Math.sqrt(number)

必須の引数 number には、数式を指定します。

解説

引数 number に負の値を指定すると、戻り値は NaN になります。

必要条件

バージョン 1

参 照

Math Object メソッド | SQRT1_2 プロパティ | SQRT2 プロパティ

Applies To: Math オブジェクト


strike メソッド

String オブジェクトに格納されている文字列の前後に HTML の <STRIKE> タグを挿入します。

strVariable.strike( )
"String Literal".strike( )

解説

strike メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.strike( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<STRIKE>これは文字列オブジェクトです</STRIKE>

このメソッドの実行時には、<STRIKE> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ

対象: String オブジェクト


sub メソッド

String オブジェクトに格納されている文字列の前後に HTML の <SUB> タグを挿入します。

strVariable.sub( )
"String Literal".sub( )

解説

sub メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.sub( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<SUB>これは文字列オブジェクトです</SUB>

このメソッドの実行時には、<SUB> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ | sup メソッド

対象: String オブジェクト


substr メソッド

文字列内の、指定位置からの指定された長さを持つ部分を返します。

stringvar.substr(start [, length ])

引数

stringvar
必ず指定します。一部のテキストを取り出す対象となる String オブジェクトの名前または文字列リテラルを指定します。
start
必ず指定します。取り出す部分の開始の位置を、0 から始まるインデックス番号で指定します。
length
省略可能です。取り出す部分の文字数を指定します。

解説

引数 length に 0 または負の値を指定すると、長さ 0 の文字列 ("") が返されます。この引数を省略すると、引数 stringvar で指定した文字列の最後まで取り出されます。

使用例

次のコードは、substr メソッドの使用例です。

function SubstrDemo(){
   var s, ss;                // 変数を宣言します。
   var s = "The rain in Spain falls mainly in the plain.";
   ss = s.substr(12, 5);     // 文字列を取得します。
   return(ss);               // "Spain" を返します。
}

必要条件

バージョン 3

参 照

String Object メソッド | String Object プロパティ | substring メソッド

対象: String オブジェクト


substring メソッド

String オブジェクトに格納されている文字列内の指定された位置にある文字列を返します。

strVariable.substring(start, end)
"String Literal".substring(start, end)

引数

start
取得する文字列の先頭文字の位置を 0 から始まるインデックス番号で指定します。
end
取得する文字列の終了文字の位置を 0 から始まるインデックス番号で指定します。

解説

substring メソッドの戻り値は、start から end の前の文字までを含む文字列です。

substring メソッドでは、引数 start と引数 end のうち値の小さい方が取得する文字列の先頭位置になります。たとえば strvar.substring(0, 3) メソッドと strvar.substring(3, 0) メソッドは同じ文字列を返します。

引数 start または end のいずれかが NaN または負である場合は、0 に置き換えられます。

取得した文字列の長さは、2 つの引数の差の絶対値になります。たとえば、strvar.substring(0, 3) メソッドと strvar.substring(3, 0) メソッドで返される文字列の長さは 3 になります。

使用例

次のコードは、substring メソッドの使用例です。

function SubstringDemo(){
   var ss;                         // 変数を宣言します。
   var s = "The rain in Spain falls mainly in the plain..";
   ss = s.substring(12, 17);       // 文字列を取得します。
   return(ss);                     // 文字列を返します。
}

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ | substr メソッド

対象: String オブジェクト


sup メソッド

String オブジェクトに格納されている文字列の前後に HTML の <SUP> タグを挿入します。

strVariable.sup( )
"String Literal".sup( )

解説

sup メソッドの使用例を次に示します。

var strVariable = "これは文字列オブジェクトです";
strVariable = strVariable.sup( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

<SUP>これは文字列オブジェクトです</SUP>

このメソッドの実行時には、<SUP> タグが既に元の文字列内にあるかどうかの確認は行われません。

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ | sub メソッド

対象: String オブジェクト


tan メソッド

指定された数値のタンジェントの値を返します。

Math.tan(number)

必須の引数 number には、タンジェントを求める値を数式で指定します。.

解説

戻り値は、引数 number のタンジェントの値です。

必要条件

バージョン 1

参 照

acos メソッド | asin メソッド | atan メソッド | atan2 メソッド | cos メソッド | Math Object メソッド | sin メソッド

対象: Math オブジェクト


test メソッド

文字列内でパターンに一致する部分が存在するかどうかを示すブール値を返します。

rgExp.test(str)

引数

rgExp
必ず指定します。正規表現パターンおよび適用できるフラグを含む Regular Expression オブジェクトのインスタンスです。
str
必ず指定します。検索対象となる文字列を指定します。

解説

test メソッドは、文字列内にパターンに一致する部分が存在するかどうかを調べ、存在する場合は真 (true) を、存在しない場合は偽 (false) を返します。

グローバルな RegExp オブジェクトのプロパティは、test メソッドの実行では変更されません。

使用例

次のコードは、test メソッドの使用例です。この例を使用するには、正規表現パターンおよび文字列に関数を渡します。関数は、文字列内に正規表現パターンに一致する部分が存在するかどうかを調べ、検索結果を示す文字列を返します。

function TestDemo(re, s){
   var s1;                         // 変数を宣言します。
   // 正規表現に一致する文字列があるかどうかをテストします。
   if (re.test(s))                 // 有無をテストします。
      s1 = " contains ";           // s には正規表現パターンが含まれています。
   else
      s1 = " does not contain ";   // s には正規表現パターンが含まれていません。
   return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 文字列を返します。
}

必要条件

バージョン 3

参 照

RegExp オブジェクト | Regular Expression オブジェクト | Regular Expression Object メソッド | Regular Expression Object プロパティ | 正規表現の構文

対象: Regular Expression オブジェクト


toArray メソッド

VBArray を JScript の標準配列に変換します。

safeArray.toArray( )

必須の safeArray 参照には、VBArray オブジェクトの名前を指定します。

解説

この変換では、多次元の VBArray も 1 次元の JScript 配列に変換されます。この場合、各次元は 1 つ前の次元の後ろに順次追加されます。たとえば、各次元に要素を 3 つずつ持つ次のような 3 次元 VBArray があったとすると、次のように JScript 配列に変換されます。

VBArray に (1, 2, 3), (4, 5, 6), (7, 8, 9) が含まれている場合、変換後の JScript 配列は 1, 2, 3, 4, 5, 6, 7, 8, 9 になります。

現在、JScript 配列を VBArray に変換する方法はありません。

使用例

次のコードは、3 つの部分から構成されます。最初の部分は、Visual Basic のセーフ配列を作成する VBScript のコードです。2 番目の部分は、Visual Basic のセーフ配列を JScript の配列に変換する JScript のコードです。どちらのコードも、HTML ページの <HEAD> セクションに記述します。3 番目の部分は、ほかの 2 つのコードを実行するために <BODY> セクションに記述する JScript のコードです。

<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
   Dim i, j, k
   Dim a(2, 2)
   k = 1
   For i = 0 To 2
      For j = 0 To 2
         a(j, i) = k
         document.writeln(k)
         k = k + 1
      Next
      document.writeln("<BR>")
   Next
   CreateVBArray = a
End Function
-->
</SCRIPT>

<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vbarray)
{
   var a = new VBArray(vbarray);
   var b = a.toArray();
   var i;
   for (i = 0; i < 9; i++)
   {
      document.writeln(b[i]);
   }
}
-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JScript">
<!--
   VBArrayTest(CreateVBArray());
-->
</SCRIPT>
</BODY>

必要条件

バージョン 3

参 照

dimensions メソッド | getItem メソッド | lbound メソッド | ubound メソッド

Applies To: VBArray オブジェクト


toDateString メソッド

日付を文字列値として返します。

objDate.toDateString( )

objDate 参照は必ず指定し、Date オブジェクトを指定します。

解説

toDateString メソッドは、現在のタイムゾーンに従って、日付を便利で読みやすい書式の文字列値にして返します。

必要条件

バージョン 5.5

参 照

toTimeString メソッド | toLocaleDateString メソッド

対象: Date オブジェクト


toExponential メソッド

指数表記の数値を文字列で返します。

numObj.toExponential([fractionDigits])

引数

numObj
必ず指定します。Number オブジェクトを指定します。
fractionDigits
省略可能です。小数点以下の桁数を指定します。0 ～ 20 の範囲で指定します。

解説

toExponential メソッドは、指数表記の数値を表す文字列を返します。文字列には、整数部の下 1 桁と、小数点以下 fractionDigits 桁が含まれます。

fractionDigits を指定しない場合は、toExponential メソッドは、数値を一意に指定するのに必要な桁数だけ返します。

必要条件

バージョン 5.5

参 照

toFixed メソッド | toPrecision メソッド

対象: Number オブジェクト


toFixed メソッド

固定小数点表記の数値を文字列で返します。

numObj.toFixed([fractionDigits])

引数

numObj
必ず指定します。Number オブジェクトを指定します。
fractionDigits
省略可能です。小数点以下の桁数を指定します。0 ～ 20 の範囲で指定します。

解説

toFixed メソッドは、固定小数点表記の数値を表す文字列を返します。文字列には、整数部の下 1 桁と、小数点以下 fractionDigits 桁を含めます。

fractionDigits を指定していない場合または undefined である場合は、toFixed メソッドは値を 0 と見なします。

必要条件

バージョン 5.5

参 照

toExponential メソッド | toPrecision メソッド

対象: Number オブジェクト


toGMTString メソッド

グリニッジ標準時を使用して日付データを文字列に変換します。

dateObj.toGMTString()

dateobj には、Date オブジェクトの名前を指定します。

解説

JScript では、toGMTString メソッドが toUTCString メソッドに置き換えられました。toGMTString メソッドは、以前のバージョンとの互換性のためにのみ提供されています。

toGMTString メソッドの戻り値は、GMT 規約を使用して表された日付の入った String オブジェクトです。戻り値の書式は、"05 Jan 1996 00:00:00 GMT" になります。

必要条件

バージョン 1

参 照

Date Object メソッド | toUTCString メソッド

対象: Date オブジェクト


toLocaleDateString メソッド

ホスト環境の現在の国別情報に対応した日付を文字列値で返します。

objDate.toLocaleDateString( )

objDate 参照は必ず指定し、Date オブジェクトを指定します。

解説

toLocaleDateString メソッドは、現在のタイムゾーンに従って、日付を読みやすい書式の文字列値にして返します。日付の書式は、ホスト環境の現在の国別情報のデフォルト書式になります。このメソッドの戻り値はコンピュータ間で一致しないため、スクリプト用には適していません。toLocalDateString メソッドは、表示をフォーマットするためだけに使用し、計算には使用しないようにしてください。

必要条件

バージョン 5.5

参 照

toDateString メソッド | toLocaleTimeString メソッド

対象: Date オブジェクト


toLocaleLowerCase メソッド

ホスト環境の現在の国別情報に従って、すべての英字を小文字に変換した文字列を返します。

stringVar.tolocaleLowerCase( )

stringVar 参照は必ず指定し、String オブジェクト、値、またはリテラルを指定します。

解説

toLocaleLowerCase メソッドは、ホスト環境の現在の国別情報に従って、文字列の文字を変換します。ほとんどの場合、toLowerCase メソッドの実行結果と同じになります。結果が異なるのは、言語規則が通常の Unicode の大文字、小文字のマッピングと競合する場合です。

必要条件

バージョン 5.5

参 照

toLocaleUpperCase メソッド | toLowerCase メソッド

対象: String オブジェクト


toLocaleString メソッド

実行されるロケールでの既定の書式を使用して日付データを文字列に変換します。

dateObj.toLocaleString()

dateobj には、Date オブジェクトの名前を指定します。

解説

戻り値は、実行されるロケールでの既定の書式で表わされる日付データの入った String オブジェクトです。

  • 西暦 1601 から 1999 年の場合、日付はユーザーのコントロール パネルの地域設定に基づいた形式になります。
  • この範囲以外の日付の場合、toString メソッドの既定の形式が使用されます。

たとえば、1 月 5 日が格納されている Date オブジェクトに対し、toLocaleString メソッドを実行します。アメリカの書式の場合、"01/05/96 00:00:00" という文字列が返されます。しかし、ヨーロッパの通常の書式の場合、月より日が前になるため "05/01/96 00:00:00" という文字列が返されます。

メモ toLocaleString はユーザーに結果を表示する目的だけで使用されます。この結果は、マシンの仕様によって異なるため、スクリプト内での処理の基準としては使用しないでください。

使用例

次のコードは、toLocaleString メソッドの使用例です。

function toLocaleStrDemo(){
   var d, s;                      // 変数を宣言します。
   d = new Date();                // Date オブジェクトを作成します。
   s = "現在の設定は、";
   s += d.toLocaleString(); s += " です。";       // 現在のロケールに変換します。
   return(s);                     // 変換された日付を返します。
}

必要条件

バージョン 1

参 照

Date Object メソッド

対象: Array オブジェクト | Date オブジェクト | Number オブジェクト | Object オブジェクト


toLocaleTimeString メソッド

ホスト環境の現在の国別情報に対応した時刻を文字列値で返します。

objDate.toLocaleTimeString( )

objDate 参照は必ず指定し、Date オブジェクトを指定します。

解説

toLocaleTimeString メソッドは、現在のタイムゾーンに従って、時刻を読みやすい書式の文字列値にして返します。時刻の書式は、ホスト環境の現在の国別情報のデフォルト書式になります。このメソッドの戻り値はコンピュータ間で一致しないため、スクリプト用には適していません。toLocalTimeString メソッドは、表示をフォーマットするためだけに使用し、計算には使用しないようにしてください。

必要条件

バージョン 5.5

参 照

ToTimeString メソッド | toLocaleDateString メソッド

対象: Date オブジェクト


toLocaleUpperCase メソッド

ホスト環境の現在の国別情報に従って、すべての英字を大文字に変換した文字列を返します。

stringVar.tolocaleUpperCase( )

stringVar 参照は必ず指定し、String オブジェクト、値、またはリテラルを指定します。

解説

toLocaleUpperCase メソッドは、ホスト環境の現在の国別情報に従って、文字列の文字を変換します。ほとんどの場合、toUpperCase メソッドの実行結果と同じになります。結果が異なるのは、言語規則が通常の Unicode の大文字、小文字のマッピングと競合する場合です。

必要条件

バージョン 5.5

参 照

toLocaleLowerCase メソッド | toUpperCase メソッド

対象: String オブジェクト


toLowerCase メソッド

すべての英字を小文字に変換した文字列を返します。

strVariable.toLowerCase( )
"String Literal".toLowerCase( )

解説

toLowerCase メソッドは、英字のみ小文字に変換します。

toLowerCase メソッドの使用例を次に示します。

var strVariable = " This is a STRING object ";
strVariable = strVariable.toLowerCase( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

this is a string object

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ | toUpperCase メソッド

対象: String オブジェクト


toPrecision メソッド

指定された桁数の指数表記または固定小数点表記の数値を文字列で返します。

numObj.toPrecision ([precision])

引数

numObj
必ず指定します。Number オブジェクトを指定します。
precision
省略可能です。有効桁数を指定します。1 ～ 21 の範囲で指定します。

解説

指数表記の数値では、(precision - 1) 桁を小数点以下の数値として返します。固定小数点の数値では、precision 有効桁数分を返します。

precision を指定しない場合または undefined である場合は、toString メソッドが代わりに呼び出されます。

必要条件

バージョン 5.5

参 照

toFixed メソッド | toExponential メソッド

対象: Number オブジェクト


toString メソッド

オブジェクトの値を表す文字列を返します。

objectname.toString([radix])

引数

objectname
必ず指定します。それを表す文字列を取得するオブジェクトの名前を指定します。
radix
省略可能です。数値を文字列に変換するときの方法を指定します。この値は、数値にのみ使用されます。

解説

toString メソッドは、JScript の組み込みオブジェクトのメンバです。このメソッドの動作は、オブジェクトの種類に応じて異なります。

オブジェクト | 動作
Array | 文字列に変換された Array オブジェクトの要素を返します。文字列は、カンマで接続されます。
Boolean | ブール値が真 (true) になっている場合は、"true" という文字列を返します。それ以外の場合は、"false" を返します。
Date | その日付を表すテキストを返します。
Error | エラーメッセージ関連の内容を含む文字列を返します。
Function 次の形の文字列を返します。functionname は、指定したtoString メソッドの関数の名前です。
function functionname() { [ネイティブ コード] }
Number | その数値を表すテキストを返します。
String | String オブジェクトの値を返します。
Default | "[object objectname]" という文字列を返します。objectname は、オブジェクト型の名前です。

使用例

次のコードは、引数 radix を使った toString メソッドの使用例です。次の関数の戻り値は、基数変換テーブルです。

function CreateRadixTable (){
   var s, s1, s2, s3, x;                    // 変数を宣言します。
   s = "Hex    Dec   Bin \n";               // テーブルの見出しを作成します。
   for (x = 0; x < 16; x++)                 // 表示された値により
   {                                        // テーブルのサイズを
      switch(x)                             // 設定します。
      {                                     // カラムの間隔を設定します。
         case 0 :
            s1 = "      ";
            s2 = "    ";
            s3 = "   ";
            break;
         case 1 :
            s1 = "      ";
            s2 = "    ";
            s3 = "   ";
            break;
         case 2 :
            s3 = "  ";
            break;
         case 3 :
            s3 = "  ";
            break;
         case 4 :
            s3 = " ";
            break;
         case 5 :
            s3 = " ";
            break;
         case 6 :
            s3 = " ";
            break;
         case 7 :
            s3 = " ";
            break;
         case 8 :
            s3 = "" ;
            break;
         case 9 :
            s3 = "";
            break;
         default:
            s1 = "     ";
            s2 = "";
            s3 = "    ";
      }                                  // 16 進、10 進、および 2 進に変換します。
      s += " " + x.toString(16) + s1 + x.toString(10)
      s +=  s2 + s3 + x.toString(2)+ "\n";

   }
return(s);                               // 基数テーブル全体を返します。
}

必要条件

バージョン 2

参 照

function ステートメント

対象: Array オブジェクト | Boolean オブジェクト | Date オブジェクト | Error オブジェクト | Function オブジェクト | Number オブジェクト | Object オブジェクト | String オブジェクト


toTimeString メソッド

時刻を文字列値として返します。

objDate.toTimeString( )

objDate 参照は必ず指定し、Date オブジェクトを指定します。

解説

toTimeString メソッドは、現在のタイムゾーンに従って、時刻を便利で読みやすい書式の文字列値にして返します。

必要条件

バージョン 5.5

参 照

ToDateString メソッド | toLocaleTimeString メソッド

対象: Date オブジェクト


toUpperCase メソッド

すべての英字を大文字に変換した文字列を返します。

strVariable.toUpperCase( )
"String Literal".toUpperCase( )

解説

toUpperCase メソッドは、英字のみ大文字に変換します。

使用例

toUpperCase メソッドの使用例を次に示します。

var strVariable = "This is a STRING object";
strVariable = strVariable.toUpperCase( );

2 つ目のステートメントの実行後、変数 strVariable は次の値になります。

THIS IS A STRING OBJECT

必要条件

バージョン 1

参 照

String Object メソッド | String Object プロパティ | toLowerCase メソッド

対象: String オブジェクト


toUTCString メソッド

日付を世界協定時刻 (UTC) の文字列に変換します。

dateObj.toUTCString()

必須の dateobj 参照には、Date オブジェクトの名前を指定します。

解説

toUTCString メソッドは、読みやすい世界協定時刻 (UTC) の形式で表された日付を含む String オブジェクトを返します。

使用例

次のコードは、toUTCString メソッドの使用例です。

function toUTCStrDemo(){
   var d, s;                   // 変数を宣言します。
   d = new Date();             // Date オブジェクトを作成します。
   s = "現在の設定は、";
   s += d.toUTCString();  s += " です。";       // UTC 文字列に変換します。
   return(s);                  // UTC 文字列を返します。
}

必要条件

バージョン 3

参 照

Date Object メソッド | toGMTString メソッド

対象: Date オブジェクト


ubound メソッド

VBArray の指定された次元での最も大きいインデックス値を返します。

safeArray.ubound(dimension)

引数

safeArray
必ず指定します。VBArray オブジェクトの名前を指定します。
dimension
省略可能です。VBArray の、最も大きいインデックスを取得する次元を指定します。省略した場合は、1 が指定されたものとします。

解説

VBArray が空の場合は、undefined が返されます。引数 dimension に VBArray の次元数より大きい値を指定したり、負の値を指定したりすると、"インデックスが有効範囲にありません。" というエラーが発生します。

使用例

次のコードは、3 つの部分から構成されます。最初の部分は、Visual Basic のセーフ配列を作成する VBScript のコードです。2 番目の部分は、このセーフ配列の次元数と各次元の上限値を取得する JScript のコードです。どちらのコードも、HTML ページの <HEAD> セクションに記述します。3 番目の部分は、ほかの 2 つのコードを実行するために <BODY> セクションに記述する JScript のコードです。

<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
   Dim i, j, k
   Dim a(2, 2)
   k = 1
   For i = 0 To 2
      For j = 0 To 2
         a(j, i) = k
         k = k + 1
      Next
   Next
   CreateVBArray = a
End Function
-->
</SCRIPT>

<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vba)
{
   var i, s;
   var a = new VBArray(vba);
   for (i = 1; i <= a.dimensions(); i++)
   {
      s = "次元 ";
      s += i + " の上限値は ";
      s += a.ubound(i)+ " です。<BR>";
      return(s);
   }
}
-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT language="jscript">
   document.write(VBArrayTest(CreateVBArray()));
</SCRIPT>
</BODY>

必要条件

バージョン 3

参 照

dimensions メソッド | getItem メソッド | lbound メソッド | toArray メソッド

対象: VBArray オブジェクト


unescape メソッド

escape メソッドを使ってエスケープコード付きの文字に変換した String オブジェクトの文字列を元の形に変換します。

unescape(charString)

必須の引数 charStrin には、変換する String オブジェクトまたはリテラルを指定します。

解説

unescape メソッドは、引数 charstring で指定された文字列内の %xx 形式に変換されたすべての文字を元の形に変換し、文字列の値を返します。16 進数の数字 xx は、ASCII 文字セットの対応する文字に置き換えられます。

%uxxxx 形式 (Unicode 文字) に変換された文字は、Unicode 文字に置き換えられます。その際、xxxx は 16 進数に変換されます。

メモ URI (Uniform Resource Identifier) の変換には、unescape メソッドは使用しないでください。代わりに、decodeURI メソッドまたは decodeURIComponent メソッドの使用をお勧めします。

必要条件

バージョン 1

参 照

DecodeURI メソッド | decodeURIComponent メソッド | escape メソッド | String オブジェクト

対象: Global オブジェクト


unshift メソッド

指定された要素を配列の先頭から挿入し、その配列を返します。

arrayObj.unshift([item1[, item2 [, . . . [, itemN]]]])

引数

arrayObj
必ず指定します。Array オブジェクトを指定します。
item1, item2,. . .,itemN
省略可能です。Array の先頭から挿入する要素を指定します。

解説

unshift メソッドでは、引数の並びと同じ順序で要素を配列の先頭から挿入します。

必要条件

バージョン 5.5

参 照

shift メソッド

対象: Array オブジェクト


UTC メソッド

世界協定時刻 (UTC) (つまり GMT) の 1970 年 1 月 1 日 0 時 0 分 0 秒と、指定した日付との間をミリ秒単位で返します。

Date.UTC(year, month, day[, hours[, minutes[, seconds[,ms]]]])

引数

year
必ず指定します。日付の年数を必ず 4 桁で指定します。引数 year に 0 ～ 99 の値が指定された場合、1900 + year の値が指定されたと見なされます。
month
必ず指定します。月を表す 0 ～ 11 (1 ～ 12 月に相当) の範囲内の整数を指定します。
date
必ず指定します。日を表す 1 ～ 31 の範囲内の整数を指定します。
hours
省略可能です。引数 minutes を指定する場合は、指定する必要があります。時を表す 0 ～ 23 (午前 0 時 ～ 午後 11 時に対応) の範囲内の整数を指定します。
minutes
省略可能です。引数 seconds を指定する場合は、指定する必要があります。分を表す 0 ～ 59 の範囲内の整数を指定します。
seconds
省略可能です。引数 milliseconds を指定する場合は、指定する必要があります。秒を表す 0 ～ 59 の範囲内の整数を指定します。
ms
省略可能です。ミリ秒を表す 0 ～ 999 の範囲内の整数を指定します。

解説

UTC メソッドは、世界協定時刻での 1970 年 1 月 1 日 0 時 0 分 0 秒と指定した日付との間をミリ秒単位で返します。この戻り値は、setTime メソッドおよび Date オブジェクトのコンストラクタで使用できます。引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、150 秒という指定を行うと、2 分 30 秒として処理されます。

UTC メソッドと日付を受け取る Date オブジェクトのコンストラクタとの違いは、渡した日付が UTC メソッドでは世界協定時刻 (UTC) として扱われ、Date オブジェクトのコンストラクタではローカル時間として扱われるという点です。

UTC メソッドは、静的なメソッドです。したがってメソッドを使用するために、あらかじめ Date オブジェクトを作成しておく必要はありません。

メモ 引数 year に 0 ～ 99 の整数を指定すると、1900 + year が年として使用されます。

使用例

次のコードは、UTC メソッドの使用例です。

function DaysBetweenDateAndNow(yr, mo, dy){
   var d, r, t1, t2, t3;            // 変数を宣言します。
   var MinMilli = 1000 * 60         // 変数を初期化します。
   var HrMilli = MinMilli * 60
   var DyMilli = HrMilli * 24
   t1 = Date.UTC(yr, mo - 1, dy)    // 1970 年 1 月 1 日からの経過時間をミリ秒単位で返します。
   d = new Date();                  // Date オブジェクトを作成します。
   t2 = d.getTime();                // 現在の時刻を取得します。
   if (t2 >= t1)
      t3 = t2 - t1;
   else
      t3 = t1 - t2;
   r = Math.round(t3 / DyMilli);
   return(s);                       // 差を返します。
}

必要条件

バージョン 1

参 照

Date Object メソッド | setTime メソッド

対象: Date オブジェクト


valueOf メソッド

指定されたオブジェクトのプリミティブ値を返します。

object.valueOf( )

必須の object 参照には、任意の組み込み JScript オブジェクトを指定します。

解説

valueOf メソッドの動作は、組み込み JScriptオブジェクトの種類によって異なります。

オブジェクト | 動作
Array | 配列の要素は、カンマによって連結される文字列に変換されます。Array.toString メソッドや Array.join メソッドと同じように動作します。
Boolean | オブジェクトに格納されているブール値を返します。
Date | 世界協定時刻 (UTC) の 1970 年 1 月 1 日 0 時 0 分 0 秒からの経過時間を表すミリ秒単位の数値を返します。
Function | 関数自体を返します。
Number | オブジェクトに格納されている数値を返します。
Object | オブジェクト自体を返します。これが既定です。
String | オブジェクトに格納されている文字列を返します。

Math オブジェクトおよび Error オブジェクトには、valueOf メソッドがありません。

必要条件

バージョン 2

参 照

toString メソッド

対象: Array オブジェクト | Boolean オブジェクト | Date オブジェクト | Function オブジェクト | Number オブジェクト | Object オブジェクト | String オブジェクト


JScript オブジェクト

次の表に Jscript オブジェクトを示します。

内容 | 言語要素
オートメーション オブジェクトへの参照を有効にします。 | ActiveXObject オブジェクト
任意のデータ型の配列を作成する機能を提供します。 | Array オブジェクト
新しいブール値を作成します。 | Boolean オブジェクト
日付および時刻を格納しておくオブジェクトです。必要に応じて、データの必要な部分を取り出すことができます。 | Date オブジェクト
キーと項目を対で格納するオブジェクトです。 | Dictionary オブジェクト
コレクション内の項目を列挙する方法を提供します。 | Enumerator オブジェクト
JScript のコードを実行しているときに発生するエラーに関する情報を含むオブジェクトです。 | Error オブジェクト
ファイル システムへアクセスする方法を提供します。 | FileSystemObject のオブジェクト
新しい関数を作成します。 | Function オブジェクト
グローバルなメソッドを 1 つのオブジェクトに集めておくために用意された組み込みオブジェクトです。 | Global オブジェクト
数値計算のための基本的な演算機能と定数を提供する組み込みオブジェクトです。 | Math オブジェクト
数値型のデータを表すオブジェクトです。 | Number オブジェクト
すべての JScript オブジェクトに共通の機能を提供します。 | Object オブジェクト
正規表現パターンの検索に関する情報が格納されるオブジェクトです。 | RegExp オブジェクト
正規表現パターンを格納するオブジェクトです。 | Regular Expression オブジェクト
テキスト文字列を表すオブジェクトです。 | String オブジェクト
Visual Basic のセーフ配列へアクセスする方法を提供します。 | VBArray オブジェクト


ActiveXObject オブジェクト

オートメーション オブジェクトへの参照を有効にします。

newObj = new ActiveXObject(servername.typename[, location])

引数

newObj
必ず指定します。ActiveXObject を代入する変数名を指定します。
servername
必ず指定します。オブジェクトを提供するアプリケーションの名前を指定します。
typename
必ず指定します。作成するオブジェクトの種類またはクラスを指定します。
location
省略可能です。オブジェクトが作成されるネットワーク サーバーの名前を指定します。

解説

オートメーション サーバーでは、少なくとも 1 種類のオブジェクトが提供されます。たとえば、ワードプロセッシング アプリケーションでは、Application オブジェクト、Document オブジェクト、および Toolbar オブジェクトが提供されます。

オートメーション オブジェクトを作成するには、new ActiveXObject をオブジェクト変数に代入します。

var ExcelSheet;
ExcelApp = new ActiveXObject("Excel.Application");
ExcelSheet = new ActiveXObject("Excel.Sheet");

このコードにより、オブジェクトを作成するアプリケーションが起動します (この場合は、Microsoft Excel ワークシートです)。作成されたオブジェクトを参照するには、定義したオブジェクト変数を使用します。次の例では、オブジェクト変数 ExcelSheet と、Application オブジェクトや ActiveSheet.Cells コレクションなどの Excel オブジェクトを使って、新しいオブジェクトのプロパティやメソッドにアクセスします。

// Application オブジェクトを使って Excel を表示します。
ExcelSheet.Application.Visible = true;
// シートの先頭のセルに文字を入力します。
ExcelSheet.ActiveSheet.Cells(1,1).Value = "ここは、A1 です。";
// シートを保存します。
ExcelSheet.SaveAs("C:\\TEST.XLS");
// Application オブジェクトの Quit メソッドで Excel を終了します。
ExcelSheet.Application.Quit();
// オブジェクト変数を解放します。
ExcelSheet = "";

リモート サーバー上でオブジェクトを作成できるのは、インターネット セキュリティが機能していない場合だけです。ネットワーク コンピュータ上でオブジェクトを作成するには、コンピュータの名前を ActiveXObject の引数 servername に渡します。この名前は、共有名のマシン名の部分と同じです。たとえば、"\\myserver\public" というネットワーク共有名の場合、servername は "myserver" です。また、DNS 形式または IP アドレスを使って servername を指定することもできます。

次のコードは、"myserver" というネットワーク コンピュータ上で実行されている Excel のインスタンスのバージョン番号を返す例です。

function GetAppVersion() {
   var XLApp = new ActiveXObject("Excel.Application", "MyServer");
   return(XLApp.Version);
}

指定したリモート サーバーが存在しないか、見つからない場合は、エラーが発生します。

必要条件

バージョン 1

参 照

GetObject 関数


Array オブジェクト

任意のデータ型の配列を作成する機能を提供します。

arrayObj = new Array()
arrayObj = new Array([size])
arrayObj = new Array([element0[, element1[, ...[, elementN]]]])

引数

arrayObj
必ず指定します。Array オブジェクトを代入する変数名を指定します。
size
省略可能です。配列のサイズを指定します。配列のインデックスは 0 から始まります。したがって、作成された要素のインデックスは 0 ～ (size - 1) となります。
element0,...,elementN
省略可能です。配列に代入する要素を指定します。引数に要素を指定して配列を作成すると、n + 1 個の要素が作成され、n + 1 は length プロパティでの値となります。この構文を使用する場合、必ず 1 つ以上の要素を指定する必要があります。

解説

作成した配列の各要素を取得または設定するには、次の [ ] での表記法を使用します。

var my_array = new Array();
for (i = 0; i < 10; i++)
   {
   my_array[i] = i;
   }
x = my_array[4];

Microsoft JScript での配列のインデックスは 0 から始まります。したがって、上記の最後のステートメントでは、配列内の 5 つ目の要素を取得しています。その要素の値は 4 です。

Array オブジェクトのコンストラクタに数値である引数が 1 つだけ渡される場合、その値は符号なしの 32 ビット整数 (< 約 40 億) でなければなりません。この値は、配列のサイズに使用されます。その値が 0 より小さく、整数でない場合は、実行時エラーが発生します。

Array オブジェクトのコンストラクタに数値ではない値が 1 つだけ渡されると、length プロパティは 1 に設定され、渡された値がそのまま配列の単一の要素となる引数として渡されます。

JScript では、1 つの配列に多数の要素を割り当てても、データが実在する要素だけが実存するしくみになっています。このため、配列が使用するメモリ量も抑制されます。

プロパティ

constructor プロパティ | length プロパティ | prototype プロパティ

メソッド

concat メソッド | join メソッド | pop メソッド| push メソッド | reverse メソッド | shift メソッド | slice メソッド | sort メソッド | splice メソッド | toLocaleString メソッド | toString メソッド | unshift メソッド | valueOf メソッド

必要条件

バージョン 2

参 照

new 演算子


arguments オブジェクト

現在実行中の関数、およびその関数の呼び出し側の関数に渡される引数を表すオブジェクトです。

[function.]arguments[n]

引数

function
省略可能です。現在実行中の Function オブジェクトの名前を指定します。
n
必ず指定します。Function オブジェクトに渡される引数の値を 0 で始まるインデックス番号で指定します。

解説

arguments オブジェクトを明示的に作成することはできません。arguments オブジェクトを使用できるのは、関数の実行時だけです。関数の arguments オブジェクトは配列ではありませんが、配列の各要素にアクセスするのと同じ方法で各引数にアクセスできます。インデックス n は、実際には arguments オブジェクトの 0_n プロパティの 1 つへの参照です。

使用例

次のコードは、arguments オブジェクトの使用例です。

function ArgTest(a, b){
   var i, s = "ArgTest 関数は、";
   var numargs = arguments.length;     // 渡された引数の数を取得します。
   var expargs = ArgTest.length;       // 予想された引数の数を取得します。
   if (expargs < 2)
      s += expargs + " 個の引数を予想しました。";
   else
      s += expargs + " 個の引数を予想しました。";
   if (numargs < 2)
      s += numargs + " 個の引数が、渡されました。";
   else
      s += numargs + " 個の引数が、渡されました。";
   s += "\n\n"
   for (i =0 ; i < numargs; i++){      // 引数の内容を取得します。
   s += "  Arg " + i + " = " + arguments[i] + "\n";
   }
   return(s);                          // 引数の一覧を返します。
}

必要条件

バージョン 1

参 照

0_n プロパティ | callee プロパティ | length プロパティ


Boolean オブジェクト

新しいブール値を作成します。

解説

boolObj = new Boolean([boolValue])

引数

boolObj
必ず指定します。Boolean オブジェクトを代入する変数名を指定します。
boolValue
省略可能です。新しい Boolean オブジェクトの初期値を指定します。boolValue を省略するか、false、0、null、NaN、長さ 0 の文字列 ("") のいずれかを指定すると、Boolean オブジェクトの初期値は偽 (false) になります。それ以外の場合は、初期値は真 (true) になります。

解説

Boolean オブジェクトは、ブール型 (Boolean) のラッパ オブジェクトです。JScript では、ブール型 (Boolean) のデータを Boolean オブジェクトに変換したときには必ず自動的に Boolean オブジェクトが使用されます。

通常では、コード内で明示的に Boolean オブジェクトを作成することはありません。

プロパティ

constructor プロパティ | prototype プロパティ

メソッド

toString メソッド | valueOf メソッド

必要条件

バージョン 2

参 照

new 演算子| var ステートメント


Date オブジェクト

日付および時刻を格納しておくオブジェクトです。

dateObj = new Date()
dateObj = new Date(dateVal)
dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])

引数

dateObj
必ず指定します。Date オブジェクトを代入する変数名を指定します。
dateVal
必ず指定します。数値で指定する場合は、世界協定時刻 (UTC)での指定する日付と 1970 年 1 月 1 日 0 時 0 分 0 秒との間をミリ秒単位の数値で指定します。文字列で指定する場合は、指定した文字列が parse メソッドでの規則に準じて解析されます。引数 dateVal には、ActiveX® オブジェクトから取得した VT_DATE 値を指定することもできます。
year
必ず指定します。4 桁の年を指定します (たとえば、76 ではなく 1976 と指定します)。
month
必ず指定します。月を表す 0 ～ 11 (1 ～ 12 月に相当) の範囲内の整数を指定します。
date
必ず指定します。日を表す 1 ～ 31 の範囲内の整数を指定します。
hours
省略可能です。この引数を指定する場合は、引数 minutes を指定する必要があります。時を表す 0 ～ 23 (午前 0 時 ～ 午後 11 時に対応) の範囲内の整数を指定します。
minutes
省略可能です。この引数を指定する場合は、引数 seconds を指定する必要があります。分を表す 0 ～ 59 の範囲内の整数を指定します。
seconds
省略可能です。この引数を指定する場合は、引数 milliseconds を指定する必要があります。秒を表す 0 ～ 59 の範囲内の整数を指定します。
ms
省略可能です。ミリ秒を表す 0 ～ 999 の範囲内の整数を指定します。

解説

Date オブジェクトには、特定の時刻をミリ秒で表す数値が格納されます。引数に有効範囲を超える値や負の値を指定すると、値に応じて格納されるほかの値が変更されます。たとえば、150 秒という指定を行うと、Jscript は 2 分 30 秒として処理します。

格納されている数値が NaN の場合は、オブジェクトが特定の時刻を表していないことを示します。Date オブジェクトに一切パラメータを渡さなかった場合は、オブジェクトは現在の時刻 (UTC) で初期化されます。

Date オブジェクトで表せる日付の範囲は、1970 年 1 月 1 日の前後の約 285,616 年です。

Date オブジェクトには、Date オブジェクトを作成しなくても呼び出すことができる 2 つの静的な (static) メソッドがあります。parse メソッドと UTC メソッドです。

使用例

次のコードは、Date オブジェクトの使用例です。

function DateDemo(){
   var d, s = "今日の日付:";           // 変数を宣言します。
   d = new Date();                     // Date オブジェクトを作成します。
   s += (d.getMonth() + 1) + "/";      // 月を取得します。
   s += d.getDate() + "/";             // 日を取得します。
   s += d.getYear();                   // 年を取得します。
   return(s);                          // 日付を返します。
}

プロパティ

constructor プロパティ | prototype プロパティ

メソッド

getDate メソッド | getDay メソッド | getFullYear メソッド | getHours メソッド | getMilliseconds メソッド | getMinutes メソッド | getMonth メソッド | getSeconds メソッド | getTime メソッド | getTimezoneOffset メソッド | getUTCDate メソッド | getUTCDay メソッド | getUTCFullYear メソッド | getUTCHours メソッド | getUTCMilliseconds メソッド | getUTCMinutes メソッド | getUTCMonth メソッド | getUTCSeconds メソッド | getVarDate メソッド | getYear メソッド | setDate メソッド | setFullYear メソッド | setHours メソッド | setMilliseconds メソッド | setMinutes メソッド | setMonth メソッド | setSeconds メソッド | setTime メソッド | setUTCDate メソッド | setUTCFullYear メソッド | setUTCHours メソッド | setUTCMilliseconds メソッド | setUTCMinutes メソッド | setUTCMonth メソッド | setUTCSeconds メソッド | setYear メソッド | toGMTString メソッド| toLocaleString メソッド | toUTCString メソッド| toString メソッド| valueOf メソッド| parse メソッド | UTC メソッド

必要条件

バージョン 1

参 照

new 演算子 | var ステートメント


Enumerator オブジェクト

コレクション内の項目を列挙する方法を提供します。

enumObj = new Enumerator([collection])

引数

enumObj
必ず指定します。Enumerator オブジェクトを代入する変数名を指定します。
collection
省略可能です。任意の Collection オブジェクトを指定します。

解説

コレクションは、そのメンバに直接アクセスすることができないという点で配列とは異なります。配列の場合はインデックスを使って項目にアクセスできますが、コレクションでは、現在の項目を指すポインタをコレクション内の最初の項目に移動したり、次の項目に移動したりするしかありません。

Enumerator オブジェクトは、コレクション内の任意のメンバにアクセスする手段を提供するオブジェクトで、VBScript の For...Each ステートメントとよく似た機能をします。

使用例

次のコードは、Enumerator オブジェクトの使用例です。

function ShowDriveList(){
   var fso, s, n, e, x;                     // 変数を宣言します。
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);          // Enumerator オブジェクトを作成します。
   s = "";
   for (;!e.atEnd();e.moveNext())           // Drives コレクションを列挙します。
      {
         x = e.item();
         s = s + x.DriveLetter;
         s += " - ";
         if (x.DriveType == 3)              // ネットワークドライブであるかどうかを確認します。
            n = x.ShareName;               // 共有名を取得します。
         else if (x.IsReady)                // ドライブの準備ができているかどうかを確認します。
            n = x.VolumeName;              // ボリューム名を取得します。
         else
            n = "[ドライブの準備ができていません。]";
         s +=  n + "<BR>";
      }
   return(s);                                // アクティブなドライブの一覧を返します。
}

プロパティ

Enumerator オブジェクトには、プロパティはありません。

メソッド

atEnd メソッド | item メソッド | moveFirst メソッド | moveNext メソッド

必要条件

バージョン 3


Error オブジェクト

エラーに関する情報を格納します。

errorObj = new Error()
errorObj = new Error([number])
errorObj = new Error([number[, description]])

引数

errorObj
必ず指定します。Error オブジェクトを代入する変数名を指定します。
number
省略可能です。エラーに割り当てる数値を指定します。省略した場合は 0 です。
description
省略可能です。エラーを説明する短い文字列を指定します。省略した場合は空の文字列です。

解説

実行時エラーが発生するたびに、エラーを記述する Error オブジェクトのインスタンスが作成されます。このインスタンスには、エラーの説明 (description プロパティ) とエラー番号 (number プロパティ) の 2 つの組み込みプロパティがあります。

エラー番号は 32 ビット値です。上位の 16 ビット ワードは機能識別符号です。下位のワードは実際のエラー コードです。

Error オブジェクトは、上の構文を使って明示的に作成するほかに、throw ステートメントを使ってスローすることもできます。どちらの場合も、任意のプロパティを追加して Error オブジェクトの機能を拡張できます。

通常、try...catch ステートメントで作成されたローカル変数は、暗黙に作成された Error オブジェクトを参照します。したがって、エラーの番号および説明を任意の方法で使用できます。

使用例

次の例は、暗黙に作成された Error オブジェクトの使用方法を示します。

try
   x = y   // エラーが発生します。
catch(e){   // ローカル変数 e を作成します。
   response.write(e)   // "[object Error]" と出力します。
   response.write(e.number & 0xFFFF)   // と出力します。
   response.write(e.description)      // "'y' is undefined" と出力します。
}

メソッド

Error オブジェクトには、メソッドはありません。

プロパティ

description プロパティ | number プロパティ

必要条件

バージョン 5

参 照

new 演算子 | throw ステートメント | try...catch ステートメント | var ステートメント


Function オブジェクト

新しい関数を作成します。

構文 1

function functionName([argname1 [, ...[, argnameN]]])
{
   body
}

構文 2

functionName = new Function( [argname1, [... argnameN,]] body );

引数

functionName
必ず指定します。新しく作成する関数の名前を指定します。
argname1...argnameN
省略可能です。関数が受け取る引数のリストを指定します。
body
省略可能です。関数が呼び出されたときに実行する一連の JScript コードを記述した文字列を指定します。

解説

関数は、JScript では基本データ型の 1 つです。構文 1 は、必要に応じて JScript により Function オブジェクトに変換される関数値を作成します。構文 2 で作成した Function オブジェクトは、関数が呼び出されたときに JScript により関数値に変換されます。

構文 1 は、JScript で新しい関数を作成する標準的な方法です。構文 2 は、明示的に関数オブジェクトを作成するために使用する代替形式です。

たとえば、受け取った 2 つの引数の和を求める関数を作成する例では、次の 2 つの方法があります。

例 1

function add(x, y)
{
   return(x + y);            // 加算を実行して結果を返します。
}

例 2

var add = new Function("x", "y", "return(x+y)");

いずれの場合でも、次のようなコードを記述して関数を呼び出せます。

add(2, 3);
メモ 関数を呼び出すときは、必須の引数とかっこを記述してください。かっこを付けずに関数を呼び出すと、関数の結果ではなく、関数のテキストが返されます。

プロパティ

arguments プロパティ | caller プロパティ | constructor プロパティ | prototype プロパティ

メソッド

toString メソッド | valueOf メソッド

必要条件

バージョン 2

参 照

function ステートメント | new 演算子 | var ステートメント


Global オブジェクト

グローバルなメソッドを 1 つのオブジェクトに集めておくために用意された組み込みオブジェクトです。

Global オブジェクトには、メソッドはありません。直接、メソッドを呼び出します。

解説

Global オブジェクトは、直接使用されることはなく、new 演算子を使って作成することもできないオブジェクトです。このオブジェクトは、スクリプト エンジンが初期化されるときに作成され、そのメソッドとプロパティはその時点からすぐに使用可能になります。

プロパティ

Infinity プロパティ | NaN プロパティ

メソッド

escape メソッド | eval メソッド | isFinite メソッド | isNaN メソッド | parseFloat メソッド | parseInt メソッド | unescape メソッド

必要条件

バージョン 5

参 照

Object オブジェクト


Math オブジェクト

数値計算のための基本的な演算機能と定数を提供する組み込みオブジェクトです。

Math.[{property | method}]

引数

property
必ず指定します。Math. オブジェクトのプロパティの名前を指定します。
method
必ず指定します。Math. オブジェクトのメソッドの名前を指定します。

解説

Math オブジェクトは、new 演算子を使って作成することはできません。new 演算子を使って作成しようとすると、エラーが発生します。Math オブジェクトは、スクリプト エンジンがロードされると作成されます。Math オブジェクトのメソッドやプロパティはすべていつでもスクリプト内で使用できます。

プロパティ

E プロパティ | LN2 プロパティ | LN10 プロパティ | LOG2E プロパティ | LOG10E プロパティ | PI プロパティ | SQRT1_2 プロパティ | SQRT2 プロパティ

メソッド

abs メソッド | acos メソッド | asin メソッド | atan メソッド | atan2 メソッド | ceil メソッド | cos メソッド | exp メソッド | floor メソッド | log メソッド | max メソッド | min メソッド | pow メソッド | random メソッド | round メソッド | sin メソッド | sqrt メソッド | tan メソッド

必要条件

バージョン 1

参 照

Number オブジェクト


Number オブジェクト

数値型のデータを表すオブジェクトです。数値定数を入れておくこともできます。

numObj = new Number(value)

引数

numobj
必ず指定します。Number オブジェクトを代入する変数名を指定します。
value
必ず指定します。作成する Number オブジェクトの数値を指定します。

解説

JScript の場合、Number オブジェクトは必要に応じて数値から自動的に作成されます。通常では、コード内で明示的に Number オブジェクトを作成することはありません。

Number オブジェクトを使用する主な目的は、数値の各種プロパティを 1 つのオブジェクトに集めておくことと、toString メソッドを使用して数値を文字列へ変換できるようにすることです。

プロパティ

MAX_VALUE プロパティ | MIN_VALUE プロパティ | NaN プロパティ | NEGATIVE_INFINITY プロパティ | POSITIVE_INFINITY プロパティ | constructor プロパティ | prototype プロパティ

メソッド

toLocaleString メソッド | toString メソッド | valueOf メソッド

必要条件

バージョン 1

参 照

Math オブジェクト | new 演算子


Object オブジェクト

すべての JScript オブジェクトに共通の機能を提供します。

obj = new Object([value])

引数

obj
必ず指定します。Object オブジェクトを代入する変数名を指定します。
value
省略可能です。JScript のプリミティブなデータ型 (数値型、ブール値、文字列型) のいずれかを指定します。オブジェクトの場合、そのオブジェクは修正されずに返されます。null、undefined、または省略した場合は、何も入っていないオブジェクトが作成されます。

解説

Object オブジェクトには、JScript のその他のすべてのオブジェクトが含まれます。このため、このオブジェクトのメソッドとプロパティのすべてを、その他のすべてのオブジェクトが使用できます。これらのメソッドは、独自に定義したオブジェクト内で再定義することができ、適切なときに JScript から呼び出されます。たとえば、toString メソッドは、再定義されることの多い Object メソッドの 1 つです。

このランゲージ リファレンスでの Object オブジェクトの各メソッドの説明では、既定のインプリメンテーションに加え、JScript の組み込みオブジェクト固有のインプリメンテーションについても説明します。

プロパティ

prototype プロパティ | constructor プロパティ

メソッド

toLocaleString メソッド | toString メソッド | valueOf メソッド

必要条件

バージョン 3

参 照

Function オブジェクト | Global オブジェクト


RegExp オブジェクト

正規表現パターン マッチの結果についての情報を保存するために用意された、組み込みのグローバルなオブジェクトです。

RegExp.property

必須の引数 property には、RegExp オブジェクトのプロパティのいずれかを指定します。

解説

RegExp オブジェクトは、直接作成することはできませんが、いつでも使用できます。次の表は、正規表現の検索が成功するまでの、RegExp オブジェクトのさまざまなプロパティの初期値を示したものです。

プロパティ | 略式 | 初期値
index |  | -1
lastIndex |  | -1
lastMatch | $& | 空の文字列
lastParen | $+ | 空の文字列
leftContext |  | 空の文字列
rightContext |  | 空の文字列
$1 - $9 | $1 - $9 | 空の文字列

このオブジェクトのプロパティには、正規表現の検索が成功するまでは、値として undefinedが格納されています。

グローバルな RegExp オブジェクトを Regular Expression オブジェクトと混同しないようにしてください。名前は似ていますが、この 2 つのオブジェクトには明確な違いがあります。グローバルな RegExp オブジェクトのプロパティには一致が検出されるたびに更新される情報が格納されるのに対し、Regular Expression オブジェクトのプロパティには、Regular Expression のインスタンスによる一致に関する情報だけが格納されます。

使用例

次のコードは、グローバルな RegExp オブジェクトの使用例です。

function matchDemo(){
   var s;
   var re = new RegExp("d(b+)(d)","ig");
   var str = "cdbBdbsbdbdz";
   var arr = re.exec(str);
   s = "$1 に含まれている文字列: " + RegExp.$1 + "\n";
   s += "$2 に含まれている文字列: " + RegExp.$2 + "\n";
   s += "$3 に含まれている文字列: " + RegExp.$3;
   return(s);
}

プロパティ

$1...$9 プロパティ | index プロパティ | input プロパティ | lastIndex プロパティ | lastMatch プロパティ | lastParen プロパティ | leftContext プロパティ | rightContext プロパティ

メソッド

RegExp オブジェクトには、メソッドはありません。

必要条件

バージョン 3

参 照

Regular Expression オブジェクト | 正規表現の構文 | String オブジェクト


Regular Expression オブジェクト

正規表現パターンとそのパターンの適用方法を識別するフラグを含むオブジェクトです。

構文 1

re = /pattern/[flags]

構文 2

re = new RegExp("pattern",["flags"])

引数

re
必ず指定します。正規表現パターンを代入する変数名を指定します。
pattern
必ず指定します。使用する正規表現パターンを指定します。構文 1 を使用する場合は、パターンを "/" という文字で区切ります。構文 2 を使用する場合は、パターンをダブル クォーテーション (") で囲みます。
flags
省略可能です。フラグを指定します。構文 2 を使用する場合は、フラグをダブル クォーテーション (") で囲みます。指定可能なフラグは、次のとおりです。
  • g (引数 pattern に指定したパターンと一致する文字列をすべて検索するグローバル検索)
  • i (大文字小文字を区別しない)
  • m (複数行検索)

解説

Regular Expression オブジェクトを RegExp オブジェクトと混同しないようにしてください。名前は似ていますが、この 2 つのオブジェクトには明確な違いがあります。Regular Expression オブジェクトのプロパティには特定の Regular Expression のインスタンスによる一致に関する情報だけが格納されのに対し、グローバルな RegExp オブジェクトのプロパティロパティには一致が検出されるたびに更新される情報が格納されます。

Regular Expression オブジェクトには、文字を組み合わせた文字列検索 (正規表現による検索) を行う場合に使用するパターンを格納します。Regular Expression オブジェクトを作成した後に検索を実行するには、このオブジェクトを文字列のメソッドに渡すか、または文字列を Regular Expression オブジェクトのメソッドのどれかに渡します。最後に実行した検索に関する情報が、グローバルな RegExp オブジェクトに格納されます。

検索文字列があらかじめわかっている場合は、構文 1 を使用します。検索文字列を頻繁に変更する場合、および検索文字列をユーザー入力により受け取るため、コーディングの時点では検索文字列がわからない場合は、構文 2 を使用します。

引数 pattern に指定したパターンは、使用前に内部形式にコンパイルされます。構文 1 の場合は、スクリプトがロードされたときにパターンがコンパイルされます。構文 2 の場合は、使用する直前、または compile メソッドが呼び出されたときにコンパイルされます。

使用例

次のコードは、Regular Expression オブジェクトの使用例です。関連するフラグの付いた正規表現パターンを含むオブジェクトを作成します。この場合、Regular Expression オブジェクトの結果は match メソッドによって使用されます。

function MatchDemo(){
   var r, re;                     // 変数を宣言します。
   var s = "The rain in Spain falls mainly in the plain";
   re = new RegExp("Spain","i");  // Regular Expression オブジェクトを作成します。
   r = s.match(re);               // 文字列 s で一致する文字列を検索します。
   return(r);                     // 一致した文字列を結果として返します。
}

プロパティ

lastIndex プロパティ | source プロパティ

メソッド

compile メソッド | exec メソッド | test メソッド

必要条件

バージョン 3

参 照

RegExp オブジェクト | 正規表現の構文 | String オブジェクト


String オブジェクト

このオブジェクトを使用すると、各種文字列操作、文字列の書式設定、文字列内の一部分の取得、文字列内での指定した文字列の検索などを行うことができます。

解説

newString = new String(["stringLiteral"])

引数

newString
必ず指定します。String オブジェクトを代入する変数名を指定します。
stringLiteral
省略可能です。任意の Unicode 文字のグループを指定します。

解説

String オブジェクトは、文字列リテラルを使用すると自動的に作成されます。この方法で作成された String オブジェクト (標準文字列) は、new 演算子で作成された String オブジェクトと使い方が異なります。文字列リテラルで複数のオブジェクトを作成しても、それらのすべては 1 つのグローバルな共通文字列オブジェクトを共有します。このため、いずれかの文字列リテラルにプロパティを追加した場合、他のすべての標準文字列オブジェクトでそのプロパティを使用できます。

var alpha, beta;
alpha = "これは文字列です。";
beta = "これも文字列です。";

alpha.test = 10;

上記の例では、変数 beta およびすべての文字列リテラルの test プロパティが定義されています。これに対して、次のコードは、追加したプロパティの扱いが異なる例です。

var gamma, delta;
gamma = new String("これは文字列です。");
delta = new String("これも文字列です。");

gamma.test = 10;

この場合、変数 delta の test プロパティは定義されていません。new String で作成された String オブジェクトは、それぞれ独自のメンバを持ちます。このことが、String オブジェクトと文字列リテラルの扱いの異なる点です。

プロパティ

constructor プロパティ | length プロパティ | prototype プロパティ

メソッド

anchor メソッド | big メソッド | blink メソッド | bold メソッド | charAt メソッド | charCodeAt メソッド | concat メソッド | fixed メソッド | fontcolor メソッド | fontsize メソッド | fromCharCode メソッド | indexOf メソッド | italics メソッド | lastIndexOf メソッド | link メソッド | match メソッド | replace メソッド | search メソッド | slice メソッド | small メソッド | split メソッド | strike メソッド | sub メソッド | substr メソッド | substring メソッド | sup メソッド | toLowerCase メソッド | toUpperCase メソッド | toString メソッド | valueOf メソッド

必要条件

バージョン 1

参 照

new 演算子


VBArray オブジェクト

Visual Basic のセーフ配列へアクセスする方法を提供します。

varName = new VBArray(safeArray)

引数

varName
必ず指定します。VBArray を代入する変数名を指定します。
safeArray
必ず指定します。VBArray 値の名前を指定します。

解説

VBArray は、値の取得のみ可能なオブジェクトです。このオブジェクトを直接作成することはできません。引数 safeArray に渡す VBArray 値は、VBArray のコンストラクタを呼び出す前に、既存の ActiveX オブジェクトまたはその他のオブジェクトから取得しておく必要があります。

VBArrays は多次元でも、各次元のインデックス数が異なっていても指定できます。配列の次元数は、dimensions メソッドにより取得できます。各次元で使用されるインデックスの範囲は、lbound メソッドおよび ubound メソッドにより取得できます。

使用例

次のコードは、3 つの部分から構成されます。最初の部分は、Visual Basic のセーフ配列を作成する VBScript のコードです。2 番目の部分は、Visual Basic のセーフ配列を JScript の配列に変換する JScript のコードです。どちらのコードも、HTML ページの <HEAD> セクションに記述します。3 番目の部分は、ほかの 2 つのコードを実行するために <BODY> セクションに記述する JScript のコードです。

<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Function CreateVBArray()
   Dim i, j, k
   Dim a(2, 2)
   k = 1
   For i = 0 To 2
      For j = 0 To 2
         a(j, i) = k
         document.writeln(k)
         k = k + 1
      Next
      document.writeln("vbCRLF")
   Next
   CreateVBArray = a
End Function
-->
</SCRIPT>

<SCRIPT LANGUAGE="JScript">
<!--
function VBArrayTest(vbarray){
   var a = new VBArray(vbarray);
   var b = a.toArray();
   var i;
   for (i = 0; i < 9; i++)
   {
      document.writeln(b[i]);
   }
}
-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JScript">
<!--
   VBArrayTest(CreateVBArray());
-->
</SCRIPT>
</BODY>

プロパティ

VBArray オブジェクトには、プロパティはありません。

メソッド

dimensions メソッド | getItem メソッド | lbound メソッド | toArray メソッド| ubound メソッド

必要条件

バージョン 3

参 照

Array オブジェクト


JScript 演算子

次の表に Jscript 演算子を示します。

内容 | 言語要素
2 つの数値の和を求めます。または 2 つの文字列を連結します。 | 加算演算子 (+)
値を変数に代入します。 | 代入演算子 (=)
2 つの値のビットごとの AND をとります。 | ビットごとの AND 演算子 (&)
変数の値を式で指定されたビット数分だけ左へシフトします。 | ビットごとの左シフト演算子 (<<)
式で指定された値の各ビットを反転させます。 | ビットごとの NOT 演算子 (~)
2 つの値のビットごとの OR をとります。 | ビットごとの OR 演算子 (|)
変数の値を式で指定されたビット数分だけ右へシフトします。符号は保持されます。 | ビットごとの右シフト演算子 (>>)
2 つの値のビットごとの排他的論理和をとります。 | ビットごとの XOR 演算子 (^)
2 つの式を順に続けて実行させます。 | カンマ演算子 (,)
2 つの式を比較した結果を示すブール値を返します。 | 比較演算子
複合代入演算子の一覧です。 | 複合代入演算子
条件に応じて 2 つの式のどちらかを実行します。 | 条件演算子 (?:)
変数の値をデクリメント (1 だけ減少) します。 | デクリメント演算子 (--)
オブジェクトのプロパティ、または配列の要素を削除します。 | delete 演算子
指定された 2 つの数値で除算を行います。 | 除算演算子 (/)
2 つの式を比較し、等しいかどうかを判断します。 | 等しい (==)
一方の式がもう一方の式よりも大きいかどうかを判別するために 2 つの式を比較します。 | より大きい (>)
一方の式がもう一方の式と等しいか、またはそれよりも大きいかどうかを判別するために 2 つの式を比較します。 | より大きいか等しい (>=)
2 つの式が等しく、同じデータ型であるかどうかを判別するために式を比較します。 | 厳密等価演算子 (===)
変数の値をインクリメント (1 だけ増加) します。 | インクリメント演算子 (++)
2 つの式が等しくないか、または同じデータ型でないかどうかを判別するために式を比較します。 | 等しくない (!=)
オブジェクトが特定のクラスのインスタンスかどうかを示すブール値を返します。 | instanceof 演算子
一方の式がもう一方の式よりも小さいかどうかを判別するために 2 つの式を比較します。 | より小さい (<)
一方の式がもう一方の式と等しいか、またはそれよりも小さいかどうかを判別するために 2 つの式を比較します。 | より小さいか等しい (<=)
2 つの値の論理積を求めます。 | 論理 AND 演算子 (&&)
式で指定された値の論理否定を求めます。 | 論理 NOT 演算子 (!)
2 つの値の論理和を求めます。 | 論理 OR 演算子 (||)
2 つの数値で除算を行い、剰余を求めます。 | 剰余演算子 (%)
2 つの数値の積を返します。 | 乗算演算子 (*)
新しいオブジェクトを作成します。 | new 演算子
2 つの式が等しくないか、または同じデータ型でないかどうかを判別するために式を比較します。 | 厳密非等価演算子 (!==)
JScript の演算子の優先順位に関する情報の一覧が表示されます。 | 演算子の優先順位
2 つの数値の差を求めます。 | 減算演算子 (-)
式のデータ型を識別する文字列を返します。 | typeof 演算子
式の符号を反転した値 (数値の負の値) を求めます。 | 単項マイナス符号演算子 (-)
式の各ビットを指定されたビット数分だけ右へシフトします。 | 符号なし右シフト演算子 (>>>)
式が値を返すことができないようにします。 | void 演算子


+= 演算子

変数の値に式で指定された値を加算し、その結果を変数に代入します。

result += expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

この演算子を使用すると、次に記述した場合と同じ結果になります。

result = result + expression

+= 演算子が行う演算の種類は、指定された式の基本特殊型 (基本サブタイプ) の種類によって、次のように決まります。

指定された式の型 | 演算の種類
両方とも数値またはブール値の場合 | 加算
両方とも文字列の場合 | 連結
片方が数値で他方が文字列の場合 | 連結

必要条件

バージョン 1

参 照

+ 演算子 |演算子の優先順位 |演算子の一覧


+ 演算子 (Jscript)

JScript

+ 演算子

1 つの数式の値を他方に加算します。または文字列の連結を行います。

result = expression1 + expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

+ 演算子が行う演算の種類は、指定された式の内部処理形式の種類によって、次のような規則が適用されます。

指定された式の型 | 演算の種類
両方とも数値またはブール値の場合 | 加算
両方とも文字列の場合 | 連結
片方が数値で他方が文字列の場合 | 連結

必要条件

バージョン 1

参 照

+= 演算子 | 演算子の優先順位 | 演算子の一覧


= 演算子 (Jscript)

JScript

= 演算子

値を変数に代入します。

result = expression

引数

result
任意の変数を指定します。
expression
任意の数式を指定します。

解説

= 演算子は、ほかの演算子と同じように、値が result に代入されるだけでなく、この演算子を使用した式にも値が与えられます。このため、代入演算子で次のような使い方をすることもできます。

j = k = l = 0;

このステートメントを実行すると、j、k、および l のすべての変数の値は 0 になります。

必要条件

バージョン 1

参 照

演算子の優先順位 | 演算子の一覧


&= 演算子

変数の値と式で指定された値のビットごとの AND をとり、その結果を変数に代入します。

result &= expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

この演算子を使用すると、次に記述した場合と同じ結果になります。

result = result & expression

&= 演算子は、result と expression の値を 2 進数形式で取り込み、それに対してビットごとに AND 演算を行います。この演算の結果は次のようになります。

0101    (result)
1100    (expression)
----
0100    (output)

指定された 2 つの値で、桁が共に 1 の場合は必ず 1 になります。逆に、両方とも 0 または両方とも 1 の桁は 0 になります。

必要条件

バージョン 1

参 照

& 演算子 | 演算子の優先順位 | 演算子の一覧


& 演算子

2 つの値のビットごとの AND をとります。

result = expression1 & expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

& 演算子は、result と expression の値を 2 進数形式で取り込み、それに対してビットごとに AND 演算を行います。この演算の結果は次のようになります。

0101   (expression1)
1100   (expression2)
----
0100   (result)

指定された 2 つの値で、桁が共に 1 の場合は必ず 1 になります。また、どちらかの桁のみが 0 の場合は 0 になります。

必要条件

バージョン 1

参 照

&= 演算子 | 演算子の優先順位 | 演算子の一覧


<< 演算子

値の各ビットを指定されたビット数分だけ左へシフトします。

result = expression1 << expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

<< 演算子は、expression1 の各ビットを expression2 で指定されたビット数分だけ左へシフトします。次に例を示します。

var temp
temp = 14 << 2

変数 temp の値は、14 (2 進数で 00001110) から 2 ビット分だけ左シフトされて 56 (2 進数で 00111000) になります。

必要条件

バージョン 1

参 照

<<= 演算子 | >> 演算子 | >>> 演算子 | 演算子の優先順位 | 演算子の一覧


~ 演算子

式で指定された値の各ビットを反転させます。

result = ~ expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

単項演算子での式の評価は、~ 演算子も含めてすべて次のように行われます。

  • undefined または null を持つ式を指定すると、実行時エラーが発生します。
  • オブジェクトは文字列に変換されます。
  • 文字列は、数値に変換されます。数値に変換できない場合は、実行時エラーが発生します。
  • ブール値は数値として扱われます (偽の場合は 0、真の場合は 1)。

演算子は、結果として導かれた数値に適用されます。

~ 演算子は、式の値を 2 進数形式で取り込み、その各ビットを反転させます。この演算の結果は次のようになります。

0101   (expression)
----
1010   (result)

元の式でビットが 1 の場合、必ず 0 になります。元の式でビットが 0 の場合、必ず 1 になります。

必要条件

バージョン 1

参 照

! 演算子 | 演算子の優先順位 | 演算子の一覧


|= 演算子

変数の値と式で指定された値のビットごとの OR をとり、その結果を変数に代入します。

result |= expression

引数

result
Any variable.
expression
Any expression.

解説

この演算子を使用すると、次に記述した場合と同じ結果になります。

result = result | expression

|= 演算子は、result と expression の値を 2 進数形式で取り込み、それに対してビットごとに OR 演算を行います。この演算の結果は次のようになります。

0101    (result)
1100    (expression)
----
1101    (output)

指定された 2 つの値で、どちらかの桁のみが 1 の場合は必ず 1 になります。逆に、両方とも 0 または両方とも 1 の桁は 0 になります。

必要条件

バージョン 1

参 照

| 演算子 | 演算子の優先順位 | 演算子の一覧


| 演算子

2 つの値のビットごとの OR をとります。

result = expression1 | expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

| 演算子は、2 つの式の値を 2 進数形式で取り込み、それに対してビットごとの OR 演算を行います。この演算の結果は次のようになります。

0101   (expression1)
1100   (expression2)
----
1101   (result)

指定された 2 つの値で、どちらかの桁のみが 1 の場合は必ず 1 になります。逆に、両方とも 0 または両方とも 1 の桁は 0 になります。

必要条件

バージョン 1

参 照

|= 演算子 | 演算子の優先順位 | 演算子の一覧


>> 演算子

値の各ビットを指定されたビット数分だけ右へシフトします。ただし、符号は保持されます。

result = expression1 >> expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

>> 演算子は、expression1 の各ビットを expression2 で指定されたビット数分だけ右へシフトします。上位ビットは、expression1 の符号ビットで埋められます。シフトされて最下位ビットより右へ移動した桁は破棄されます。たとえば次に示すコードでは、変数 temp の値は、-14 (2 進数で 11110010) から 2 ビット分だけ右へシフトされて -4 (2 進数で 11111100) になります。

var temp
temp = -14 >> 2

必要条件

バージョン 1

参 照

<< 演算子 | >>= 演算子 | >>> 演算子 | 演算子の優先順位 | 演算子の一覧


^= 演算子

変数の値と式で指定された値のビットごとの XOR をとり、その結果を変数に代入します。

result ^= expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

^= 演算子を使用すると、次に記述した場合と同じ結果になります。

result = result ^ expression

^=演算子は、result と expression の値を 2 進数形式で取り込み、それに対してビットごとに排他的論理和の演算を行います。この演算の結果は次のようになります。

0101    (result)
1100    (expression)
----
1001    (result)

指定された 2 つの値の片方だけが 1 の桁は 1 になります。逆に、両方とも 0 または両方とも 1 の桁は 0 になります。

必要条件

バージョン 1

参 照

^ 演算子 | 演算子の優先順位 | 演算子の一覧


^ 演算子

2 つの値のビットごとの排他的論理和をとります。

result = expression1 ^ expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

^ 演算子は、result と expression の値を 2 進数形式で取り込み、それに対してビットごとに排他的な論理和の演算を行います。この演算の結果は次のようになります。

0101   (expression1)
1100   (expression2)
----
1001   (result)

指定された 2 つの値の片方だけが 1 の桁の場合は 1 になります。逆に、両方とも 0 または両方とも 1 の桁の場合は 0 になります。

必要条件

バージョン 1

参 照

^= 演算子 | 演算子の優先順位 | 演算子の一覧


, 演算子

2 つの式を順に続けて実行させます。

expression1, expression2

引数

expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

, 演算子は、その前後の式を左から順に実行させ、右側の式の結果を返します。, 演算子が最もよく使用されるのは、for ループのインクリメント式の中です。次に例を示します。

for (i = 0; i < 10; i++, j++)
{
   k = i + j;
}

for ステートメントでは、ループ内の処理の最後に実行する式として指定できるのは単一の式だけです。ただし、, 演算子を使用すると、複数の式を単一の式として扱われるようにすることができるため、この制限を回避することができます。

必要条件

バージョン 1

参 照

for ステートメント | 演算子の優先順位 | 演算子の一覧


比較演算子 (Jscript)

JScript

比較演算子

2 つの式を比較した結果を示すブール値を返します。

expression1 comparisonoperator expression2

引数

expression1
任意の式を指定します。
comparisonoperator
任意の比較演算子を指定します。
expression2
任意の式を指定します。

解説

文字列を比較する場合、JScript では Unicode のコード順に基づいて比較を行います。

次は、比較演算子の種類によって、expression1 と expression2 がどのように比較されるかをまとめたものです。

関係演算子 (<, >, <=, >=)

  • expression1 と expression2 の両方を数値に変換しようとします。
  • 式が両方とも文字列の場合、Unicode 順で比較が行われます。
  • 一方の式が NaN の場合、偽 (false) が返されます。
  • マイナスの 0 は、プラスの 0 と等しいと評価されます。
  • マイナスの無限大は、それ自身を含むすべての式よりも小さいと評価されます。
  • プラスの無限大は、それ自身を含むすべての式よりも大きいと評価されます。

等価演算子 (==、!=)

  • 2 つの式のデータ型が異なる場合、文字列、数値、ブール値の順に変換を試みます。
  • NaN は、それ自身を含む、いかなる値とも等しくないと評価されます。
  • マイナスの 0 は、プラスの 0 と等しいと評価されます。
  • null は、null と undefined の両方と等しいと評価されます。
  • 2 つの値が同一の文字列である場合、等価な数値である場合、同じオブジェクトである場合、および同一のブール値である場合、これらの値は等しいと評価されます。また、2 つの値のデータ型が異なる場合、データ型の変換を行ってこのうちのいずれかに当てはまれば、2 つの値は等しいと評価されます。
  • 上記以外の比較演算は等しくないと評価されます。

識別演算子 (===、!==)

これらの演算子は、等価演算子と同様に比較を行います。ただし、データ型の変換は行われず、同じデータ型でないと等しいとは評価されません。

必要条件

バージョン 1

参 照

演算子の優先順位 | 演算子の一覧


複合代入演算子

次の表に Jscript 代理演算子を示します。

演算子 | 記号
加算 | +=
ビットごとの AND | &=
ビットごとの OR | |=
ビットごとの XOR | ^=
除算 | /=
左シフト | <<=
剰余 | %=
乗算 | *=
右シフト | >>=
減算 | -=
符号なしの右シフト | >>>=

必要条件

バージョン 1


?: 演算子

条件に応じて 2 つのステートメントのどちらかを実行します。

test ? statement1 : statement2

引数

test
ブール式を指定します。
statement1
test が真 (true) の場合に、実行するステートメントを指定します。複合ステートメントも指定できます。
statement2
test が偽 (false) の場合に、実行するステートメントを指定します。複合ステートメントも指定できます。

解説

?: 演算子を使用すると、if...else ステートメントの内容を簡潔に表すことができるので、if...else ステートメントが記述しづらい長い式の中などで利用します。次に例を示します。

var now = new Date();
var greeting = "皆さん、" + ((now.getHours() > 17) ?"こんばんは":"こんにちは");

この例は、午後 6 時より前では "皆さん、こんにちは"、午後 6 時以降では "皆さん、こんばんは" という文字列を作成します。上記の例は、if...else ステートメントを使用すると、次のようになります。

var now = new Date();
var greeting = "皆さん、";
if (now.getHours() > 17)
   greeting += "こんばんは";
else
   greeting += "こんにちは";

必要条件

バージョン 1

参 照

if...else ステートメント | 演算子の優先順位 | 演算子の一覧


delete 演算子

オブジェクトのプロパティ、または配列の要素を削除します。

delete expression

引数 expression には、通常、プロパティ名または配列の要素となるような有効な JScript 式を指定します。

解説

expression の結果がオブジェクトで、expression に指定したプロパティが存在し、さらにそのオブジェクトで指定した項目の削除が許されていなかった場合は、偽 (false) が返されます。

その他の場合は、真 (true) が返されます。

必要条件

バージョン 3

参 照

演算子の優先順位 | 演算子の一覧


/= 演算子

変数の値を式の値で指定された値で除算し、その結果を変数に代入します。

result /= expression

引数

result
任意の数値変数を指定します。
expression
任意の数式を指定します。

解説

/= 演算子を使用すると、次に記述した場合と同じ結果になります。

result = result / expression

必要条件

バージョン 1

参 照

/ 演算子 | 演算子の優先順位 | 演算子の一覧


/ 演算子 (Jscript)

JScript

/ 演算子

2 つの数式の値の除算を行います。

result = number1 / number2

引数

result
任意の数値変数を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

必要条件

バージョン 1

参 照

/= 演算子 | 演算子の優先順位 | 演算子の一覧


in 演算子

オブジェクトにプロパティがあるかどうか調べます。

result = property in object

引数

result
必ず指定します。任意の変数を指定します。
property
必ず指定します。文字列式を評価する式を指定します。
object
必ず指定します。任意のオブジェクトを指定します。

解説

in 演算子は、オブジェクトにプロパティという名前のプロパティがあるかどうかを調べます。また、オブジェクトのプロトタイプも調べるため、プロパティがプロトタイプの一部であるかどうかがわかります。

必要条件

バージョン 1

参 照

演算子の優先順位 | 演算子の一覧


++ 演算子、? 演算子

JScript

++ 演算子、— 演算子

変数の値をインクリメント (1 だけ増加) またはデクリメント (1 だけ減少) します。

構文 1

result = ++variable
result = --variable
result = variable++
result = variable--

構文 2

++variable
--variable
variable++
variable--

引数

result
任意の変数を指定します。
variable
任意の変数を指定します。

解説

インクリメント演算子およびデクリメント演算子は、変数の値を 1 だけ増加させたり減少させたりする場合に簡単に記述できるようにした演算子です。これらの演算子を含む式の値は、演算子を変数の前に記述するか後ろに記述するかで、次のように結果が異なります。

var j, k;
k = 2;
j = ++k;

演算子を変数の前に記述した場合、インクリメントは式が評価されるより前に実行されるため、変数 j に代入される値は 3 となります。

演算子を変数の後に記述した場合の例を、次に示します。

var j, k;
k = 2;
j = k++;

演算子を変数の後に記述した場合は、式が評価されてからインクリメントが実行されるため、変数 j に代入される値は 2 になります。

必要条件

バージョン 1

参 照

演算子の優先順位 | 演算子の一覧


instanceof 演算子

オブジェクトが特定のクラスのインスタンスかどうかを示すブール値を返します。

result = object instanceof class

引数

result
必ず指定します。任意の変数を指定します。
object
必ず指定します。任意のオブジェクトの式を指定します。
class
必ず指定します。任意の定義済みオブジェクト クラスを指定します。

解説

instanceof 演算子は、引数 object が引数 class のインスタンスである場合は、真 (true) を返します。object が、指定されたクラスのインスタンスでない場合、または object が null 値である場合は、偽 (false) を返します。

使用例

次のコードは、instanceof 演算子の使用例です。

function objTest(obj){
   var i, t, s = "";   // 変数を作成します。
   t = new Array();   // 配列を作成します。
   t["Date"] = Date;   // 配列の要素を設定します。
   t["Object"] = Object;
   t["Array"] = Array;
      for (i in t)
      {
         if (obj instanceof t[i])   // obj のクラスを確認します。
         {
            s += "obj は、" + i + " のインスタンスです。<BR>";
         }
         else
         {
            s += "obj は、" + i + " のインスタンスではありません。<BR>";
         }
   }
   return(s);   // 文字列を返します。
}

var obj = new Date();
response.write(objTest(obj));

必要条件

バージョン 5

参 照

演算子の優先順位 | 演算子の一覧


<<= 演算子

変数の値を式で指定されたビット数分だけ左へシフトし、その結果を変数に代入します。

result <<= expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

<<= 演算子を使用すると、次に記述した場合と同じ結果になります。

result = result << expression

<<= 演算子は、result の各ビットを expression で指定されたビット数分だけ左へシフトします。次に例を示します。

var temp
temp = 14
temp <<= 2

変数 temp の値は、14 (2 進数で 00001110) から 2 ビット分だけ左シフトされて 56 (2 進数で 00111000) になります。下位ビットは 0 で埋められます。

必要条件

バージョン 1

参 照

<< 演算子 | >> 演算子 | >>> 演算子 | 演算子の優先順位 | 演算子の一覧


&& 演算子

2 つの値の論理積を求めます。

result = expression1 && expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

指定された 2 つの式が両方とも真 (True) の場合、result も真 (True) になります。元の式のどちらかが偽 (False) の場合は result は偽 (False) になります。

JScript では、非ブール値がブール値に変換される場合は、次の規則が適用されます。

  • オブジェクトは、すべて真 (true) となります。
  • 文字列は、長さ 0 の文字列の場合のみ偽 (false) となります。
  • null および undefined の場合は偽 (false)
  • 数値は、0 の場合のみ偽 (false) となります。

必要条件

バージョン 1

参 照

演算子の優先順位 | 演算子の一覧


! 演算子

式で指定された値の論理否定を求めます。

result = !expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

次の表は、式 expression の値と演算結果 result の値の対応を示しています。

expression の値 | result の値
True | False
False | True

単項演算子での式の評価は、! 演算子も含めてすべて次のように行われます。

  • undefined または null を持つ式を指定すると、実行時エラーが発生します。
  • オブジェクトは文字列に変換されます。
  • 文字列は、数値に変換されます。数値に変換できない場合は、実行時エラーが発生します。
  • ブール値は数値として扱われます (偽の場合は 0、真の場合は 1)。

演算子は、結果として導かれた数値に適用されます。

演算子では、expression が 0 以外の値の場合は result は 0 になります。expression が 0 の場合は、result は 1 になります。

必要条件

バージョン 1

参 照

~ 演算子 | 演算子の優先順位 | 演算子の一覧


|| 演算子

2 つの値の論理和を求めます。

result = expression1 || expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

指定された 2 つの式のどちらかが一方、または両方が真 (True) のとき、演算結果 result は真 (True) になります。2 つの式の値と演算結果 result の値の対応を次の表にします。

expression1 の値 | expression2 の値 | result の値
True | True | True
True | False | True
False | True | True
False | False | False

JScript では、非ブール値がブール値に変換される場合は、次の規則が適用されます。

  • オブジェクトは、すべて真 (true) となります。
  • 文字列は、長さ 0 の文字列の場合のみ偽 (false) となります。
  • null および undefined の場合は偽 (false)
  • 数値は、0 の場合のみ偽 (false) となります。

必要条件

バージョン 1

参 照

演算子の優先順位 | 演算子の一覧


%= 演算子

変数の値を式で指定された値で除算し、その剰余を変数に代入します。

result %= expression

引数

result
任意の変数を指定します。
expression
任意の数式を指定します。

解説

%= 演算子を使用すると、次に記述した場合と同じ結果になります。

result = result % expression

必要条件

バージョン 1

参 照

% 演算子 | 演算子の優先順位 | 演算子の一覧


% 演算子

1 つの式の値を他方で除算し、その余剰を返します。

result = number1 % number2

引数

result
任意の変数を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

解説

剰余演算子は、number1 を number2 で除算し (浮動小数点数は四捨五入して整数にしてから除算します)、result として剰余だけを返します。たとえば、次の式では A (result) は 5 になります。

A = 19 % 6.7

必要条件

バージョン 1

参 照

%= 演算子 | 演算子の優先順位 | 演算子の一覧


*= 演算子

変数の値と式で指定された値の積を返し、その結果を変数に代入します。

result *= expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

*= 演算子を使用すると、次のように記述した場合と同じ結果になります。

result = result * expression

必要条件

バージョン 1

参 照

* 演算子 | 演算子の優先順位 | 演算子の一覧


* 演算子 (Jscript)

JScript

* 演算子

2 つの式の値の積を返します。

result = number1*number2

引数

result
任意の変数を指定します。
number1
任意の式を指定します。
number2
任意の式を指定します。

必要条件

バージョン 1

参 照

*= 演算子 | 演算子の優先順位 | 演算子の一覧


new 演算子

新しいオブジェクトを作成します。

new constructor[(arguments)]

引数

constructor
必ず指定します。オブジェクトのコンストラクタを指定します。引数がない場合は、かっこを省略できます。
arguments
省略可能です。新しいオブジェクトのコンストラクタに渡す任意の引数を指定します。

解説

new 演算子は次の処理を実行します。

  • メンバを持たないオブジェクトを作成します。
  • オブジェクトのコンストラクタを呼び出し、新しく作成したオブジェクトへのポインタを this という名前でコンストラクタに渡します。
  • コンストラクタは、受け取った引数に従って、オブジェクトを初期化します。

new 演算子の有効な例を次に示します。

my_object = new Object;
my_array = new Array();
my_date = new Date("Jan 5 1996");

必要条件

バージョン 1

参 照

function ステートメント


>>= 演算子

変数の値を式で指定されたビット数分だけ右へシフトし、その結果を変数に代入します。ただし、変数の符号は保持されます。

result >>= expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

>>= 演算子を使用すると、次に記述した場合と同じ結果になります。

result = result >> expression

>>= 演算子は、result の各ビットを expression で指定されたビット数分だけ右へシフトします。上位ビットは、result の符号ビットで埋められます。シフトされて最下位ビットより右へ移動した桁は破棄されます。たとえば次に示すコードでは、変数 temp の値は、-14 (2 進数で 11110010) から 2 ビット分だけ右へシフトされて -4 (2 進数で 11111100) になります。

var temp
temp = -14
temp >>= 2

必要条件

バージョン 1

参 照

<< 演算子 | >> 演算子 | >>> 演算子 | 演算子の優先順位 | 演算子の一覧


-= 演算子

変数の値から式で指定された値を引き算し、その結果を変数に代入します。

result -= expression

引数

result
任意の数値変数を指定します。
expression
任意の数式を指定します。

解説

-= 演算子を使用すると、次のように記述した場合と同じ結果になります。

result = result – expression

必要条件

バージョン 1

参 照

- 演算子 | 演算子の優先順位 | 演算子の一覧


- 演算子 (Jscript)

JScript

- 演算子

1 つの式の値から他方を引き算します。または、式の符号を反転した値 (数値の負の値) を求めます。

構文 1

result = number1 - number2

構文 2

-number

引数

result
任意の数値変数を指定します。
number
任意の数式を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

解説

構文 1 では、- 演算子は、減算演算子として 2 つの数値の差を求めるために使用されます。構文 2 では、- 演算子は、単項マイナス符号演算子として式の符号を反転した値 (数値の負の値) を指定するために使用されます。

構文 2 の場合には、ほかのすべての単項演算子の場合と同様、式の評価は次のように行われます。

  • undefined または null を持つ式を指定すると、実行時エラーが発生します。
  • オブジェクトは文字列に変換されます。
  • 文字列は、数値に変換されます。数値に変換できない場合は、実行時エラーが発生します。
  • ブール値は数値として扱われます (偽の場合は 0、真の場合は 1)。

演算子は、結果として導かれた数値に適用されます。構文 2 では、対象の数値が 0 以外の場合は result が元の値の符号を反転させた値になります。対象の数値が 0 の場合は、結果も 0 となります。

必要条件

バージョン 1

参 照

-= 演算子 | 演算子の優先順位 | 演算子の一覧


typeof 演算子

式のデータ型を識別する文字列を返します。

typeof[(]expression[)] ;

引数 expression には、型を調べる式を指定します。

解説

typeof 演算子は、型情報を文字列で返します。typeof 演算子が返す可能性のある文字列は、"number"、"string"、"boolean"、"object"、"function"、"undefined" の 6 つです。

typeof の構文のかっこは省略可能です。

必要条件

バージョン 1

参 照

演算子の優先順位 | 演算子の一覧


>>> 演算子

値の各ビットを指定されたビット数分だけ右へシフトします。ただし、符号は保持されません。

result = expression1 >>> expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

>>> 演算子は、expression1 の各ビットを expression2 で指定されたビット数分だけ右へシフトします。上位ビットは、0 で埋められます。シフトされて最下位ビットより右へ移動した桁は破棄されます。次に例を示します。

var temp
temp = -14 >>> 2

変数 temp の値は、-14 (2 進数で 11111111 11111111 11111111 11110010) から 2 ビット分だけ右シフトされて 1073741820 (2 進数で 00111111 11111111 11111111 11111100) になります。

必要条件

バージョン 1

参 照

>>>= 演算子 | << 演算子 | >> 演算子 | 演算子の優先順位 | 演算子の一覧


>>>= 演算子

変数の値を式で指定されたビット数分だけ右へシフトし、その結果を変数に代入します。ただし、変数の符号は保持されません。

result >>>= expression

引数

result
任意の変数を指定します。
expression
任意の式を指定します。

解説

>>>= 演算子を使用すると、次に記述した場合と同じ結果になります。

result = result >>> expression

>>>= 演算子は、result の各ビットを expression で指定されたビット数分だけ右へシフトします。上位ビットは、0 で埋められます。シフトされて最下位ビットより右へ移動した桁は破棄されます。次に例を示します。

var temp
temp = -14
temp >>>= 2

変数 temp の値は、-14 (2 進数で 11111111 11111111 11111111 11110010) から 2 ビット分だけ右シフトされて 1073741820 (2 進数で 00111111 11111111 11111111 11111100) になります。

必要条件

バージョン 1

参 照

>>> 演算子 | << 演算子 | >> 演算子 | 演算子の優先順位 | 演算子の一覧


void 演算子

式が値を返すことができないようにします。

void expression

引数 expression には、任意の式を指定します。

解説

void 演算子は、式を評価し、undefined を返します。式の評価が必要で、スクリプトの残りの部分でその結果が参照される必要がない場合に便利です。

必要条件

バージョン 2

参 照

演算子の優先順位 | 演算子の一覧


JScript プロパティ

次の表に Jscript プロパティを示します。

内容 | 言語要素
パターンと一致し、記憶されている最後の 9 つの部分を返します。 | $1...$9 プロパティ
現在実行中の関数に渡された各引数を格納した配列を返します。 | arguments プロパティ
現在の関数を呼び出した関数への参照を返します。 | caller プロパティ
オブジェクトを作成する関数を指定します。 | constructor プロパティ
特定のエラーと関連付けられたエラーを説明する文字列を設定します。値の取得も可能です。 | description プロパティ
自然対数の底の値 (オイラー定数) を返します。 | E プロパティ
検索文字列が一致する、対象文字列内の先頭からの位置を返します。 | index プロパティ
Number.POSITIVE_INFINITY の初期値を返します。 | Infinity プロパティ
検索対象となった文字列を返します。 | input プロパティ
検索文字列が一致する、対象文字列内の後方からの位置を返します。 | lastIndex プロパティ
配列内で定義されている最後の要素のインデックスより 1 だけ大きい整数値を示します。 | length プロパティ (Array オブジェクト)
関数に定義されている引数の数を返します。 | length プロパティ (Function オブジェクト)
String オブジェクトの長さを表します。 | length プロパティ (String オブジェクト)
2 の自然対数の値を返します。 | LN2 プロパティ
10 の自然対数の値を返します。 | LN10 プロパティ
2 を底とする e (自然対数の底) の対数の値を返します。 | LOG2E プロパティ
10 を底とする e (自然対数の底) の対数の値を返します。 | LOG10E プロパティ
JScript で表現できる最大の数値を返します。 | MAX_VALUE プロパティ
JScript で表現できる最も 0 に近い数値を返します。 | MIN_VALUE プロパティ
式が数値ではないことを示す特別な値 (NaN) を返します。 | NaN プロパティ (Global オブジェクト)
式が数値ではないことを示す特別な値 (NaN) を返します。 | NaN プロパティ (Number オブジェクト)
JScript で表現できる最も小さい負の値 (-Number.MAX_VALUE) よりも小さい値を返します。 | NEGATIVE_INFINITY プロパティ
特定のエラーと関連付けられた数値を設定します。 | number プロパティ
円の円周を直径で割った値 (円周率) を返します。この値は、およそ 3.141592653589793 です。 | PI プロパティ
JScript で表現できる最も大きい値 (Number.MAX_VALUE) よりも大きい値を返します。 | POSITIVE_INFINITY プロパティ
指定されたオブジェクトのクラスのプロトタイプへの参照を返します。 | prototype プロパティ
正規表現パターンのテキストを返します。 | source プロパティ
2 分の 1 (0.5) の平方根の値を返します。 | SQRT1_2 プロパティ
2 の平方根の値を返します。 | SQRT2 プロパティ


0...n プロパティ

実行した関数の arguments プロパティで返される arguments オブジェクトから、各引数の実際の値を返します。

[function.]arguments[[0|1|2|...|n]]

引数

function
省略可能です。現在実行している Function オブジェクトの名前を指定します。
0, 1, 2, ..., n
必ず指定します。0 ～ n の範囲で正の整数を指定します。0 が 1 番目の引数に対応し、n が最後の引数に対応します。最後の引数 n の値は arguments.length-1 です。

解説

0 . . . n の各プロパティが返す値は、実行している関数に渡す実際の値です。引数は実際には配列ではありませんが、arguments オブジェクトを構成する各引数は、配列要素にアクセスする方法と同じ方法でアクセスされます。

使用例

arguments オブジェクトの 0 . . . n の各プロパティの使用例を次に示します。使用例を完全に理解するには、関数に 1 つ以上の引数を渡します。

function ArgTest(){
   var s = "";
   s += "各引数は次のとおりです。"
   for (n=0; n< arguments.length; n++){
      s += ArgTest.arguments[n];
      s += " ";
   }
   return(s);
}
print(ArgTest(1, 2, "こんにちは", new Date()));

必要条件

バージョン 5.5

参 照

対象: arguments オブジェクト | Function オブジェクト


$1...$9 プロパティ

パターンと一致し、記憶されている最後の 9 つの部分を返します。値の取得のみ可能です。

RegExp.$n

引数

RegExp
グローバルな RegExp オブジェクトを指定します。

n

1 ～ 9 の任意の整数を指定します。

解説

$1...$9 プロパティの値は、かっこで囲まれたパターンの検索が成功するたびに変更されます。正規表現パターン内に指定できるかっこで囲んだ部分の数に制限はありませんが、保存されるのは最後に見つかった 9 つだけです。

次のコードは、$1...$9 プロパティの使用例です。

function matchDemo(){
   var s;
   var re = new RegExp("d(b+)(d)","ig");
   var str = "cdbBdbsbdbdz";
   var arr = re.exec(str);
   s = "$1 に含まれている文字列: " + RegExp.$1 + "\n";
   s += "$2 に含まれている文字列: " + RegExp.$2 + "\n";
   s += "$3 に含まれている文字列: " + RegExp.$3;
   return(s);
}

必要条件

バージョン 1

参 照

RegExp Object プロパティ | 正規表現の構文

対象: RegExp オブジェクト


arguments プロパティ

現在実行中の Function オブジェクトに渡された arguments オブジェクトを格納した配列を返します。

function.arguments

function には、現在実行中の関数の名前を指定します。省略可能です。

解説

arguments プロパティを使用すると、関数に異なる数の引数を扱わせることができます。arguments オブジェクトの length プロパティには、関数に渡された引数の数が設定されています。arguments オブジェクトの各引数には、各要素にアクセスするのと同じ方法でアクセスできます。

使用例

次のコードは、arguments プロパティの使用例です。

function ArgTest(){
   var i, s, numargs = arguments.length;
   s = numargs;
   if (numargs < 2)
      s += " 個の引数が ArgTest に渡されました。その引数は、次のとおりです。";
   else
      s += " 個の引数が ArgTest に渡されました。それらの引数は、次のとおりです。" ;

   for (i = 0; i < numargs; i++)
      {
         s += arguments[i] + " ";
      }
   return(s);
}

必要条件

バージョン 2

参 照

Arguments オブジェクト | function ステートメント

対象: Function オブジェクト


callee プロパティ

指定した Function オブジェクトの本体である実行中の Function オブジェクトを返します。

[function.]arguments.callee

引数 function は省略可能で、現在実行されている Function オブジェクトの名前を指定します。

解説

callee プロパティは arguments オブジェクトのメンバで、関連する関数が実行されているときにだけ使用できます。

callee プロパティの初期値は、実行中の Function オブジェクトになります。したがって、匿名関数を再帰的に使用できます。

使用例

function factorial(n){
  if (n <= 0)
  return 1;
  else
    return n * arguments.callee(n - 1)
}
print(factorial(3));

必要条件

バージョン 5.5

参 照

対象: arguments オブジェクト | Function オブジェクト


caller プロパティ

現在の関数を呼び出した関数への参照を返します。

functionName.caller

functionNam オブジェクトには、実行中の任意の関数の名前を指定します。

解説

caller プロパティは、実行中の関数にしか定義されません。また、JScript プログラムのトップ レベルから呼び出された関数の caller プロパティは、null が設定されます。

文字列コンテキストの中で caller プロパティを使用すると、その結果は functionname.toString と同じです。つまり、関数の逆コンパイルされたテキストが表示されます。

次のコードは、caller プロパティの使用例です。

function CallLevel(){
   if (CallLevel.caller == null)
      return("コールレベルは、トップ レベルから呼び出されました。");
   else
      return("コールレベルは、ほかの関数から呼び出されました。");
}

必要条件

バージョン 2

参 照

function ステートメント

対象: Function オブジェクト


constructor プロパティ

オブジェクトを作成する関数を指定します。

object.constructor

必須の object には、オブジェクトの名前または関数の名前を指定します。

解説

constructor プロパティは、プロトタイプを持つあらゆるオブジェクトのプロトタイプのメンバです。これには、Global オブジェクトと Math オブジェクト以外の JScript の組み込みオブジェクトがすべて含まれます。constructor プロパティには、特定のオブジェクトのインスタンスを作成する関数への参照が格納されます。次に例を示します。

x = new String("Hi");
if (x.constructor == String)
   // 条件評価が true の場合に、なんらかの処理を行います。

または

function MyFunc {
   // 関数の本体。
}

y = new MyFunc;
if (y.constructor == MyFunc)
   // 条件評価が true の場合に、なんらかの処理を行います。

必要条件

バージョン 2

参 照

prototype プロパティ

対象: Array オブジェクト | Boolean オブジェクト | Date オブジェクト | Function オブジェクト | Math オブジェクト | Number オブジェクト | Object オブジェクト | String オブジェクト


description プロパティ

特定のエラーと関連付けられたエラーを説明する文字列を設定します。値の取得も可能です。

object.description [= stringExpression]

引数

object
必ず指定します。Error オブジェクトの任意のインスタンスを指定します。
stringExpression
省略可能です。エラーの説明が格納されている文字列式を指定します。

解説

description プロパティには、特定のエラーに関連付けられたエラー メッセージの文字列が格納されます。このプロパティを使用して、処理できないエラーまたは処理しないエラーをユーザーに注意を促します。

次のコードは、description プロパティの使用例です。

try
   x = y       // エラーが発生します。
catch(var e){   // ローカル変数 e を作成します。
   document.write(e)   // "[object Error]" と出力します。
   document.write((e.number & 0xFFFF))   // 5009 と出力します。
   document.write(e.description)        // "'y' is undefined" と出力します。
}

必要条件

バージョン 5

参 照

number プロパティ| message プロパティ | name プロパティ

対象: Error オブジェクト


E プロパティ

自然対数の底の値 (オイラー定数) を返します。E プロパティの値は、約 2.718 です。

numVar = Math.E

必要条件

バージョン 1

参 照

exp メソッド| Math Object プロパティ

対象: Math オブジェクト


global プロパティ (Jscript)

JScript

global プロパティ

正規表現で使用する global フラグ (g) の状態を表すブール値を返します。既定値は false です。読み取り専用です。

rgExp.global

rgExp 参照は必ず指定し、Regular Expression オブジェクトのインスタンスを指定します。

解説

global プロパティは、正規表現の global フラグが設定されているときは true を返し、設定されていないときは false を返します。

global フラグを使用すると、検索文字列内のパターンの最初の 1 候補だけではなく、すべての候補を検索できます。これはグローバル マッチングとも呼びます。

使用例

global プロパティの使用例を次に示します。次に示すように、関数に "g" を渡すと、単語 "the" のすべてのインスタンスが単語の "a" に置換されます。ただし、文字列の先頭にある "The" は置換されません。これは、先頭文字が大文字であり、"the" の小文字の "t" とは一致しないためです。

この関数は、使用可能な正規表現のフラグ g、i、および m と関連付けられているプロパティの状態を示す表の文字列を返します。置換されたすべての文字列も返します。

function RegExpPropDemo(flag){
   if (flag.match(/[^gim]/))           // フラグの妥当性をチェックします。
     return("指定されたフラグが無効です");
   var r, re, s                        // 変数を宣言します。
   var ss = "The man hit the ball with the bat.\n";
   ss += "while the fielder caught the ball with the glove.";
   re = new RegExp("the",flag);       // 検索パターンを指定します。
   r = ss.replace(re, "a");           // "the" を "a" で置換します。
   s = "Regular Expression property values:\n\n"
   s += "global  ignoreCase  multiline\n"
   if (re.global)                     // グローバル フラグをテストします。
     s += " True     ";
   else
     s += "False     ";
   if (re.ignoreCase)                 // ignoreCase フラグをテストします。
     s += " True  ";
   else
     s += "False  ";
   if (re.multiline)                  // multiline フラグをテストします。
     s += "     True     ";
   else
     s += "     False   ";
   s += "\n\nThe resulting string is:\n\n" + r;
   return(s);                         // 置換文字列を返します。
}

必要条件

バージョン 5.5

参 照

ignoreCase プロパティ | multiline プロパティ | 正規表現の構文

対象: RegExp オブジェクト


hasOwnProperty メソッド

指定した名前のプロパティがオブジェクトにあるかどうかを表すブール値を返します。

object.hasOwnProperty(proName)

引数

object
必ず指定します。オブジェクトのインスタンスを指定します。
proName
必ず指定します。プロパティ名の文字列値を指定します。

解説

指定した名前のプロパティが object にある場合、hasOwnProperty は true を返し、ない場合は false を返します。このメソッドでは、プロパティがオブジェクトのプロトタイプ チェインに存在するかどうかはチェックされません。プロパティはオブジェクトのメンバである必要があります。

使用例

次の例では、すべての String オブジェクトで共通の split メソッドを共有しています。次のコードでは、false と true を出力します。

var s = new String("JScript");
print(s.hasOwnProperty("split"));
print(String.prototype.hasOwnProperty("split"));

必要条件

バージョン 5.5

参 照

in 演算子

対象: Object オブジェクト


ignoreCase プロパティ

正規表現で使用する ignoreCase フラグ (i) の状態を表すブール値を返します。既定値は false です。読み取り専用です。

rgExp.ignoreCase

rgExp 参照は必ず指定し、RegExp オブジェクトのインスタンスを指定します。

解説

ignoreCase プロパティは、正規表現の ignoreCase フラグが設定されているときは true を返し、設定されていないときは false を返します。

ignoreCase フラグを使用すると、検索文字列内のパターンをマッチングさせるときに、大文字小文字の区別をしません。

使用例

ignoreCase プロパティの使用例を次に示します。次に示すように、関数に "i" を渡すと、先頭の "The" を含む、単語 "the" のすべてのインスタンスが単語の "a" に置換されます。これは、ignoreCase フラグを設定すると、検索で大文字小文字が無視されるためです。そのため、マッチングの際には "T" と "t" が同等に扱われます。

この関数は、使用可能な正規表現のフラグ g、i、および m と関連付けられているプロパティの状態を示す表の文字列を返します。置換されたすべての文字列も返します。

function RegExpPropDemo(flag){
   if (flag.match(/[^gim]/))        // フラグの妥当性をチェックします。
     return("指定されたフラグが無効です");
   var r, re, s                     // 変数を宣言します。
   var ss = "The man hit the ball with the bat.\n";
   ss += "while the fielder caught the ball with the glove.";
   re = new RegExp("the",flag);    // 検索パターンを指定します。
   r = ss.replace(re, "a");        // "the" を "a" で置換します。
   s = "Regular Expression property values:\n\n"
   s += "global  ignoreCase  multiline\n"
   if (re.global)                  // グローバル フラグをテストします。
     s += " True     ";
   else
     s += "False     ";
   if (re.ignoreCase)              // ignoreCase フラグをテストします。
     s += " True  ";
   else
     s += "False  ";
   if (re.multiline)               // multiline フラグをテストします。
     s += "     True     ";
   else
     s += "     False   ";
   s += "\n\nThe resulting string is:\n\n" + r;
   return(s);                      // 置換文字列を返します。
}

必要条件

バージョン 5.5

参 照

global プロパティ | multiline プロパティ | 正規表現の構文

対象: RegExp オブジェクト


index プロパティ

検索文字列が一致する、対象文字列内の先頭からの位置を返します。値の取得のみ可能です。

RegExp.index

通常、このプロパティに関連するオブジェクトは、グローバルな RegExp オブジェクトです。

解説

index プロパティの値は、0 から始まるインデックス番号です。index プロパティの初期値は –1 で、検索が成功するたびに変更されます。

使用例

次のコードは、Index プロパティの使用例です。この関数は、文字列の検索を繰り返し、文字列内にある各文字の index 値および lastIndex 値を出力します。

function RegExpTest(){
  var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
  if (ver >= 5.5){
    var src = "The rain in Spain falls mainly in the plain.";
    var re = /\w+/g;
    var arr;
    while ((arr = re.exec(src)) != null)
       print(arr.index + "-" + arr.lastIndex + "\t" + arr);
  }
  else{
    alert("この処理を有効にするには JScript の新しいバージョンが必要です");
  }
}

必要条件

バージョン 3

参 照

RegExp Object プロパティ | 正規表現の構文

対象: RegExp オブジェクト


Infinity プロパティ

Number.POSITIVE_INFINITY の初期値を返します。

Infinity

解説

Infinity プロパティは Global オブジェクトのメンバなので、スクリプト エンジンが初期化された時点で使用可能になります。

必要条件

バージョン 3

参 照

POSITIVE_INFINITY プロパティ | NEGATIVE_INFINITY プロパティ

対象: Global オブジェクト


input プロパティ ($_)

正規表現検索の対象となった文字列を返します。値の取得のみ可能です。

RegExp.input

通常、このプロパティに関連するオブジェクトは、グローバルな RegExp オブジェクトです。

解説

input プロパティの値は、検索が成功するたびに変更されます。

次のコードは、input プロパティの使用例です。

function inputDemo(){
   var s;
   var re = new RegExp("d(b+)(d)","ig");
   var str = "cdbBdbsbdbdz";
   var arr = re.exec(str);
   s = "検索文字列は、" + RegExp.input + " です。" ;
   return(s);
}

必要条件

バージョン 3

参 照

RegExp Object プロパティ | 正規表現の構文

対象: RegExp オブジェクト


isPrototypeOf メソッド

オブジェクトが、別のオブジェクトのプロトタイプ チェインに存在するかどうかを表すブール値を返します。

object1.isPrototypeOf(object2)

引数

object1
必ず指定します。オブジェクトのインスタンスを指定します。
object2
必ず指定します。プロトタイプ チェインをチェックするもう一方のオブジェクトを指定します。

解説

object2 のプロトタイプ チェインに object1 がある場合、isPrototypeOf は true を返します。プロトタイプ チェインは、同じオブジェクト型のインスタンス間で機能を共有するときに使用します。object2 がオブジェクトでないとき、または object1 が object2 のプロトタイプ チェインにないとき、isPrototypeOf は false を返します。

使用例

isPrototypeof メソッドの使用例を次に示します。

function test(){
  var re = new RegExp();                        //変数を初期化します。
  return (RegExp.prototype.isPrototypeOf(re));  //値を返します。
}

必要条件

バージョン 5.5

参 照

対象: Object オブジェクト


lastIndex プロパティ

検索文字列内で次に文字が一致する位置を返します。

RegExp.lastIndex

通常、このプロパティに関連するオブジェクトは、グローバルな RegExp オブジェクトです。

解説

lastIndex プロパティの値は、文字列の先頭位置の 0 を基にしています。初期値は –1 です。この値は、検索が成功するたびに変更されます。

lastIndex プロパティは、RegExp オブジェクトの exec メソッドと test メソッド、および String オブジェクトの match メソッド、replace メソッド、split メソッドにより変更されます。

lastIndex プロパティの値には、次の規則が適用されます。

  • 一致する文字列がない場合、-1 に設定されます。
  • lastIndex プロパティの値を文字列よりも長く設定してから test メソッドまたは exec メソッドを実行すると、メソッドの実行は失敗し、lastIndex プロパティに -1 が設定されます。
  • lastIndex プロパティの値が文字列の長さと等しい場合、パターンが空の文字列であれば、正規表現パターンが一致します。それ以外の場合は、検索は失敗し、lastIndex プロパティに -1 が再設定されます。
  • 上記以外の場合は、lastIndex プロパティは、パターンに一致する最後に見つかった文字列の直後の位置を示す値が設定されます。

使用例

次のコードは、lastIndex プロパティの使用例です。この関数は、文字列の検索を繰り返し、文字列内にある各文字の index 値および lastIndex 値を出力します。

function RegExpTest(){
  var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
  if (ver >= 5.5){
    var src = "The rain in Spain falls mainly in the plain.";
    var re = /\w+/g;
    var arr;
    while ((arr = re.exec(src)) != null)
       print(arr.index + "-" + arr.lastIndex + "\t" + arr);
  }
  else{
    alert("この処理を有効にするには JScript の新しいバージョンが必要です");
  }
}

必要条件

バージョン 3

参 照

RegExp Object プロパティ | 正規表現の構文

対象: RegExp オブジェクト


leftContext プロパティ ($`)

検索した文字列の先頭から、最後に一致した先頭の前までの文字を返します。読み取り専用です。

RegExp.leftContext

このプロパティに関連付けられているオブジェクトは、常にグローバル RegExp オブジェクトになります。

解説

leftContext プロパティの初期値は空の文字列です。leftContext プロパティの値は、検索が成功するたびに変更されます。

使用例

leftContext プロパティの使用例を次に示します。

function matchDemo(){
   var s;                                // 変数を宣言します。
   var re = new RegExp("d(b+)(d)","ig"); // 正規表現パターン。
   var str = "cdbBdbsbdbdz";             // 検索対象の文字列。
   var arr = re.exec(str);               // 検索を実行します。
   s = "$1 の結果: " + RegExp.$1 + "\n";
   s += "$2 の結果: " + RegExp.$2 + "\n";
   s += "$3 の結果: " + RegExp.$3 + "\n";
   s += "input の結果: " + RegExp.input + "\n";
   s += "lastMatch の結果: " + RegExp.lastMatch + "\n";
   s += "leftContext の結果: " + RegExp.leftContext + "\n";
   s += "rightContext の結果: " + RegExp.rightContext + "\n";
   s += "lastParen の結果: " + RegExp.lastParen + "\n";
   return(s);                            // 結果を返します。
}
document.write(matchDemo());

必要条件

バージョン 5.5

参 照

$1...$9 プロパティ | index プロパティ | input プロパティ | lastIndex プロパティ | lastMatch プロパティ | lastParen プロパティ | rightContext プロパティ

対象: RegExp オブジェクト


length プロパティ (引数)

関数を呼び出すときに実際に渡された引数の数を返します。

[function.]arguments.length

引数 function は省略可能で、現在実行されている Function オブジェクトの名前を指定します。

解説

arguments オブジェクトの length プロパティは、スクリプト エンジンによって、関数が実行されるときにオブジェクトに渡される引数の実際の数に初期化されます。

使用例

arguments オブジェクトの length プロパティの使用例を次に示します。使用例を完全に理解するには、既定の 2 引数を越える数を関数に渡します。

function ArgTest(a, b){
   var i, s = "ArgTest 関数";
   var numargs = arguments.length;
   var expargs = ArgTest.length;
   if (expargs < 2)
     s += expargs + " 引数。";
   else
     s += expargs + " 引数。";
   if (numargs < 2)
     s += numargs + " が渡されました。";
   else
     s += numargs + " が渡されました。";
   return(s);
}

必要条件

バージョン 5.5

参 照

arguments プロパティ | length プロパティ (Array) | length プロパティ (String)

対象: arguments オブジェクト | Function オブジェクト


length プロパティ (Array オブジェクト)

配列内で定義されている最後の要素のインデックスより 1 だけ大きい整数値を示します。

numVar = arrayObj.length

引数

numVar
必ず指定します。任意の変数を指定します。
arrayObj
必ず指定します。Array オブジェクトの名前を指定します。

解説

配列内の要素のインデックスは必ずしも連続している必要はありません。したがって、length プロパティの値が配列内の要素の数と一致するとは限りません。たとえば、次の配列を定義した場合、my_array.length の値は、2 ではなく 7 になります。

var my_array = new Array( );
my_array[0] = "テスト";
my_array[6] = "別のテスト";

値の代入前に格納されていたよりも小さい値を length プロパティに代入すると、配列は切り詰められ、length プロパティに新しく設定した値以上のインデックスを持つ要素はすべて失われます。

代入前に格納されていたよりも大きい値を length プロパティに代入すると、配列は拡張されます。新しく作成された要素の値は undefinedになります。

次のコードは、length プロパティの使用例です。

function LengthDemo(){
   var a;
   a = new Array(0,1,2,3,4);
   return(a.length);
}

必要条件

バージョン 2

参 照

length プロパティ (Function オブジェクト) | length プロパティ (String オブジェクト)

対象: Array オブジェクト


lastMatch プロパティ ($&)

正規表現による検索で最後に一致した文字を返します。読み取り専用です。

RegExp.lastMatch

このプロパティに関連付けられているオブジェクトは、常にグローバル RegExp オブジェクトになります。

解説

lastMatch プロパティの初期値は空の文字列です。lastMatch プロパティの値は、検索が成功するたびに変更されます。

使用例

lastMatch プロパティの使用例を次に示します。

function matchDemo(){
   var s;                                // 変数を宣言します。
   var re = new RegExp("d(b+)(d)","ig"); // 正規表現パターン。
   var str = "cdbBdbsbdbdz";             // 検索対象の文字列。
   var arr = re.exec(str);               // 検索を実行します。
   s = "$1 の結果: " + RegExp.$1 + "\n";
   s += "$2 の結果: " + RegExp.$2 + "\n";
   s += "$3 の結果: " + RegExp.$3 + "\n";
   s += "input の結果: " + RegExp.input + "\n";
   s += "lastMatch の結果: " + RegExp.lastMatch + "\n";
   s += "leftContext の結果: " + RegExp.leftContext + "\n";
   s += "rightContext の結果: " + RegExp.rightContext + "\n";
   s += "lastParen の結果: " + RegExp.lastParen + "\n";
   return(s);                             // 結果を返します。
}
document.write(matchDemo());

必要条件

バージョン 5.5

参 照

$1...$9 プロパティ | index プロパティ | input プロパティ | lastIndex プロパティ | lastParen プロパティ | leftContext プロパティ | rightContext プロパティ

対象: RegExp オブジェクト


lastParen プロパティ ($+)

正規表現による検索で最後にパターン化されたサブマッチがある場合に、それを返します。読み取り専用です。

RegExp.lastParen

このプロパティに関連付けられているオブジェクトは、常にグローバル RegExp オブジェクトになります。

解説

lastParen プロパティの初期値は空の文字列です。lastParen プロパティの値は、検索が成功するたびに変更されます。

使用例

lastParen プロパティの使用例を次に示します。

function matchDemo(){
   var s;                                // 変数を宣言します。
   var re = new RegExp("d(b+)(d)","ig"); // 正規表現パターン。
   var str = "cdbBdbsbdbdz";             // 検索対象の文字列。
   var arr = re.exec(str);               // 検索を実行します。
   s = "$1 の結果: " + RegExp.$1 + "\n";
   s += "$2 の結果: " + RegExp.$2 + "\n";
   s += "$3 の結果: " + RegExp.$3 + "\n";
   s += "input の結果: " + RegExp.input + "\n";
   s += "lastMatch の結果: " + RegExp.lastMatch + "\n";
   s += "leftContext の結果: " + RegExp.leftContext + "\n";
   s += "rightContext の結果: " + RegExp.rightContext + "\n";
   s += "lastParen の結果: " + RegExp.lastParen + "\n";
   return(s);                            // 結果を返します。
}
document.write(matchDemo());

必要条件

バージョン 5.5

参 照

$1...$9 プロパティ | index プロパティ | input プロパティ | lastIndex プロパティ | lastMatch プロパティ | leftContext プロパティ| rightContext プロパティ

対象: RegExp オブジェクト


length プロパティ (Function オブジェクト)

関数に定義されている引数の数を返します。

functionName.length

必須の functionName には、関数の名前を指定します。

解説

関数の length プロパティは、関数のインスタンス作成時にスクリプト エンジンによって関数定義に含まれる引数の数で初期化されます。

length プロパティと異なる数の引数を指定して関数を呼び出した場合に何が起こるかは、各関数に依存します。

次のコードは、length プロパティの使用例です。

function ArgTest(a, b){
   var i, s = "ArgTest 関数は、";
   var numargs = ArgTest.arguments.length;
   var expargs = ArgTest.length;
   if (expargs < 2)
      s += expargs + " 個の引数を予想しました。";
   else
      s += expargs + " 個の引数を予想しました。";
   if (numargs < 2)
      s += numargs + " 個の引数が、渡されました。";
   else
      s += numargs + " 個の引数が、渡されました。";
   return(s);
}

必要条件

バージョン 2

参 照

arguments プロパティ | length プロパティ (Array オブジェクト) | length プロパティ (String オブジェクト)

対象: Function オブジェクト


length プロパティ (String オブジェクト)

String オブジェクトの長さを表します。

strVariable.length
"String Literal".length

解説

length プロパティには、String オブジェクトの文字数を示す整数が格納されています。String オブジェクト内の末尾の文字のインデックス番号は、length - 1 となります。

必要条件

バージョン 1

参 照

length プロパティ (Array オブジェクト) | length プロパティ (Function オブジェクト) | String Object メソッド | String Object プロパティ

対象: String オブジェクト


LN10 プロパティ

10 の自然対数の値を返します。

numVar = Math.LN10

解説

LN10 プロパティは、約 2.302 の値を持つ定数です。

必要条件

バージョン 1

参 照

Math Object プロパティ

対象: Math オブジェクト


LN2 プロパティ

2 の自然対数の値を返します。

numVar = Math.LN2

解説

LN2 プロパティは、約 0.693 の値を持つ定数です。

必要条件

バージョン 1

参 照

Math Object プロパティ

対象: Math オブジェクト


LOG10E プロパティ

10 を底とする e (自然対数の底) の対数の値を返します。

varName = Math.LOG10E

解説

LOG10E プロパティは、約 0.434 の値を持つ定数です。

必要条件

バージョン 1

参 照

Math Object プロパティ

対象: Math オブジェクト


LOG2E プロパティ

2 を底とする e (自然対数の底) の対数の値を返します。

varName = Math.LOG2E

解説

LOG2E プロパティは、約 1.442 の値を持つ定数です。

必要条件

バージョン 1

参 照

Math Object プロパティ

対象: Math オブジェクト


MAX_VALUE プロパティ

JScript で表現できる最大の数値を返します。この値は、およそ 1.79E+308 です。

Number.MAX_VALUE

Number には、Number オブジェクトを指定します。

解説

MAX_VALUE プロパティの値を取得するために、あらかじめ Number オブジェクトを作成しておく必要はありません。

必要条件

バージョン 2

参 照

MIN_VALUE プロパティProperty | NaN プロパティ | NEGATIVE_INFINITY プロパティ | POSITIVE_INFINITY プロパティ | toString メソッド

対象: Number オブジェクト


message プロパティ

エラー メッセージの文字列を返します。

errorObj.message

引数

errorObj
必ず指定します。Error オブジェクトのインスタンスを指定します。

解説

message プロパティは、ユーザーに通知するエラー メッセージを含んだ文字列です。description プロパティと同じ情報を格納します。

使用例

次の例では、TypeError 例外が発生し、エラー名とエラー メッセージが表示されます。

try {
// "null" は無効オブジェクトです。
  null.doSomething();
}
catch(e){
  print(e.name + ": " + e.message);
  print(e.number + ": " + e.description);
}

必要条件

バージョン 5

参 照

description プロパティ | name プロパティ

対象: Error オブジェクト


MIN_VALUE プロパティ

JScript で表現できる最も 0 に近い数値を返します。この値は、およそ 5.00E-324 です。

Number.MIN_VALUE

Number には、Number オブジェクトを指定します。

解説

MIN_VALUE プロパティの値を取得するために、あらかじめ Number オブジェクトを作成しておく必要はありません。

必要条件

バージョン 2

参 照

MAX_VALUE プロパティ | NaN プロパティ | NEGATIVE_INFINITY プロパティ | POSITIVE_INFINITY プロパティ | toString メソッド

対象: Number オブジェクト


multiline プロパティ

正規表現で使用する multiline フラグ (m) の状態を表すブール値を返します。既定値は false です。読み取り専用です。

rgExp.multiline

rgExp 引数は必ず指定し、RegExp オブジェクトのインスタンスを指定します。

解説

multiline プロパティは、正規表現の multiline フラグが設定されているときは true を返し、設定されていないときは false を返します。正規表現オブジェクトを m フラグで作成したときに、multiline プロパティが true になります。

multiline が false のとき、"^" で文字列の先頭位置に一致し、"$" で文字列の最終位置に一致します。multiline が true のとき、"^"で、"\n" または "\r" の直後を含む文字列の先頭位置に一致し、"$" で、"\n" または "\r" の直前を含む文字列の最終位置に一致します。

使用例

multiline プロパティの動作例を次に示します。次に示すように、関数に "m" を渡すと、単語の "while" が単語の "and" に置換されます。これは、フラグが設定されており、単語 "while" が改行文字の直後にあるためです。multiline フラグを使用すると、複数行にわたる文字列で検索を実行できます。

この関数は、使用可能な正規表現のフラグ g、i、および m の状態を示す表の文字列を返します。置換されたすべての文字列も返します。

function RegExpPropDemo(flag){
   if (flag.match(/[^gim]/))          // フラグの妥当性をチェックします。
     return("指定されたフラグが無効です");
   var r, re, s                       // 変数を宣言します。
   var ss = "The man hit the ball with the bat.";
   ss += "\nwhile the fielder caught the ball with the glove.";
   re = new RegExp("^while",flag);    // 検索パターンを指定します。
   r = ss.replace(re, "and");         // "while" を "and" で置換します。
   s = "Regular Expression property values:\n\n"
   s += "global  ignoreCase  multiline\n"
   if (re.global)                     // グローバル フラグをテストします。
     s += " True     ";
   else
     s += "False     ";
   if (re.ignoreCase)                 // ignoreCase フラグをテストします。
     s += " True  ";
   else
     s += "False  ";
   if (re.multiline)                  // multiline フラグをテストします。
     s += "     True     ";
   else
     s += "     False   ";
   s += "\n\nThe resulting string is:\n\n" + r;
   return(s);                         // 置換文字列を返します。
}

必要条件

バージョン 5.5

参 照

global プロパティ | ignoreCase プロパティ | 正規表現の構文

対象: RegExp オブジェクト


name プロパティ

エラー名を返します。

errorObj.name

引数

errorObj
必ず指定します。Error オブジェクトのインスタンスを指定します。

解説

name プロパティは、エラーの名前または例外種別を返します。実行時エラーが発生すると、次に示すネイティブの例外種別の 1 つが name プロパティに設定されます。

例外種別 | 意味
ConversionError | オブジェクトを、変換不可能なものに変換しようとしたときに、このエラーが発生します。
RangeError | 関数に範囲外の引数を指定したときに、このエラーが発生します。たとえば、有効な正の整数でない長さの Array オブジェクトを作成しようとすると、このエラーが発生します。
ReferenceError | 無効の参照を検出すると、このエラーが発生します。たとえば、既定の参照が null のときに、このエラーが発生します。
RegExpError | 正規表現でコンパイル エラーがあるときに、このエラーが発生します。ただし、正規表現が正常にコンパイルされた後は、このエラーは発生しません。たとえば、正規表現のパターンを宣言するときの構文が無効である場合や、フラグが i、g、または m 以外である場合、または同じフラグが複数個含まれる場合などに、このエラーが発生します。
SyntaxError | ソース テキストを解析して、そのソース テキストの構文が正しくないときに、このエラーが発生します。たとえば、eval 関数を呼び出すときに無効なプログラム テキストを引数として指定したときに、このエラーが発生します。
TypeError | オペランドの実際の型が、既定の型と一致しないときに、このエラーが発生します。関数の呼び出し対象がオブジェクトでないとき、またはその呼び出しがサポートされていないときに、このエラーが発生します。
URIError | 無効な URI (Uniform Resource Indicator) が検出されたときに、このエラーが発生します。たとえば、エンコードまたはデコードされている文字列に無効な文字が見つかると、このエラーが発生します。

使用例

次の例では、TypeError 例外が発生し、エラー名とエラー メッセージが表示されます。

try {
// "null" は無効オブジェクトです。
  null.doSomething();
}
catch(e){
  print(e.name + ": " + e.message);
  print(e.number + ": " + e.description);
}

必要条件

バージョン 5.5

参 照

description プロパティ | message プロパティ | number プロパティ

対象: Error オブジェクト


NaN プロパティ (Number オブジェクト)

NaN を返します。NaN は、数値が返されるはずの場合に数値ではない値が返されたことを表すための特殊な値です。

Number.NaN

Number には、Number オブジェクトを指定します。

解説

NaN プロパティの値を取得するために、あらかじめ Number プロパティを作成しておく必要はありません。

NaN は、それ自身を含む、いかなる値と比較しても等しくなりません。値が NaN であるかどうかを調べるには、isNaN 関数を使用します。

必要条件

バージョン 2

参 照

isNaN メソッド | MAX_VALUE プロパティ | MIN_VALUE プロパティ | NEGATIVE_INFINITY プロパティ | POSITIVE_INFINITY プロパティ | toString メソッド

対象: Number オブジェクト


NaN プロパティ (Global オブジェクト)

式が数値ではないことを示す特別な値 NaN を返します。

NaN

解説

NaN プロパティ (not a number) は Global オブジェクトのメンバなので、スクリプト エンジンが初期化された時点で使用可能になります。

必要条件

バージョン 3

参 照

isNaN メソッド

対象: Global オブジェクト


NEGATIVE_INFINITY プロパティ

JScript で表現できる最も小さい負の値 (-Number.MAX_VALUE) よりも小さい値を返します。

Number.NEGATIVE_INFINITY

Number には、Number オブジェクトを指定します。

解説

NEGATIVE_INFINITY プロパティの値を取得するために、あらかじめ Number オブジェクトを作成しておく必要はありません。

JScript では、NEGATIVE_INFINITY 値は -Infinity と表示されます。この値は、算術演算では無限大として機能します。

必要条件

バージョン 2

参 照

MAX_VALUE プロパティ | MIN_VALUE プロパティ | NaN プロパティ | POSITIVE_INFINITY プロパティ | toString メソッド

対象: Number オブジェクト


number プロパティ

特定のエラーと関連付けられた数値を設定します。値の取得も可能です。Error オブジェクトの既定のプロパティは number です。

object.number [= errorNumber]

引数

object
Error オブジェクトの任意のインスタンスを指定します。
errorNumber
エラーを表す整数値を指定します。

解説

エラー番号は 32 ビット値です。上位の 16 ビット ワードは機能識別符号です。下位のワードは実際のエラー コードです。

次のコードは、number プロパティの使用例です。

try
   x = y       // エラーが発生します。
catch(var e){   // ローカル変数 e を作成します。
   document.write(e)   // "[object Error]" と出力します。
   document.write(e.number>>16 & 0x1FFF)   // 機能識別符号の 10 を出力します。
   document.write(e.number & 0xFFFF)      // エラー コードの 5009 を出力します。
   document.write(e.description)         // "'y' is undefined" と出力します。
}

必要条件

バージョン 5

参 照

description プロパティ | message プロパティ | name プロパティ

対象: Error オブジェクト


PI プロパティ

円の円周を直径で割った値 (円周率) を返します。この値は、およそ 3.141592653589793 です。

numVar = Math.PI

解説

PI プロパティは、約 3.14159 の値を持つ定数です。

必要条件

バージョン 1

参 照

Math Object プロパティ

対象: Math オブジェクト


POSITIVE_INFINITY プロパティ

JScript で表現できる最も大きい値 (Number.MAX_VALUE) よりも大きい値を返します。

Number.POSITIVE_INFINITY

Number には、Number オブジェクトを指定します。

解説

POSITIVE_INFINITY プロパティの値を取得するために、あらかじめ Number オブジェクトを作成しておく必要はありません。

JScript では、POSITIVE_INFINITY 値は Infinity と表示されます。この値は、算術演算では無限大として機能します。

必要条件

バージョン 2

参 照

MAX_VALUE プロパティ | MIN_VALUE プロパティ | NaN プロパティ | NEGATIVE_INFINITY プロパティ | toString メソッド

対象: Number オブジェクト


propertyIsEnumerable プロパティ

指定したプロパティがオブジェクトの一部で、加算可能かどうかを表すブール値を返します。

object.propertyIsEnumerable(proName)

引数

object
必ず指定します。オブジェクトのインスタンスを指定します。
proName
必ず指定します。プロパティ名の文字列値を指定します。

解説

propertyIsEnumerable プロパティは、proName が object に存在し、For...In ループを使用して加算できる場合に true を返します。propertyIsEnumerable プロパティは、指定した名前のプロパティが object にない場合か、指定したプロパティが加算できない場合に false を返します。通常、定義済みのプロパティは加算可能ではなく、ユーザー定義のプロパティは必ず加算可能になります。

propertyIsEnumerable プロパティでは、プロトタイプ チェインのオブジェクトは対象外です。

使用例

function testIsEnumerable(){
  var a = new Array("apple", "banana", "cactus");
  return(a.propertyIsEnumerable(1));
}

必要条件

バージョン 5.5

参 照

対象: Object オブジェクト


prototype プロパティ

指定されたオブジェクトのクラスのプロトタイプへの参照を返します。

objectName.prototype

引数 objectName には、オブジェクトの名前を指定します。

解説

prototype プロパティを使用すると、オブジェクトのクラスが持つ機能の基本セットを知ることができます。オブジェクトの新しいインスタンスは、そのオブジェクトに割り当てられているプロトタイプの機能を "継承" します。

たとえば、Array オブジェクトに、配列内の最も大きい要素の値を返すメソッドを追加する場合は、次のコード例のように関数を宣言し、それを Array.prototype に追加します。これで、この関数を配列のメソッドとして使用できるようになります。

function array_max( ){
   var i, max = this[0];
   for (i = 1; i < this.length; i++)
   {
   if (max < this[i])
   max = this[i];
   }
   return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );

このコードが実行されると、配列 x 内の最も大きい値である 6 が y に格納されます。

組み込み JScript オブジェクトの場合は、すべてが値の取得のみ可能な prototype プロパティを持っています。これらのオブジェクトのプロトタイプには、このコード例のように機能を追加することはできますが、これらのオブジェクトに別のプロトタイプを割り当てることができません。ただし、ユーザー定義型オブジェクトは、新しいプロトタイプに代入できます。

このランゲージ リファレンスの各組み込みオブジェクトのメソッドまたはプロパティの一覧には、それぞれのメソッドまたはプロパティがそのオブジェクトのプロトタイプに含まれているかどうかが示されます。

必要条件

バージョン 2

参 照

constructor プロパティ

対象: Array オブジェクト | Boolean オブジェクト | Date オブジェクト | Function オブジェクト | Number オブジェクト | Object オブジェクト | String オブジェクト


rightContext プロパティ ($')

検索した文字列の最後に一致した位置から最後までの文字を返します。読み取り専用です。

RegExp.rightContext

このプロパティに関連付けられているオブジェクトは、常にグローバル RegExp オブジェクトになります。

解説

rightContext プロパティの初期値は空の文字列です。rightContext プロパティの値は、検索が成功するたびに変更されます。

使用例

rightContext プロパティの使用例を次に示します。

function matchDemo(){
   var s;                                // 変数を宣言します。
   var re = new RegExp("d(b+)(d)","ig"); // 正規表現パターン。
   var str = "cdbBdbsbdbdz";             // 検索対象の文字列。
   var arr = re.exec(str);               // 検索を実行します。
   s = "$1 の結果: " + RegExp.$1 + "\n";
   s += "$2 の結果: " + RegExp.$2 + "\n";
   s += "$3 の結果: " + RegExp.$3 + "\n";
   s += "input の結果: " + RegExp.input + "\n";
   s += "lastMatch の結果: " + RegExp.lastMatch + "\n";
   s += "leftContext の結果: " + RegExp.leftContext + "\n";
   s += "rightContext の結果: " + RegExp.rightContext + "\n";
   s += "lastParen の結果: " + RegExp.lastParen + "\n";
   return(s);                            // 結果を返します。
}
document.write(matchDemo());

必要条件

バージョン 5.5

参 照

$1...$9 プロパティ| index プロパティ | input プロパティ | lastIndex プロパティ | lastMatch プロパティ | lastParen プロパティ | leftContext プロパティ

対象: RegExp オブジェクト


source プロパティ (Jscript)

JScript

source プロパティ

正規表現パターンのテキストを返します。値の取得のみ可能です。

rgExp.source

rgExp には、Regular expression オブジェクトを指定します。変数名、リテラルを指定することもできます。

次のコードは、source プロパティの使用例です。

function SourceDemo(re, s){
   var s1;
   // 正規表現に一致する文字列があるかどうかをテストします。
   if (re.test(s))
      s1 = " を含みます。";
   else
      s1 = " を含みません。";
   // 正規表現自体のテキストを取得します。
   return(s + s1 + re.source);
}

必要条件

バージョン 3

参 照

Regular Expression Object メソッド | Regular Expression Object プロパティ | 正規表現の構文

対象: Regular Expression オブジェクト


SQRT1_2 プロパティ

2 分の 1 (0.5) の平方根の値を返します。

numVar = Math.SQRT1_2

解説

SQRT1_2 プロパティは、約 0.707 の値を持つ定数です。

必要条件

バージョン 1

参 照

Math Object プロパティProperties | sqrt メソッド | SQRT2 プロパティ

対象: Math オブジェクト


SQRT2 プロパティ

2 の平方根の値を返します。

numVar = Math.SQRT2

解説

SQRT2 プロパティは、約 1.414 の値を持つ定数です。

必要条件

バージョン 1

参 照

Math Object プロパティ | sqrt メソッド | SQRT1_2 プロパティ

対象: Math オブジェクト


undefined プロパティ

undefined の初期値を返します。

undefined

解説

undefined プロパティは Global オブジェクトのメンバで、スクリプト エンジンが初期化されたときに使用できるようになります。変数を宣言し、初期化していない場合は、その値は undefined になります。

変数を宣言していない場合、その変数は undefined と比較することはできませんが、その変数の型と文字列 "undefined" とを比較することはできます。

undefined プロパティは、変数に undefined を明示的に設定するときまたはテストするときに便利です。

使用例

var declared;                         // 変数を宣言します。
if (declared == undefined)            // 変数をテストします。
   document.write("宣言時に値は設定されていません。");

if (typeOf(notDeclared) == "undefined")
   document.write("notDeclared は定義されていません。");

必要条件

バージョン 5.5

参 照

対象: Global オブジェクト


JScript ステートメント

次の表に Jscript ステートメントを示します。

内容 | 言語要素
現在のループを終了します。label が指定された場合は、関連するステートメントを終了します。 | break ステートメント
try ブロック内のコードでエラーが発生したときに実行するためのステートメントを含みます。 | catch ステートメント
条件コンパイルの機能をアクティブにします。 | @cc_on ステートメント
コード内に 1 行のコメントを記述するときに使用します。 | // (単一行のコメント ステートメント)
コード内に複数行にわたるコメントを記述するときに使用します。 | /*..*/ (複数行のコメント ステートメント)
ループの現在の反復の実行を中止し、次の反復の実行を開始します。 | continue ステートメント
ステートメント ブロックを一度実行し、その後、条件式の評価が偽 (false) になるまでループ実行を繰り返します。 | do...while ステートメント
指定された条件が真 (true) の間、複数のステートメントが含まれるブロックを繰り返して実行します。 | for ステートメント
オブジェクトまたは配列の各要素に対して指定されたステートメントを実行します。 | for...in ステートメント
新しい関数を宣言します。 | function ステートメント
条件式の値を評価し、条件に応じて適切なステートメントを実行します。 | @if ステートメント
条件式の値を評価し、条件に応じて適切なステートメントを実行します。 | if...else ステートメント
ステートメントの識別子を提供します。 | Labeled ステートメント
現在の関数の実行を終了し、関数から戻り値を返します。 | return ステートメント
条件コンパイル ステートメントで使用する変数を作成します。 | @set ステートメント
指定した式の値がラベルと一致したときに 1 つ以上のステートメントを実行する機能を提供します。 | switch ステートメント
現在のオブジェクトを返します。 | this ステートメント
try...catch ステートメントで処理できるエラー条件を生成します。 | throw ステートメント
JScript のエラー処理機能を実装します。 | try ステートメント
変数を宣言します。 | var ステートメント
指定した条件が偽 (false) になるまでステートメントを繰り返し実行します。 | while ステートメント
ステートメントで使用する既定のオブジェクトを設定します。 | with ステートメント


@cc_on ステートメント

条件コンパイルの機能をアクティブにします。

@cc_on

解説

@cc_on ステートメントを記述すると、スクリプト エンジンで条件コンパイルが行われるようになります。

@cc_on ステートメントは、コメントの中に記述するようにします。この場合、条件コンパイルをサポートしていないブラウザでも、構文エラーが発生しません。次にそのコード例を示します。

/*@cc_on*/
...
(スクリプトのその他の部分)

@if ステートメントまたは @set ステートメントをコメント外に記述することでも、条件コンパイルをアクティブにできます。

必要条件

バージョン 3

参 照

条件コンパイル | 条件コンパイル変数 | @if ステートメント | @set ステートメント


@if ステートメント

条件式の値に応じて、ステートメントのグループに対して条件コンパイルを実行します。

@if (
   condition1
)
   text1
[@elif (
   condition2
)
   text2]
[@else
   text3]
@end

引数

condition1, condition2
省略可能です。ブール式に強制変換できる式を指定します。
text1
省略可能です。condition1 に指定した条件が真 (true) の場合に解析するテキストを指定します。
text2
省略可能です。condition1 も condition2 も偽 (false) の場合に解析するテキストを指定します。
text3
省略可能です。condition1 に指定した条件が偽 (false) で condition2 に指定した条件が真 (true) の場合に解析するテキストを指定します。

解説

@if ステートメントの句は、@if ステートメントと同じ行に記述する必要があります。また、複数の @elif 句を使用する場合は、すべての @elif 句を @else 句よりも前に記述する必要があります。

次のコードは、@if ステートメントを、テキスト出力に使うテキストを複数の候補の中から選択する場合などによく使用する例です。次に例を示します。

alert(@if (@_win32) "Windows NT または Windows 95 を使用" @else "Windows 3.1 を使用" @end)

必要条件

バージョン 3

参 照

条件コンパイル | 条件コンパイル変数 | @cc_on ステートメント | @set ステートメント


@set ステートメント

条件コンパイル ステートメントで使用する変数を作成します。

@set @varname = term

引数

varname
必ず指定します。JScript で有効な変数名を指定します。必ず先頭に "@" という文字を記述します。
term
必ず指定します。ゼロまたは定数、条件コンパイル変数、かっこで囲んだ式の単項演算子が指定できます。

解説

条件コンパイルでは、数値変数とブール変数がサポートされています。文字列はサポートされていません。通常、@set ステートメントを使用して作成された変数は、条件コンパイルの中でのみ利用でき、Jscript コードでは使用できません。

変数宣言のコード例を次に示します。

@set @myvar1 = 12

@set @myvar2 = (@myvar1 * 20)

@set @myvar3 = @_jscript_version

かっこで囲んだ式の中で使用できる演算子は次のとおりです。

  • ! ~
  • * / %
  • + -
  • << >> >>>
  • < <= > >=
  • == != === !==
  • & ^ |
  • && | |

まだ定義していない変数を使用すると、その値は NaN になります。@if ステートメントを次のコード例のように使用すると、値が NaN かどうかを確認できます。

@if (@newVar != @newVar)
   ...

NaN は、自身と比較しても等しいと評価されない唯一の値で、コードによって確認できます。

必要条件

バージョン 3

参 照

条件コンパイル | 条件コンパイル変数 | @cc_on ステートメント | @if ステートメント


break ステートメント

現在のループを終了します。label が指定された場合は、関連するステートメントを終了します。

break [label];

省略可能な label 引数は、終了するステートメントのラベルを指定します。

解説

通常、break ステートメントは、switch ステートメント、while ループ、for ループ、または for...in ループの中で使用します。label は、switch ステートメントの中で頻繁に使用しますが、他のステートメントの中でも使用できます。label は、複合ステートメントの中で使用することもできます。

break ステートメントを使用すると現在のループまたはステートメントが終了し、スクリプトの実行は、直後のステートメントから開始されます。

使用例

次のコードは、break ステートメントの使用例です。

function BreakTest(breakpoint){
   var i = 0;
   while (i < 100)
   {
   if (i == breakpoint)
      break;
      i++;
   }
   return(i);
}

必要条件

バージョン 1

参 照

continue ステートメント | do...while ステートメント | for ステートメント | for...in ステートメント | Labeled ステートメント | while ステートメント


コメント ステートメント

JScript パーサーにコメントを無視させるときに使用します。

構文 1

単一行コメント:
// comment

構文 2

複数行コメント:
/*
comment
*/

comment には、スクリプトの中にコメントとして挿入するテキストを入力します。

構文 3

//@CondStatement

構文 4

/*@
condStatement
@*/

CondStatement は、条件付きコンパイルがアクティブな場合に使用される条件付きコンパイル コードです。構文 3 を使用する場合、"//" と "@" の間にはスペースを入力しません。

解説

コメントは、スクリプト内に JScript パーサーに解釈されない部分を作るときに使用します。コメントを使用すると、プログラム内に動作の説明を入れることができます。

構文 1 を使用すると、パーサーはコメント記号から行末までのテキストを無視します。構文 2 を使用すると、パーサーは開始記号から終了記号までのテキストを無視します。

構文 3 または構文 4 を使用すると、条件付きコンパイルがサポートされるようになり、条件付きコンパイルの機能がサポートされていないブラウザとの互換性が維持されます。このようなブラウザは、構文 3 と構文 4 の形式のコメントを、それぞれ構文 1 と構文 2 の形式のコメントとして扱います。

使用例

次のコードは、comment ステートメントの最も一般的な使用例です。

function myfunction(arg1, arg2){
   /* これは、複数行コメントです。
      必要に応じて、行数を増やすことができます。*/
   var r;
   // これは、単一行コメントです。
   r = arg1 + arg2; // 2 つの引数を合計します。
   return(r);
}

必要条件

バージョン 1


continue ステートメント

ループの現在の反復の実行を中止し、次の反復の実行を開始します。

continue [label];

label には、現在の反復の実行を中止し、次の反復の実行を開始するステートメントのラベルを指定します。

解説

continue ステートメントは、while ループ、do...while ループ、for ループ、および for...in ループの中でのみ使用できます。continue ステートメントを実行すると、ループの現在の反復の実行が中止され、プログラムの実行は、ループの先頭から続行されます。このステートメントの動作は、次のようにループの種類により少しずつ異なります。

  • while ループと do...while ループでは、条件が評価され、その結果が真 (true) の場合はループの実行が繰り返されます。
  • for ループでは、最初にインクリメント式が実行され、次に条件式が真 (true) の場合はループの実行が繰り返されます。
  • for...in ループでは、指定された変数の次のフィールドに進み、ループの実行が繰り返されます。

使用例

次のコードは、continue ステートメントの使用例です。

function skip5(){
   var s = "", i=0;
   while (i < 10)
   {
      i++;
      // 5 をスキップ
      if (i==5)
      {
       continue;
      }
   s += i;
   }
   return(s);
}

必要条件

バージョン 1

参 照

break ステートメント | do...while ステートメント | for ステートメント | for...in ステートメント | Labeled ステートメント | while ステートメント


do...while ステートメント

ステートメント ブロックを一度実行し、その後、条件式の評価が偽 (false) になるまでループ実行を繰り返します。

do
   statement
while (expression) ;

引数

statement
省略可能です。expression の評価が真 (true) の場合に実行するステートメントを指定します。複合ステートメントを指定することもできます。
expression
省略可能です。真 (true) または偽 (false) のブール値に強制変換できる式を指定します。この式の評価が真 (true) の場合は、再びループが実行されます。偽 (false) の場合は、ループ処理を終了します。

解説

expression に指定した式の値は、ループの最初の繰り返し実行が終わるまでは確認されません。このため、ループは少なくとも一度は必ず実行されます。その後は、ループの繰り返し実行が正常に終了するたびに式の値が確認されます。

使用例

次のコードは、do...while ステートメントを使って Drives コレクションを繰り返し処理する例です。

function GetDriveList(){
   var fso, s, n, e, x;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);
   s = "";
   do
   {
      x = e.item();
      s = s + x.DriveLetter;
      s += " - ";
      if (x.DriveType == 3)
         n = x.ShareName;
      else if (x.IsReady)
         n = x.VolumeName;
      else
         n = "[ドライブの準備ができていません。]";
         s +=  n + "<br>";
      e.moveNext();
   }
   while (!e.atEnd());
   return(s);
}

必要条件

バージョン 3

参 照

break ステートメント | continue ステートメント | for ステートメント | for...in ステートメント | while ステートメント | Labeled ステートメント


for ステートメント

指定された条件が真 (true) の間、複数のステートメントが含まれるブロックを繰り返して実行します。

for (initialization; test; increment)
   statements

引数

initialization
必ず指定します。任意の式を指定します。この式は、ループを実行する直前に一度だけ実行されます。
test
必ず指定します。任意のブール式を指定します。test が真 (true) の場合は、statement が実行されます。test が偽 (false) になると、ループの実行は終了します。
increment
必ず指定します。任意の式を指定します。インクリメント式は、ループ内のブロックの実行が終わるたびに実行されます。
statements
省略可能です。test が真 (true) の場合に実行される 1 つ以上のステートメントを指定します。複合ステートメントを指定することもできます。

解説

特定の回数だけ処理を繰り返す場合は、for ループを使います。

使用例

次のコードは、for ループの使用例です。

/* 初めに i は 0 に設定され、繰り返し処理の最後に 1 ずつインクリメントされます。ループは、繰り返し処理の前に i が 10 かまたはそれ以上になったときに終了します。*/
var myarray = new Array();
for (i = 0; i < 10; i++) {
   myarray[i] = i;
}

必要条件

バージョン 1

参 照

for...in ステートメント | while ステートメント


for...in ステートメント

オブジェクトの各プロパティ、または配列の各要素に対して、1 つ以上のステートメントを実行します。

for (variable in [object | array])
   statements

引数

variable
必ず指定します。object のすべての要素を順に格納するために使用する変数を指定します。
object, array
省略可能です。反復処理の対象となるオブジェクトの名前または配列を指定します。
statements
省略可能です。object のプロパティまたは配列の各メンバに対して実行する 1 つ以上のステートメントを指定します。複合ステートメントを指定することもできます。

解説

ループの各反復処理の実行前に、object の次の要素または array の次の要素が variable に代入されます。この変数は、ループ内のステートメントで object のプロパティまたは array の要素と同様に処理を行うことができます。

オブジェクト全体に対して反復処理を行う場合は、オブジェクトのメンバが variable に代入される順序を指定したり変更したりすることはできません。

使用例

次のコードは、for ... in ステートメントで、オブジェクトを連想処理可能な配列として使用する例です。

function ForInDemo(){
   // 変数を作成します。
   var a, key, s = "";
   // オブジェクトを初期化します。
   a = {"a" : "アテネ" , "b" : "ベオグラード", "c" : "カイロ"}
   // プロパティを繰り返し実行します。
   for (key in a)   {
      s += a[key] + "&ltBR>";
   }
   return(s);
}
メモ コレクションのメンバに対して反復処理を行う場合は、enumerator オブジェクトを使用します。

必要条件

バージョン 5

参 照

for ステートメント | while ステートメント


function ステートメント

新しい関数を宣言します。

function functionname([arg1 [, arg2 [,...[, argN]]]])
{
   statements
}

引数

functionname
必ず指定します。関数の名前を指定します。
arg1...argN
省略可能です。関数に渡される引数を指定します。複数の引数を指定する場合は、カンマで区切ります。
statements
省略可能です。1 つ以上の JScript ステートメントを指定します。

解説

function ステートメントは、関数を宣言するときに使用します。statements に記述したコードは、スクリプトで他の場所からこの関数が呼び出されるまでは実行されません。

使用例

次のコードは、function ステートメントの使用例です。

function myfunction(arg1, arg2){
   var r;
   r = arg1 * arg2;
   return(r);
}
メモ 関数を呼び出すときは、必須の引数とかっこを記述してください。かっこを付けずに関数を呼び出すと、関数の結果ではなく、関数のテキストが返されます。

必要条件

バージョン 1

参 照

new 演算子


if...else ステートメント

条件式の値を評価し、条件に応じて適切なステートメントを実行します。

if (condition)
   statement1
[else
   statement2]

引数

condition
必ず指定します。任意のブール式を指定します。この式が null または undefined を持つ場合は、偽 (false) となります。
statement1
省略可能です。condition が真 (true) の場合に実行するステートメントを指定します。複合ステートメントを指定することもできます。
statement2
省略可能です。condition が偽 (false) の場合に実行するステートメントを指定します。複合ステートメントを指定することもできます。

解説

statement1 および statement2 に対し、必ず中かっこ ( { } ) で囲む習慣を付けておくと、コードが読みやすくなり、不注意によるエラーも減らすことができます。

使用例

たとえば、次のコード例のような場合、最初の if ステートメントに対して else を使用しているつもりでいても、実際には else は 2 つ目の if ステートメントに使用されます。

if (x == 5)
   if (y == 6)
      z = 17;
else
   z = 20;

次のコード例のように書き換えると、あいまいさを排除できます。

if (x == 5)
   {
   if (y == 6)
      z = 17;
   }
else
   z = 20;

また、statement1 へステートメントを単純に追加する場合でも、次のコード例のように、ステートメントだけ追加して中かっこを記述し忘れると、エラーが発生します。

if (x == 5)
   z = 7;
   q = 42;
else
   z = 19;

この場合は、if ステートメントと else ステートメントの間に複数のステートメントが記述されているため、構文エラーになります。if と else の間のステートメントを必ず中かっこで囲む必要があります。

必要条件

バージョン 1

参 照

条件演算子 (?:)


Labeled ステートメント

ステートメントの識別子を提供します。

label :
   statements

引数

label
必ず指定します。statement で指定したステートメントを参照するときに使用する、そのステートメント固有の識別子を指定します。
statements
省略可能です。label に関連する 1 つ以上のステートメントを指定します。

解説

ラベルは、break ステートメントまたは continue ステートメントを使用するときのジャンプ先とするステートメントを指定するために使用します。

使用例

次のコードは、continue ステートメントと共に labeled ステートメントを使用する例です。配列に値を代入する際に labeled ステートメントを利用して、各行の 3 列目の要素にだけ値を代入しません。

function labelDemo(){
   var a = new Array();
   var i, j, s = "", s1 = "";
   Outer:
      for (i = 0; i < 5; i++)
      {
         Inner:
            for (j = 0; j < 5; j++)
            {
               if (j == 2)
                  continue Inner;
               else
                  a[i,j] = j + 1;
            }
      }
      for (i = 0;i < 5; i++)
      {
         s = ""
         for (j = 0; j < 5; j++)
         {
            s += a[i,j];
         }
         s1 += s + "\n";
      }
      return(s1)
}

必要条件

バージョン 3

参 照

break ステートメント | continue ステートメント


return ステートメント

現在の関数の実行を終了し、関数から戻り値を返します。

return[(][expression][)];

省略可能な引数 expression には、関数の戻り値を指定します。省略した場合、関数は戻り値を返しません。

解説

return ステートメントを使用すると、関数の実行を中止し、expression の値を返すことができます。expression を省略した場合および関数内で return ステートメントが実行されなかった場合は、関数を呼び出した式には undefined が代入されます。

使用例

次のコードは、return ステートメントの使用例です。

function myfunction(arg1, arg2){
   var r;
   r = arg1 * arg2;
   return(r);
}

必要条件

バージョン 1

参 照

function ステートメント


switch ステートメント

指定した式の値がラベルと一致したときに 1 つ以上のステートメントを実行する機能を提供します。

switch (expression) {
   case label :
       statementlist
   case label :
       statementlist
   ...
   default :
       statementlist
}

引数

expression
評価される式を指定します。
label
expression に指定した式と一致するかどうかを調べられる識別子を指定します。label === expression が成立すると、コロンの直後の statementlist の実行が開始され、break ステートメント (省略可能です) が見つかった箇所か、switch ステートメントの最後まで実行が続行されます。
statementlist
実行する 1 つ以上のステートメントを指定します。

解説

どのラベルの値も式の値と一致しなかった場合に実行するステートメントを指定するには、default 句を使用します。default 句は、switch コード ブロック内のどこでも記述できます。

label で指定するブロックの数に制限はありません。また 1 つも指定しない場合も可能です。式の値がどのラベルの値も一致せず、default 句を指定していなかった場合は、ステートメントは何も実行されません。

switch ステートメントでの実行の流れは次のようになります。

  • expression に指定した式が評価され、この式に一致するラベルが見つかるまで、順序どおりにラベルが評価されます。
  • 式と一致するラベルがあれば、その直後に記述された statementlist が実行されます。
    実行は、break ステートメントが実行されるか、switch ステートメントが終了するまで続行されます。つまり、break ステートメントを記述しなければ、複数のラベル ブロックが実行されます。
  • 式と一致するラベルが 1 つもなければ、default 句へ進みます。default 句がなければ、最後の処理へ進みます。
  • switch コード ブロックの後ろに続くステートメントの実行が続行されます。

使用例

次のコードは、switch ステートメントを使ってオブジェクトの種類を調べる例です。

function MyObject() {
...}

switch (object.constructor){
   case Date:
   ...
   case Number:
   ...
   case String:
   ...
   case MyObject:
   ...
   default:
   ...
}

必要条件

バージョン 3

参 照

break ステートメント | if...else ステートメント


this ステートメント

現在のオブジェクトを返します。

this.property

必須の引数 property は、現在のオブジェクトのプロパティの 1 つです。

解説

通常、キーワード this は、現在のオブジェクトを参照するオブジェクト コンストラクタで使用されます。

使用例

次のコードは、this ステートメントを使って新しく作成された Car オブジェクトを示している例です。このコードでは、3 つのプロパティに値を代入しています。

function Car(color, make, model){
   this.color = color;
   this.make = make;
   this.model = model;
}

JScript のクライアント版のとき、どのオブジェクトのコンテキストでもない場合、this ステートメントは現在のウィンドウを表す window オブジェクトを示します。

必要条件

バージョン 1

参 照

new 演算子


throw ステートメント

try...catch...finally ステートメントで処理できるエラー条件を生成します。

throw exception

必須の引数 exception には、任意の式を指定できます。

解説

次のコードは、渡された値に基づいてエラーをスローし、そのエラーを try...catch...finally ステートメントの階層で処理する例です。

function TryCatchDemo(x){
   try {
      try {
      if (x == 0)   // 引数を評価します。
         throw "x equals zero";   // エラーをスローします。
      else
         throw "x does not equal zero";   // 別のエラーをスローします。
      }
      catch(e) {   // "x = 0" のエラーを処理します。
         if (e == "x equals zero")   // 処理対象のエラーかどうかを判断します。
            return(e + " はローカルに処理されます。");   // オブジェクトにエラーメッセージを返します。
         else   // エラーを処理できません。
            throw e;   // 次のエラー ハンドラに
      }   // エラーを再度スローします。
   }
   catch(e) {   // 他のエラーを処理します。
      return(e + " は上位の階層で処理されます。");   // エラー メッセージを返します。
   }
}
document.write(TryCatchDemo(0));
document.write(TryCatchDemo(1));

必要条件

バージョン 5

参 照

try...catch ステートメント


try...catch...finally ステートメント

JScript のエラー処理機能を実装します。

try {
   tryStatements}
catch(exception){
   catchStatements}
finally {
   finallyStatements}

引数

tryStatements
必ず指定します。エラーが発生する可能性のあるステートメントを指定します。
exception
必ず指定します。任意の変数の名前を指定します。exception の初期値は、スローされたエラーの値です。
catchStatements
省略可能です。tryStatement で発生しているエラーを処理するためのステートメントを指定します。
finallyStatements
省略可能です。他のエラー処理がすべて発生すると無条件に実行されるステートメントを指定します。

解説

try...catch...finally ステートメントを使用すると、指定した範囲のコードで発生したエラーの一部または全部を、コードを実行しながら処理できます。プログラマによって対処されていないエラーが発生した場合は、エラー処理が存在しなかったかのように、通常のエラー メッセージが表示されます。

引数 tryStatements にはエラーが発生する可能性のあるコードを指定し、引数 catchStatements には発生したエラーを処理するコードを指定します。tryStatements でエラーが発生した場合、catchStatements にプログラムの処理が渡されます。exception の初期値は、tryStatements で発生したエラーの値です。エラーが発生しないと、catchStatements は実行されません。

tryStatements で発生したエラーが、tryStatements に関連付けられている catchStatements で処理できない場合は、そのエラーをより上位のエラー ハンドラに throw ステートメントで通知するかまたは再度スローしてください。

tryStatements のすべてのステートメントが実行され catchStatements で任意のエラー処理が発生すると、finallyStatements のステートメントが無条件に実行されます。

return ステートメントが try ブロックまたは catch ブロックで発生した場合でも、catch ブロックがエラーを再度スローした場合でも、finallyStatements のコードは実行されます。ただし、catch ブロックで実行時エラーが起きた場合のように、処理されないエラーが発生した場合はこの限りではありません。

使用例

JScript の例外処理の例を次に示します。

try {
  print("Outer try running..");
  try {
    print("Nested try running...");
    throw "an error";
  }
  catch(e) {
    print("Nested catch caught " + e);
    throw e + " re-thrown";
  }
  finally {
    print("Nested finally is running...");
  }
}
catch(e) {
  print("Outer catch caught " + e);
}
finally {
  print("Outer finally running");
}
// これを変更し、Windows Script Host で WScript.Echo(s) を表示できるようにします。
function print(s){
   document.write(s);
}

これによって次が出力されます。

Outer try running..
Nested try running...
Nested catch caught an error
Nested finally is running...
Outer catch caught an error re-thrown
Outer finally running

必要条件

バージョン 5

参 照

throw ステートメント


var ステートメント

変数を宣言します。

var variable1 [ = value1 ] [, variable2 [ = value2], ...]

引数

variable1, variable2
必ず指定します。宣言する変数の名前を指定します。
value1, value2
必ず指定します。変数に代入する初期値を指定します。

解説

変数を宣言するには、var ステートメントを使用します。これらの変数は、宣言の際に値に代入される場合と、スクリプトで後から代入される場合があります。

使用例

次のコードは、var ステートメントの使用例です。

var index;
var name = "Thomas Jefferson";
var answer = 42, counter, numpages = 10;

必要条件

バージョン 1

参 照

function ステートメント | new 演算子


while ステートメント

指定した条件が偽 (false) になるまでステートメントを繰り返し実行します。

while (expression)
   statements

引数

expression
必ず指定します。ループの各反復処理の前に調べるブール式を指定します。この式の評価が真 (true) の場合は、ループが実行されます。偽 (false) の場合は、ループ処理を終了します。
statements
省略可能です。expression の評価が真 (true) の場合に実行される 1 つ以上のステートメントを指定します。

解説

while ステートメントでは、ループが初めて実行される前に expression が調べられます。この時点で expression の評価が偽 (false) の場合は、ループは一度も実行されません。

使用例

次のコードは、while ステートメントの使用例です。

function BreakTest(breakpoint){
   var i = 0;
   while (i < 100)
   {
   if (i == breakpoint)
      break;
      i++;
   }
   return(i);
}

必要条件

バージョン 1

参 照

break ステートメント | continue ステートメント | do...while ステートメント | for ステートメント | for...in ステートメント


with ステートメント (Jscript)

JScript

with ステートメント

ステートメントで使用する既定のオブジェクトを設定します。

with (object)
   statements

引数

object
新しい既定のオブジェクトを指定します。
statements
object を既定のオブジェクトとして使用する 1 つ以上のステートメントを指定します。

解説

一般に、with ステートメントは特定の場面で、記述するコードの量を少なくするために使用します。たとえば、次のコードは Math を繰り返し使用する例です。

x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10)
y = Math.tan(14 * Math.E)

with ステートメントを使用すると、次のように簡単で読みやすいコードになります。

with (Math){
   x = cos(3 * PI) + sin (LN10)
   y = tan(14 * E)
}

必要条件

バージョン 1

参 照

this ステートメント


VBScript

VBScipt ユーザーズ ガイド

VBScript ランゲージ リファレンス


VBScript ユーザーズ ガイド

VBScript の概要

HTML に VBScript コードを記述する

VBScript の基本

VBScript のデータ型

VBScript の変数

VBScript の定数

VBScript の演算子

VBScript の条件制御

VBScript のループ制御

VBScript のプロシージャ

VBScript のコード記述規則


VBScript の概要

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) は、広範囲の環境下でアクティブなスクリプト処理を実現します。Microsoft Internet Explorer (以下 Internet Explorer) は、Web クライアント スクリプト処理を行い、Microsoft Internet Information Service (以下 Internet Information Service) は、Web サーバー スクリプト処理を行います。

使い方と学び方は簡単

VBScript は、Visual Basic と Visual Basic for Applications (以下 VBA) を既に知っている人にとっては、とても親しみやすい言語です。たとえ Visual Basic を知らない人でも一度学べば、Visual Basic 言語シリーズのプログラミング方法について理解できることでしょう。ここに用意した Web ページだけでも、VBScript について知ることができますが、詳細なプログラミングの手法については記述されていません。プログラミングの詳細については、Visual Basic 4.0 (以下 VB4) に付属する『プログラミング ガイド』やアスキー出版局刊の『Visual Basic 4 オフィシャルコースウェア』などを参照してください。

Windows Script

VBScript は、Windows Script を使用してホスト アプリケーションと対話します。Windows Scriptを使用すると、ブラウザやほかのホスト アプリケーションで、各スクリプト コンポーネントのための特別な統合コードを記述する必要がありません。Windows Scriptでは、ホスト アプリケーションのスクリプトのコンパイル、さらにエントリ ポイントの取得と呼び出しを可能とし、開発者に対してネームスペースの使用を提供します。ユーザーは Windows Script に対応することで、スクリプトを実行する標準言語を開発できます。マイクロソフトでは、実行時にサポートする VBScript を用意しています。また、マイクロソフトは、Windows Script の標準を決めるためにさまざまなインターネット グループと取り組んできました。現在、Windows Script は、Microsoft® Internet Explorer および Microsoft® Internet Information Service で使用されています。

他のアプリケーションとブラウザの中の VBScript

マイクロソフトは、VBScript を使用した製品に対して、無料で VBScript のソース ライセンスを提供します。また、マイクロソフトは、Windows® 版 (16 ビット/32 ビット) および Macintosh® 版のバイナリ モジュールも提供します。VBScript は、WWW (World Wide Web) ブラウザと統合され、アクティブな HTML ドキュメント中に埋め込まれた ActiveX コントロールや別のオブジェクトを操作できるよう設計されています。VBScript と Windows Script は、スクリプト言語エンジンとして幅広く他のアプリケーション間で使用できます。


HTML に VBScript コードを記述する

<SCRIPT> タグを使用すると、HTML に VBScript コードを記述できます。

<SCRIPT> タグ

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) コードは、<SCRIPT></SCRIPT> タグを使用して記述します。たとえば、配達日をテストするプロシージャは、次のコード例のように記述します。

<SCRIPT LANGUAGE="VBScript">
<!--
   Function CanDeliver(Dt)
      CanDeliver = (CDate(Dt) - Now()) > 2
   End Function
-->
</SCRIPT>

上の例では、SCRIPT の開始 (<SCRIPT>) と終了 (</SCRIPT>) のタグで VBScript コードが囲まれています。LANGUAGE 属性は使用するスクリプト言語を示しています。ブラウザは、ほかのスクリプト言語を使用することもできるので、使用言語は必ず指定する必要があります。CanDeliver 関数がコメント タグ (<!-- および -->) 内に埋め込まれていることに注意してください。これは、<SCRIPT> タグに対応していないブラウザが VBScript コードを表示するのを防いでいます。

上の例は、特定のコントロールと結び付けられていない一般的な関数なので、次のコード例のようにページの <HEAD> セクションに含めることができます。

<HTML>
<HEAD>
<TITLE>配達日の指定</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
   Function CanDeliver(Dt)
      CanDeliver = (CDate(Dt) - Now()) > 2
   End Function
-->
</SCRIPT>
</HEAD>
<BODY>
...

SCRIPT ブロックは、ページ内のどこにでも使用できるので、<BODY> セクションと <HEAD> セクションの両方にも SCRIPT ブロックを追加できます。ただし、すべてのコードをまとめておくために、用途の広いスクリプト コードについては、<HEAD> セクション内に記述してください。<HEAD> セクション内に記述されたコードは、すべて読み込まれ、最初に解読されます。その後で <BODY> セクション内で呼び出されます。

この規則に対して 1 つの注目すべき例外があります。フォームのオブジェクトのイベントに返答するようにフォーム内にインラインのスクリプト コードを記述する場合です。たとえば、次に示すコード例のように、フォーム内のボタンをクリックするたびに返答するスクリプト コードを埋め込む場合です。

<HTML>
<HEAD>
<TITLE>ボタン イベントのテスト</TITLE>
</HEAD>
<BODY>
<FORM NAME="Form1">
   <INPUT TYPE="Button" NAME="Button1" VALUE="Click">
   <SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">
      MsgBox "ボタンがクリックされました !"
   </SCRIPT>
</FORM>
</BODY>
</HTML>

スクリプト コードは、その多くが Sub または Function プロシージャ内のどちらかに記述されています。そして、記述されたスクリプト コードが呼び出されるのは、そのスクリプト コードが指定されたときのみです。ただし、SCRIPT ブロック内であれば、スクリプト コードをプロシージャの外にも記述できます。この場合のスクリプト コードは、HTML ページがロードされたとき、一度だけ実行されます。このようなコードは、HTML ページがロードされたとき、データを初期化するか、または Web ページのようすを動的に変更する場合に使用できます。


VBScript の機能で VBA に含まれていない機能

次の表は、VBA (Visual Basic for Applications) に含まれていない VBScript 機能の一覧です。

種類 | 機能/キーワード
オブジェクト | RegExp
スクリプト エンジン ID | ScriptEngine ScriptEngineBuildVersion ScriptEngineMajorVersion ScriptEngineMinorVersion
宣言 | Class
その他 | Eval Execute


VBA の機能で VBScript に含まれていない機能

次の表は、 VBScript に含まれていない VBA (Visual Basic for Applications) 機能の一覧です。

種類 | 含まれていない機能/キーワード
Select Case ステートメント | キーワード Is または比較演算子が含まれる式 キーワード To を使う値の範囲の指定が含まれる式
エラー処理 | Erl 関数 Error ステートメント Resume ステートメント、Resume Next ステートメント
演算子 | Like 演算子
オブジェクト | Clipboard オブジェクト Collection オブジェクト
オブジェクトの使用 | 演算子を使用したコレクションへの参照
オブジェクト操作 | キーワード TypeOf
コレクション | Add メソッド、Count プロパティ、Item メソッド、Remove メソッド ! 演算子を使用したコレクションへの参照
財務処理 | すべての財務処理関数
条件分岐 | #Const ディレクティブ #If...Then...#Else ディレクティブ
制御構造 | DoEvents 関数 GoSub...Return ステートメント、GoTo ステートメント On Error GoTo ステートメント On...GoSub ステートメント、On...GoTo ステートメント 行番号、行ラベル
宣言 | Declare ステートメント (DLL 参照のための宣言) キーワード Optional キーワード ParamArray Static ステートメント
ダイナミック データ エクスチェンジ (DDE) | LinkExecute メソッド、LinkPoke メソッド、LinkRequest メソッド、LinkSend メソッド
データ型 | バリアント型 (Variant) を除くすべての組み込みデータ型 Type...End Type ステートメント
デバッグ | Debug.Print End ステートメント、Stop ステートメント
配列 | Option Base ステートメント 0 以外のインデックスの最小値を指定した配列の宣言
日付と時刻 | Date ステートメント、Time ステートメント
その他 | Deftype ステートメント Option Base ステートメント Option Compare ステートメント Option Private Module ステートメント
ファイル入出力 | すべてのファイルの入出力機能
変換 | CVar 関数、CVDate 関数 Str 関数、Val 関数
文字列 | 固定長文字列 LSet ステートメント、RSet ステートメント Mid ステートメント StrConv 関数


VBScript の基本

VBScript のデータ型

VBScript の変数

VBScript の定数

VBScript の演算子

VBScript の条件制御

VBScript のループ制御

VBScript のプロシージャ

VBScript のコード記述規則


VBScript を使用した簡単なページの例

簡単なページの例

Microsoft® Internet Explorer (以下 Internet Explorer) を使用すると、次の HTML のコードで記述されたページを表示できます。ページ上のボタンをクリックすると、Microsoft Visual Basic® Scripting Edition (以下 VBScript) の動作を体験できます。

<HTML>
<HEAD><TITLE>A Simple First Page</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Button1_OnClick
   MsgBox "おや ? 不思議 !"
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<H3>A Simple First Page</H3><HR>
<FORM><INPUT NAME="Button1" TYPE="BUTTON" VALUE="ここをクリックしてください。"></FORM>
</BODY>
</HTML>

Internet Explorer でこのページを読み込んだとき、Internet Explorer は <SCRIPT> タグを見つけると、VBScript のコードを保存します。ボタンをクリックした場合、Internet Explorer は、ボタンと保存した VBScript のコードを関連付けて、プロシージャを実行します。

<SCRIPT> タグ内の Sub プロシージャは、"イベント プロシージャ" です。プロシージャ名には、ボタン名 Button1 (<INPUT> タグ内の NAME 属性からの値) とイベント名 OnClick の 2 つの要素があることに注意してください。この 2 つの要素は、アンダースコア (_) で 1 つに結び付けられています。ボタンをクリックするたびに Internet Explorer が正しいイベント プロシージャ Button1_OnClick を検索し、実行します。

Internet Explorer defines the events available for form controls in the Internet Explorer Scripting Object Model documentation, which can be found on the Microsoft®Microsoft® Web site (http://www.microsoft.com).

また、ページ内で、コントロールとプロシージャを組み合わせて使用することも可能です。「VBScript とフォーム」では、ページ内のコントロール間での簡単な相互作用の例を示しています。

コードをイベントと結び付ける別の方法

前の方法が最も簡単で一般的ですが、別の 2 とおりの方法で VBScript のコードをイベントに結び付けることができます。Internet Explorer は、コントロールを定義したタグ内に短いコードを追加できます。たとえば、次に示す <INPUT> タグの例は、ボタンをクリックした場合、上のコードの例と同じ動作をします。

<INPUT NAME="Button1" TYPE="BUTTON"
   VALUE="ここをクリックしてください。" OnClick='MsgBox "おや ? 不思議 !"'>

この例では、関数がシングル クォーテーション (') で囲まれた関数自身を呼び出し、さらにダブル クォーテーション (") で囲まれた MsgBox 関数の文字列を呼び出すことに注意してください。また、コロン (:) でステートメントを区切れば、複数のステートメントを記述できます。

指定したコントロールに特定のイベントのみを適用するために <SCRIPT> タグを記述することもできます。

<SCRIPT LANGUAGE="VBScript" EVENT="OnClick" FOR="Button1">
<!--
   MsgBox "おや ? 不思議 !"
-->
</SCRIPT>

このとき、<SCRIPT> タグには既にイベントとタグが指定されているので、Sub ステートメントと End Sub ステートメントは使用できません。


VBScript の機能

次の表は、VBScript 機能の一覧です。

種類 | キーワード
エラー処理 | On Error Err
演算子 | 加算 (+)、減算 (-) 指数演算 (^) 剰余演算 (Mod) 乗算 (*)、除算 (/) 整数除算 (\) マイナス符号 (-) 文字列連結 (&) 等しい (=)、等しくない (<>) より小さい (<)、以下 (<=) より大きい (>)、以上 (>=) Is And、Or、Xor Eqv、Imp
オブジェクト | CreateObject Err Object GetObject RegExp
コメント | シングル クォーテーション (') または Rem
式 | Eval Execute RegExp Replace Test
数値演算 | Atn、Cos、Sin、Tan Exp、Log、Sqr Randomize、Rnd
数値演算関数 | Abs Int、Fix、Round Sgn
スクリプト エンジン ID | ScriptEngine ScriptEngineBuildVersion ScriptEngineMajorVersion ScriptEngineMinorVersion
制御構造 | Do...Loop For...Next For Each...Next If...Then...Else Select Case While...Wend With
宣言 | Class Const Dim、Private、Public、ReDim Function、Sub Property Get、Property Let、Property Set
代入 | Set
定数/リテラル | Empty Nothing Null True、False
入出力 | InputBox LoadPicture MsgBox
配列 | Array Dim、Private、Public、ReDim IsArray Erase LBound、UBound
バリアント | IsArray IsDate IsEmpty IsNull IsNumeric IsObject TypeName VarType
日付/時刻 | Date、Time DateAdd、DateDiff、DatePart DateSerial、DateValue Day、Month、MonthName Weekday、WeekdayName、Year Hour、Minute、Second Now TimeSerial、TimeValue
表示形式 | FormatCurrency FormatDateTime FormatNumber FormatPercent
プロシージャ | Call Function、Sub Property Get、Property Let、Property Set
変換 | Abs Asc, AscB, AscW Chr, ChrB, ChrW CBool、CByte CCur、CDate CDbl、CInt CLng、CSng、CStr DateSerial、DateValue Hex、Oct Fix、Int Sgn TimeSerial、TimeValue
変数の宣言 | Option Explicit
文字列 | Asc、AscB、AscW Chr、ChrB、ChrW Filter、InStr、InStrB InStrRev Join Len、LenB LCase、UCase Left、LeftB Mid、MidB Right、RightB Replace Space Split StrComp String StrReverse LTrim、RTrim、Trim
リテラル | Empty False Nothing Null True
その他 | Eval 関数 Execute ステートメント RGB 関数


VBScript のデータ型

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) では、バリアント型 (Variant) と呼ばれるデータ型のみを使用します。バリアント型 (Variant) は、異なる種類の情報を含めることができる特殊なデータ型です。VBScript でのデータ型は、バリアント型 (Variant) ただ 1 つのなので、VBScript の関数の戻り値のデータ型もすべてバリアント型 (Variant) になります。

さらに、バリアント型 (Variant) は、数値と文字列のいずれの情報も含めることができます。バリアント型 (Variant) は、数値が使用されているときは数字として、文字列が使用されているときは文字列として、使用状況に応じて処理されます。VBScript は、数字と思われる情報を処理する場合、その情報を数字とみなし、数字として最も適切な処理を行います。また、文字列と思われる情報を処理する場合も、同様です。ただし、数字をダブル クォーテーション (" ") で囲めば、常に文字列として処理されます。

内部処理形式

バリアント型 (Variant) は、指定された数値情報が、文字列でも、単純な数値でもない場合、たとえば、日付または時間を表す数値情報などは、明確に区別して持つことができます。この場合、結果は常に日付または時間として表示されます。また、バリアント型 (Variant) は、ブール型 (Variant) から倍精度浮動小数点型 (Double) まで、多様な種類の情報を持つことができます。バリアント型 (Variant) として持つことのできる異なる分類の情報は "内部処理形式" と言います。ほとんどの場合、必要とする情報の種類は、バリアント型 (Variant) として最も効率のよいデータ型に内部変換して持つことができます。

次の表は、バリアント型 (Variant) で格納できる内部処理形式データの一覧です。

内部処理形式 | 内容
Empty 値 | Empty 値は、初期化されていない (初期値が代入されていない) バリアント型 (Variant) の変数を示します。その値は、数値変数として使用されるときは 0、文字列変数として使用されるときは長さ 0 の文字列 ("") として扱われます。
Null 値 | Null 値は、初期値として有効なデータを持たないバリアント型 (Variant) の変数を表します。
ブール型 (Boolean) | 真 (True) または偽 (False) の値を持つデータ型です。
バイト型 | 0 ～ 255 の範囲の整数値を持つデータ型です。
整数型 | -32.768 ～ 32.767 の範囲の整数値を持つデータ型です。
通貨型 (Currency) | -922,337,203,685,477.5808 ～ 922,337,203,685,477.5807 の範囲の値を持つデータ型です。
長整数型 | -2,147,483,648 ～ 2,147,483,647 の範囲の整数値を持つデータ型です。
単精度浮動小数点数型 | -3.402823E38 ～ -1.401298E-45 (負の値) および 1.401298E-45 ～ 3.402823E38 (正の値) の範囲の単精度浮動小数点数を持つデータ型です。
倍精度浮動小数点数型 | -1.79769313486232E308 ～ -4.94065645841247E-324 (負の値) および 4.94065645841247E-324 ～ 1.79769313486232E308 (正の値) の範囲の倍精度浮動小数点数を持つデータ型です。
日付 (時刻) 型 | 西暦 100 年 1 月 1 日～西暦 9999 年 12 月 31 日の日付を表す数字を持つデータ型です。
文字列型 | 約 2GB までの文字を格納できる可変長文字列を持つデータ型です。
オブジェクト型 | オブジェクトを参照するデータ型です。
エラー型 | エラー番号を持つデータ型です。

変換関数を使用すると、内部処理形式を現在の形式から別の形式に変換できます。さらに、VarType 関数を使用すると、バリアント型 (Variant) として格納されているデータの内部処理形式を調べることができます。


VBScript の変数

普通、スクリプトの実行中に変更するプログラム情報は、コンピュータのメモリ上に保存されます。変数とは、そのメモリ上の位置を参照できる便利なプレースホルダです。たとえば、ある Web ページ上のオブジェクトをユーザーがクリックする回数を書き込むため、ClickCount プロシージャを呼び出す変数を作成するとします。このとき、変数が、コンピュータのメモリ上のどこに配置されるかを考える必要はありません。大切なことは、変数の値を参照したり、変更したりするときには、変数の名前を使用するということです。なお、Microsoft® Visual Basic® Scripting Edition (以下 VBScript) では、変数のデータ型は常にバリアント型 (Variant) です。

変数の宣言

変数は、スクリプトの中では、次のコード例のように Dim ステートメント、Public ステートメント、および Private ステートメントを使用して明示的に宣言します。次にコード例を示します。

Dim DegreesFahrenheit

変数が複数あるときは、次のコード例のようにカンマ (,) で区切って宣言します。次にコード例を示します。

Dim Top, Bottom, Left, Right

スクリプトの中で変数名を使えば、暗黙的な変数として変数を簡単に宣言できます。しかし、これは一般的に良い方法ではありません。なぜなら記述ミスをした場合、スクリプトの実行時に予期せぬ結果を引き起こす場合があるからです。こうした理由からすべての変数を明示的に宣言する必要があるときには、Option Explicit ステートメントを使用します。Option Explicit ステートメントは、スクリプト内の 1 行目のステートメントに記述します。

変数の名前付けの制限

変数の名前は、VBScript の標準的な名前付けの規則に従って指定してください。変数名は、次に示す条件を満たす必要があります。

  • 変数名の先頭文字は、アルファベットであること。
  • 変数名には、ピリオドを使用しないこと。
  • 変数名は、255 文字以内 (半角の場合) であること。
  • 変数宣言を行った適用範囲内で同じ変数名を複数使用しないこと。

変数の適用範囲と有効期間

変数の適用範囲は、変数を宣言した位置で決まります。一般にプロシージャ内部で変数を宣言した場合、その変数は宣言したプロシージャ内でのみ有効です。このような変数はプロシージャ レベル変数といい、ローカルな適用範囲 (スコープ) を持ちます。一方、プロシージャの外部で変数を宣言した場合、その変数は宣言したスクリプト内のすべてのプロシージャに対して有効です。このような変数はスクリプト レベル変数といい、スクリプト レベルでの適用範囲を持ちます。

変数の "有効期間" は、変数がどれくらいの期間有効であるかに依存します。スクリプト レベル変数の有効期間は、スクリプトで宣言されてからスクリプトの実行が終了するまでです。プロシージャ レベル変数の有効期間は、プロシージャ内にいる間だけです。プロシージャが終了すると、変数は破棄されます。ローカル変数の適用範囲は、変数宣言ステートメントがプロシージャを開始したときが始まりで、プロシージャが終了したときが終わりになります。変数は宣言されたプロシージャ内でのみ認識されるため、複数のプロシージャでそれぞれ同名のローカル変数を使用できます。

変数に値を代入する

変数に値を代入するには、次のコード例のように変数を式の左側に置き、変数に割り当てたい値を式の右側に置きます。次にコード例を示します。

B = 200

スカラ変数と配列変数

多くの場合、宣言した変数には、単に 1 つの値を割り当てることになります。このような単一の値を持つ変数は "スカラ変数" と言います。また、1 つの変数に 1 つ以上の関連する値を割り当てることもできます。このような連続する値を持つ変数は "配列変数" と言います。配列変数は、スカラ変数と同じ方法で宣言されます。違いは、配列変数の宣言では、変数名にかっこを付けて使用することです。次のコード例では、11 個の要素を持つ 1 次元配列が宣言されています。

Dim A(10)

VBScript では、すべての配列は、0 から起算されます。したがって、上の例では、かっこ内に指定された数が 10 であるにもかかわらず、実際には 11 個の要素を持つ配列が宣言されていることになります。0 起算配列では、配列の要素数は、常にかっこ内の数に 1 を加算した数になります。この種類の配列を "固定サイズ配列" と言います。

インデックスを持った配列を使用すると、配列の各要素にデータを割り当てることができます。0 から始まり、10 で終わる配列の場合、次のコード例のようにして配列の要素にデータを割り当てます。

A(0) = 256
A(1) = 324
A(2) = 100
 . . .
A(10) = 55

同様に、次のコード例のようにすると、インデックスを持った配列から必要とする配列要素のデータを取り出すことができます。次にコード例を示します。

 . . .
SomeVariable = A(8)
 . . .

配列は、1 次元だけではなく、60 次元まで宣言できます。ただし、3 次元、4 次元と大きくなると理解が困難になってきます。複数の次元を持つ配列は、かっこ内の配列サイズ数をカンマ (,) で区切って宣言します。次のコード例では、6 行と 11 列から成る 2 次元配列の MyTable 変数が宣言されています。

Dim MyTable(5, 10)

2 次元配列では、最初の数字が行数で、2 番目の数が列数を表します。

スクリプトの実行中にサイズを変更する配列も宣言できます。このような配列は "動的配列" と言います。動的配列も Dim ステートメントまたは ReDim ステートメントを使用してプロシージャの最初に宣言します。ただし、動的配列の宣言には、次のコード例のように、かっこの中に配置する配列サイズと次元数がありません。次にコード例を示します。

Dim MyArray()
ReDim AnotherArray()

動的変数を使用するには、すぐ後に ReDim ステートメントを使用して次元数とサイズを設定する必要があります。次のコード例では、ReDim ステートメントは、動的配列の初期サイズに 25 を設定しています。続く ReDim ステートメントで配列のサイズを 30 に変更しています。サイズ変更を行った配列に要素を再保存するには Preserve キーワードを使用します。

ReDim MyArray(25)
 . . .
ReDim Preserve MyArray(30)

動的配列でサイズを変更できる回数に制限はありません。ただし、配列のサイズを現在より小さく設定変更すると、配列要素に格納されているデータを失う場合があります。


VBScript の定数

"定数" とは、数字または文字列の代わりに使用される名前のことで、その値は不変です。現在、Microsoft® Visual Basic® Scripting Edition (以下 VBScript) には、多くの組み込み定数が定義されています。組み込み定数の詳細については、「ランゲージ リファレンス」を参照してください。

定数の作成

Const ステートメントを使用すると、ユーザー独自の定数を VBScript に定義できます。また、次のコード例のように、意味を持った文字列や数値をリテラル値として定数に割り当てることもできます。次にコード例を示します。

Const MyString = "ユーザー定義文字列"
Const MyAge = 49

リテラル文字列は、上の例のように、ダブル クォーテーション (") で囲みます。文字列の値と数値には、ダブル クォーテーションを使用して、明確に区別します。日付リテラルおよび時間リテラルは、次のコード例のように、シャープ記号 (#) で囲んで表します。次にコード例を示します。

Const CutoffDate = #6-1-97#

定数と変数は、名前付け規則を採用して明確に区別してください。定数と変数を明確に区別することで、スクリプトの実行中に定数の値が割り当てられるのを防ぐことができます。たとえば、ユーザー定義の定数名に "vb" または "con"というプリフィックスを使用したり、大文字の文字列で定数名を付けたりします。定数と変数を区別しておくと、より複雑なスクリプトに変更した場合でも混乱を避けることができます。


VBScript の演算子

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) には、算術演算子、比較演算子、文字列連結演算子、および論理演算子を含む広範囲に及ぶ演算子が用意されています。

演算子の優先順位

1 つの式の中で複数の演算が実行されるとき、式の各部分の演算子は一定の順序に従って評価され、演算が実行されます。この順序を演算子の優先順位と呼びます。かっこを使用すると、演算子の優先順位と関係なく、かっこの内側の演算は、かっこの外側の演算よりも先に実行されます。ただし、かっこの内側の演算子には通常の優先順位が適用されます。

異なる種類の演算子が 1 つの式の中で使用されているとき、式の各部分の演算子が評価され、演算が実行される順序は、算術演算子、比較演算子、論理演算子の順になります。また、比較演算子では、優先順位はすべて同等の評価です。したがって、比較演算子が使用された式での評価は、左から右の順となります。次の表は、算術演算子と論理演算子を優先順位の評価の高い順に上から並べています。

算術演算子

内容 | 記号
指数演算 | ^
マイナス符号 | -
乗算 | *
除算 | /
整数除算 | \
剰余演算 | Mod
加算 | +
減算 | -
文字列連結 | &

比較演算子

内容 | 記号
等しい | =
等しくない | <>
より小さい | <
より大きい | >
以下 | <=
以上 | >=
オブジェクト等価比較 | Is

論理演算子

内容 | 記号
論理否定 | Not
論理積 | And
論理和 | Or
排他的論理和 | Xor
論理等価演算 | Eqv
論理包含演算 | Imp

1 つの式の中で乗算と除算の演算子が同時に使用されるとき、式の各部分のこれらの演算子は左から右の順で評価され、演算が実行されます。加算と減算の場合も、同様に左から右の順で評価されます。

文字列連結演算子 (&) は算術演算子ではありませんが、優先順位はどの算術演算子よりも低く、どの比較演算子よりも高くなります。Is 演算子は参照されているオブジェクトを比較する演算子です。この演算子は、オブジェクト自体やオブジェクトの値を比較するものではありません。2 つのオブジェクト変数が同じオブジェクトを参照しているかどうかを調べるだけです。


VBScript の条件制御

プログラムの実行を制御する

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) では、処理の決定や繰り返しの実行を制御するには、条件やループ (繰り返し処理) のステートメントを使用します。

  • If...Then...Else
  • Select Case

If...Then...Else ステートメントを使用する

If...Then...Else ステートメントは、条件の結果が真 (True) または偽 (False) のどちらになるかを評価し、その結果に応じて実行するステートメントを指定するときに使用します。通常、条件式には値や変数を比較するための比較演算子が使用されます。比較演算子については、「比較演算子」を参照してください。また、If...Then...Else ステートメントは、必要なレベルまで任意にネストできます。

条件が真の場合のステートメントの実行

条件が真 (True) のとき、1 つのステートメントだけを実行する場合は、次のコード例のように Else キーワードを省略して 1 行の構文にまとめた If...Then...Else ステートメントを使用します。

Sub FixDate()
    Dim myDate
    myDate = #2/13/95#
    If myDate < Now Then myDate = Now
End Sub

複数行のステートメントを実行する場合は、複数行の構文を使用する必要があります。この構文には、次のコード例のように End If ステートメントが含まれます。

Sub AlertUser(value)
   If value = 0 Then
      AlertLabel.ForeColor = vbRed
      AlertLabel.Font.Bold = True
      AlertLabel.Font.Italic = True
   End If
End Sub

条件結果に応じたステートメントの実行

条件の結果に応じて実行する 2 つのブロックのステートメントを記述する場合は、If...Then...Else ステートメントを使用します。次のコード例のように、条件が真 (True) のときには、あるブロックを実行し、偽 (False) のときには、別のブロックを実行します。

Sub AlertUser(value)
   If value = 0 Then
      AlertLabel.ForeColor = vbRed
      AlertLabel.Font.Bold = True
      AlertLabel.Font.Italic = True
   Else
      AlertLabel.Forecolor = vbBlack
      AlertLabel.Font.Bold = False
      AlertLabel.Font.Italic = False
   End If
End Sub

複数のステートメントのいずれかの実行

複数のステートメントのいずれかを実行する場合は、If...Then...Else ステートメントに ElseIf 句を記述します。次のコード例のように ElseIf 句を使用すると、さまざまな可能性を考慮してプログラムの実行経路を制御できます。次にコード例を示します。

Sub ReportValue(value)
   If value = 0 Then
      MsgBox value
   ElseIf value = 1 Then
      MsgBox value
   ElseIf value = 2 then
      Msgbox value
   Else
      Msgbox "値が有効範囲を超えています。"
   End If

ElseIf 句は、必要に応じていくつでも記述できます。ただし、複数の ElseIf 句を記述した If...Then...Else ステートメントでは、コードが読みにくくなることがあります。複数のステートメントのいずれかを実行する場合は、Select Case ステートメントを使用することをお勧めします。

Select Case ステートメントを使用する

複数のステートメント ブロックのいずれかを実行する場合は、If...Then...ElseIf ステートメントよりも Select Case ステートメントの構文が適しています。If...Then...Else ステートメントに比べ、Select Case ステートメントを使用した場合は、コードが読みやすく効率的になります。

次のコード例のように、Select Case ステートメントは一度だけ評価される単一の条件式をブロックの先頭に記述します。Select Case ステートメントでは、ブロックの先頭に記述した条件式の値と各 Case 句の値が比較され、値が一致した Case 句のステートメント ブロックが実行されます。

Select Case Document.Form1.CardType.Options(SelectedIndex).Text
   Case "MasterCard"
      DisplayMCLogo
      ValidateMCAccount
   Case "Visa"
      DisplayVisaLogo
      ValidateVisaAccount
   Case "American Express"
      DisplayAMEXCOLogo
      ValidateAMEXCOAccount
   Case Else
      DisplayUnknownImage
      PromptAgain
End Select

Select Case ステートメントの場合は、ブロックの先頭の条件式が 1 度だけ評価されることに注意してください。If...Then...ElseIf ステートメントの場合は、ElseIf ステートメントごとに異なる条件式が評価されます。If...Then...ElseIf ステートメントを Select Case ステートメントに記述し直すことができるのは、すべての ElseIf 句が同じ条件式による値を評価している場合だけです。


VBScript のループ制御

ステートメントのブロックを繰り返し実行するには、ループのステートメントを使用します。ループのステートメントには、条件の評価が真 (True)、または偽 (False) になるまでステートメントを繰り返し実行するループや、指定した回数だけステートメントを繰り返し実行するループなどがあります。

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) には、次に示すループのステートメントが用意されています。

  • Do...Loop:条件の評価が真 (True) の間、または真 (True) になるまで、ステートメントを繰り返し実行します。
  • While...Wend:条件の評価が真 (True) の間、ステートメントを繰り返し実行します。
  • For...Next:カウンタを使用し、指定した回数だけステートメントを実行します。
  • For Each...Next:コレクションの各項目または配列の各要素に対してステートメント グループを実行します。

Do...Loop ステートメントを使用する

Do...Loop ステートメントを使用すると、ステートメント ブロックを無限に実行できます。Do...Loop ステートメントは、条件の評価が真 (True) の間、または真 (True) になるまでステートメントを繰り返し実行します。

条件の評価が真の間の繰り返し実行

条件の評価が真の間、ステートメントを繰り返し実行する場合には、While キーワードを使用します。While キーワードを使用する条件の判定方法には、次のコード例のように 2 種類あります。1 つは、ループに入る前に条件を評価する方法です (最初の例)。もう 1 つは、ループが少なくとも 1 回実行された後に条件を評価する方法です (2 番目の例)。最初の例の ChkFirstWhile プロシージャでは、変数 myNum の値を 20 から 9 に変更すると、条件の評価が偽 (False) となり、ループのステートメントは 1 回も実行されません。2 番目の例の ChkLastWhile プロシージャでは、既に条件の評価が偽 (False) であっても、ループのステートメントは 1 回だけ実行されます。

Sub ChkFirstWhile()
   Dim counter, myNum
   counter = 0
   myNum = 20
   Do While myNum > 10
      myNum = myNum - 1
      counter = counter + 1
   Loop
   MsgBox "ループを " & counter & " 回実行しました。"
End Sub

Sub ChkLastWhile()
   Dim counter, myNum
   counter = 0
   myNum = 9
   Do
      myNum = myNum - 1
      counter = counter + 1
   Loop While myNum > 10
   MsgBox "ループを " & counter & " 回実行しました。"
End Sub

条件の評価が真になるまでの繰り返し実行

Until キーワードを使用して条件の評価が真になるまで繰り返し実行する場合には、次にような 2 つの方法があります。1 つは、ループに入る前に条件を評価する方法です (最初の例)。もう 1 つは、ループが少なくとも 1 回実行された後に条件を評価する方法です (2 番目の例)。いずれの方法も、条件の評価が偽 (False) である限りループのステートメントは繰り返し実行されます。

Sub ChkFirstUntil()
   Dim counter, myNum
   counter = 0
   myNum = 20
   Do Until myNum = 10
      myNum = myNum - 1
      counter = counter + 1
   Loop
   MsgBox "ループを " & counter & " 回実行しました。"
End Sub

Sub ChkLastUntil()
   Dim counter, myNum
   counter = 0
   myNum = 1
   Do
      myNum = myNum + 1
      counter = counter + 1
   Loop Until myNum = 10
   MsgBox "ループを " & counter & " 回実行しました。"
End Sub

ループ内からの Do...Loop ステートメントの終了

Do...Loop ステートメントを終了する場合には、Exit Do ステートメントを使用します。通常、ループは、特定の条件の場合 (無限ループを回避させたい場合など) にだけ終了させます。そのため、If...Then...Else ステートメントの条件の評価が真 (True) の場合のステートメント ブロックで、Exit Do ステートメントを使用します。条件の評価が偽 (False) の場合は、ループがそのまま実行されます。

次のコード例では、変数 myNum に割り当てられた値のため、無限ループが発生します。If...Then...Else ステートメントで変数 myNum の値を再確認し、無限に繰り返しが続くことを防ぎます。

Sub ExitExample()
   Dim counter, myNum
      counter = 0
      myNum = 9
      Do Until myNum = 10
         myNum = myNum - 1
         counter = counter + 1
         If myNum < 10 Then Exit Do
      Loop
      MsgBox "ループを " & counter & " 回実行しました。"
End Sub

While...Wend ステートメントを使用する

While...Wend ステートメントは、この用法に詳しいユーザーのために VBScript でも用意されています。ただし、While...Wend ステートメントは柔軟性に欠けるため、Do...Loop ステートメントを使用することをお勧めします。

For...Next ステートメントを使用する

For...Next ステートメントを使用すると、ステートメント ブロックを指定の回数だけを実行できます。ループではカウンタ変数を使用し、ループの実行のたびに値を増減します。

次のコード例では、MyProc が繰り返し 50 回実行されます。For ステートメントでは、カウンタ変数 x とその初期値および終了値を指定しています。Next ステートメントは、カウンタ変数の値を 1 増加させます。

Sub DoMyProc50Times()
   Dim x
   For x = 1 To 50
      MyProc
   Next
End Sub

Step キーワードを使用すると、カウンタ変数を増減する値を指定できます。次のコード例では、ループを繰り返すごとにカウンタ変数 j の値が 2 ずつ増加されます。ループが終了したときには、合計は 2、4、6、8、10 を加算した値になります。

Sub TwosTotal()
   Dim j, total
   For j = 2 To 10 Step 2
      total = total + j
   Next
   MsgBox "合計は " & total & "です。"
End Sub

カウンタ変数を減少させる場合には、Step キーワードで負の値を指定します。その場合、終了値には初期値より小さい値を指定する必要があります。次のコード例では、ループを繰り返すごとにカウンタ変数 myNum の値が 2 ずつ減少されます。ループが終了したときには、合計が 16、14、12、10、8、6、4、2 を加算した値になります。

Sub NewTotal()
   Dim myNum, total
   For myNum = 16 To 2 Step -2
      total = total + myNum
   Next
   MsgBox "合計は " & total & "です。"
End Sub

カウンタ変数の値が終了値と等しくなる前に For...Next ステートメントを終了する場合には、Exit For ステートメントを使用します。通常、ループは、特定の条件の場合 (無限ループを回避する場合など) にだけ終了させます。そのため、If...Then...Else ステートメントの条件の評価が真 (True) の場合のステートメント ブロックで Exit For ステートメントを使用します。条件の評価が偽 (False) の場合は、ループがそのまま実行されます。

For Each...Next ステートメントを使用する

For Each...Next ステートメントは、For...Next ステートメントと似たような機能です。For Each...Next ステートメントでは、指定の回数だけステートメント ブロックを繰り返すのではなく、コレクションの各オブジェクトまたは配列の各要素に対してステートメント ブロックを繰り返し実行します。コレクションに含まれている要素の数がわからない場合には、特に役に立ちます。

次のコード例では、Dictionary オブジェクトの内容を使用して、複数のテキスト ボックスに文字列を保存します。

<HTML>
<HEAD><TITLE>Forms and Elements</TITLE></HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub cmdChange_OnClick
   Dim d   'Create a variable
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "0", "アテネ"   '複数のキーと項目を追加します。
   d.Add "1", "ベオグラード"
   d.Add "2", "カイロ"

   For Each I in d
      Document.frmForm.Elements(I).Value = D.Item(I)
   Next
End Sub
-->
</SCRIPT>
<BODY>
<CENTER>
<FORM NAME="frmForm"

<Input Type = "Text"><p>
<Input Type = "Text"><p>
<Input Type = "Text"><p>
<Input Type = "Text"><p>
<Input Type = "Button" NAME="cmdChange" VALUE="Click Here"><p>
</FORM>
</CENTER>
</BODY>
</HTML>


VBScript のプロシージャ

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) には、Sub プロシージャと Function プロシージャの 2 種類のプロシージャがあります。

Sub プロシージャ

Sub プロシージャは、Sub ステートメントと End Sub ステートメントで囲まれた一続きの VBScript ステートメントです。Sub プロシージャは実行しても値を返しません。Sub プロシージャは、呼び出したプロシージャを通じて、定数、変数、または式などの引数を取得できます。Sub プロシージャを定義するときに引数を省略する場合は、Sub ステートメントに空のかっこを付ける必要があります。

次のコード例では、ユーザーと情報を交換すための VBScript の 2 つの関数 (InputBox 関数と MsgBox 関数) が、Sub プロシージャに組み込まれています。この Sub プロシージャでは、取得した情報に基づく計算結果が表示されます。計算は、VBScript で作成された Function プロシージャで実行されます。次に Function プロシージャについて説明します。

Sub ConvertTemp()
   temp = InputBox("華氏の温度を入力してください。", 1)
MsgBox "温度は摂氏 " & Celsius(temp) & " ℃です。"
End Sub

Function プロシージャ

Function プロシージャは、Function ステートメントと End Function ステートメントで囲まれた一続きの VBScript ステートメントです。Function プロシージャは、Sub プロシージャと似ていますが、値を返すこともできます。Function プロシージャは、呼び出したプロシージャを通じて、定数、変数、または式などの引数を取得できます。Function プロシージャを定義するときに引数を省略する場合は、Function ステートメントに空のかっこを付ける必要があります。Function プロシージャは、プロシージャの 1 つ以上のステートメントの名前に割り当てられている値を返します。Function プロシージャに返されるデータ型は、常にバリアント型 (Variant) です。

次のコード例では、関数 (Celsius) を使用して華氏の温度から摂氏の温度を計算します。関数が Sub プロシージャ (ConvertTemp) から呼ばれると、引数の値を持った変数 (temp) が Function プロシージャに渡されます。Function プロシージャでは、受け取った引数の計算結果が Sub プロシージャに返されます。Sub プロシージャに返された計算結果がメッセージボックスで表示されます。

Sub ConvertTemp()
   temp = InputBox("華氏の温度を入力してください。", 1)
MsgBox "温度は摂氏 " & Celsius(temp) & " ℃です。"
End Sub

Function Celsius(fDegrees)
   Celsius = (fDegrees - 32) * 5 / 9
End Function

プロシージャの内外からデータを取得する

各データは、引数を使用してプロシージャに引き渡されます。引数は、プロシージャに引き渡すデータのプレースホルダとして取得されます。Sub ステートメントまたは Function ステートメントで使用するプロシージャを作成する場合は、プロシージャ名の後にかっこを付ける必要があります。引数はカンマ (,) で区切って、かっこの中に配置します。たとえば、次のコード例では、引数 fDegrees は、変換を行う関数 (Celsius) に渡された値が入るプレースホルダです。

Function Celsius(fDegrees)
   Celsius = (fDegrees - 32) * 5 / 9
End Function

プロシージャの外部からデータを取得するには、Function プロシージャを使用する必要があります。Sub プロシージャは、Function プロシージャと異なり、値を返すことができません。

コード内での Sub プロシージャと Function プロシージャの使い方

次のコード例のように、コード内で使用する Function プロシージャは、割り当てた変数の右側か、式の中で使用する必要があります。次にコード例を示します。

Temp = Celsius(fDegrees)

または

MsgBox "温度は摂氏 " & Celsius(temp) & " ℃です。"

他のプロシージャから Sub プロシージャを呼ぶには、カンマ (,) で区切られた引数を値として持つプロシージャ名を記述します。Call ステートメントでは、引数を省略できます。引数を指定する場合、引数をかっこで囲む必要があります。

次のコード例では、MyProc プロシージャを 2 回呼び出しています。1 回目は、コード内で Call ステートメントを使い、2 回目では使っていません。両方とも、まったく同じ動作をします。

Call MyProc(firstarg, secondarg)
MyProc firstarg, secondarg

Call ステートメントを使用しない場合には、かっこを付けていないことに注意してください。


VBScript のコード記述規則

コード記述規則は、Microsoft® Visual Basic® Scripting Edition (以下 VBScript) でわかりやすいコードを記述するためのガイドラインです。コード記述規則には次のものがあります。

  • オブジェクト、変数、およびプロシージャの名前付け規則
  • コメントの記述規則
  • テキストの書式およびインデントについてのガイドライン

コード記述規則を使用してソース コードを記述すると、スクリプトの構造とコード形式が標準化されるため、スクリプトの開発者および他の開発者がコードを参照しても、容易に理解できるソース コードを作成できます。適切なコード記述規則を使用すると、理解しやすく、他言語の規則にも矛盾しない正確かつ読みやすい無駄のないソース コードを作成できます。

定数の名前付け規則

VBScript の初期のバージョンでは、ユーザー独自の定数を定義できませんでした。定数を使用すると、変数として実行されるため、定数と変数と区別するためには、次のコード例のように大文字を使用し、アンダースコア (_) を付けて複数の単語に分割した文字列で定数名を付けていました。次にコード例を示します。

USER_LIST_MAX
NEW_LINE

これは、ユーザー独自の定数を識別するための方法として、まだ許容できる範囲にありますが、これに代わるものとして、現在では Const ステートメントを使用します。Const ステートメントを使用すると、真の意味での定数を定義できます。Const ステートメントを使用するときは、次のコード例のように定数の名前に "con" というプリフィックスを付けた形式での定数名を使用します。次にコード例を示します。

conYourOwnConstant

変数の名前付け規則

一貫性があってよりわかりやすいコードを作成するには、変数の名前に規則が必要です。VBScript のコードでは、変数の内容を表す名前の前にプリフィックスを付けます。

内部処理形式 | プリフィックス | 使用例
ブール型 (Boolean) | bln | blnFound
バイト型 | byt | bytRasterData
日付 (時刻) 型 | dtm | dtmStart
倍精度浮動小数点数型 | dbl | dblTolerance
エラー型 | err | errOrderNum
整数型 | int | intQuantity
長整数型 | lng | lngDistance
オブジェクト型 | obj | objCurrent
単精度浮動小数点数型 | sng | sngAverage
文字列型 | str | strFirstName

変数の適用範囲

変数はできる限り小さな適用範囲を持つように指定する必要があります。次の表は､VBScript の変数の適用範囲です。

適用範囲 | 変数の宣言場所 | 参照可能範囲
プロシージャ レベル | イベント プロシージャ、Function プロシージャ、または Sub プロシージャ | 宣言されたプロシージャ内で参照可能
スクリプト レベル | HTML ページの HEAD セクション、プロシージャの外部 | スクリプト内のどのプロシージャからも参照可能

変数の適用範囲を示すプリフィックス

スクリプトのサイズが大きくなると、変数の適用範囲を簡単に区別する値が必要になります。次の表に示すプリフィックスをデータ型を表すプリフィックスの前に適用範囲を示すプリフィックスとして付けると、変数の適用範囲を区別できます。

適用範囲 | プリフィックス | 使用例
プロシージャ レベル | なし | dblVelocity
スクリプト レベル | s | sblnCalcInProgress

内容を表す変数とプロシージャの名前

変数またはプロシージャの名前の本体部分には、大文字と小文字を使用して必要事項を記述する必要があります。さらに、プロシージャ名は InitNameArray または CloseDialog のように動詞で始める必要があります。

名前が頻繁に使用される場合、または長期間にわたって使用される場合は、標準的な省略形を使用して名前の長さを適度な長さにすることをお勧めします。一般的に、変数名は 32 文字を超えると読みにくくなります。省略形を使用する場合は、必ずスクリプト全体で統一してください。たとえば、1 つ以上のスクリプト内で Cnt と Count を混在させると混乱が生じます。

オブジェクトの名前付け規則

次の表は、各オブジェクトに対して推奨されている名前付け規則です。

オブジェクト | プリフィックス | 使用例
3D パネル | pnl | pnlGroup
アニメーション ボタン | ani | aniMailBox
チェック ボックス | chk | chkReadOnly
コンボ ボックス、ドロップダウン リスト ボックス | cbo | cboEnglish
コマンド ボタン | cmd | cmdExit
コモン ダイアログ | dlg | dlgFileOpen
フレーム | fra | fraLanguage
水平スクロール バー | hsb | hsbVolume
イメージ | img | imgIcon
ラベル | lbl | lblHelpMessage
ライン | lin | linVertical
リスト ボックス | lst | lstPolicyCodes
スピン | spn | spnPages
テキスト ボックス | txt | txtLastName
垂直スクロール バー | vsb | vsbRate
スライダ | sld | sldScale

コメントの記述規則

各プロシージャの先頭には、その機能を示す簡単なコメントを記述する必要があります。機能の実現方法についての詳細を記述する必要はありません。プロシージャのコードは繰り返し変更されるので、不要なコメントや間違ったコメントを削除する保守作業が必要になります。

プロシージャに渡す引数の用途が不明確な場合やプロシージャが特定の範囲内の引数を必要とする場合には、引数についてもコメントを記述する必要があります。また、関数の戻り値や引数を参照することによりプロシージャ内で変更されるその他の変数についても、プロシージャの先頭にコメントを記述します。

次の表は、プロシージャの先頭のコメントに付けるセクションの見出しです。実際の使用例は、次の「コードに書式を設定する」セクションのコード例を参照してください。

セクションの見出し | コメントの内容
用途 | 何をするプロシージャか。
外部からの影響 | 状況によってプロシージャに影響を与える外部の変数、コントロール、およびその他の要素の一覧。
外部への影響 | 外部の変数、コントロール、およびその他の要素に対するプロシージャの影響の一覧。
受け取る値 | 不明確な各引数の説明。各引数はそれぞれ別の行にインライン コメントを付けて記述します。
戻り値 | 返される値の説明。

次のことに留意してください。

  • 重要な変数を宣言する場合は、宣言した変数の用途を説明するためのインライン コメントを必ず記述します。
  • 変数、コントロール、およびプロシージャにはわかりやすい名前を付けます。インライン コメントには複雑な実行についての詳細だけを記述します。
  • スクリプトの先頭にオブジェクト、プロシージャ、アルゴリズム、ダイアログ ボックス、およびその他のシステム固有の情報を列挙してスクリプトの概要を記述します。アルゴリズムの説明コードが役立つこともあります。

コードに形式を設定する

論理構造およびネストがわかるようにコードの形式を整え、画面領域をできる限り節約する必要があります。次に、いくつかのガイドラインを示します。

  • 通常、ネストするブロックは 4 つのスペースでインデントします。
  • プロシージャの概要を示すコメントは、1 スペースだけインデントします。
  • 概要を示すコメントに続く最上位のステートメントは、4 つのスペースでインデントします。ネストする各ブロックは、さらに 4 つのスペースでインデントします。

次にコード例を示します。

'*********************************************************
' Purpose:配列 UserList 内で指定したユーザーに最初に
'          該当するユーザーを検索します。
' Inputs: strUserList():検索対象のユーザーのリスト。
'         strTargetUser:検索するユーザーの名前。
' Returns:配列 strUserList 内で strTargetUser に最初に
'          該当したユーザーのインデックス番号。
'          該当するユーザーが見つからない場合は、-1 を返します。
'*********************************************************
Function intFindUser (strUserList(), strTargetUser)
Dim i   ' ループ カウンタ
   Dim blnFound   ' 対象が見つかったかどうかを示すフラグ
   intFindUser = -1
   i = 0   ' ループ カウンタを初期化します。
   Do While i <= Ubound(strUserList) and Not blnFound
      If strUserList(i) = strTargetUser Then
         blnFound = True   ' フラグに True を設定します。
         intFindUser = i   ' ループ カウンタに戻り値を設定します。
      End If
      i = i + 1   ' ループ カウンタの値に 1 を加算します。
   Loop
End Function


VBScript とフォーム

簡単な入力検査の例

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) を使用すると、通常、サーバー側で実行するようなフォームの処理をクライアント側でも実行できます。また、サーバー側では実行できないような処理も、VBScript を使用すると実行できます。

次のコード例は、クライアント側の実行例です。この HTML で記述されたコードは、テキスト ボックスおよびボタンを表示するためのコードです。Microsoft® Internet Explorer (以下 Internet Explorer) を使用して次の HTML のコードを記述したページを参照すると、小さなテキスト ボックスとボタンが表示されます。

<HTML>
<HEAD><TITLE>Simple Validation</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Validate
  Dim TheForm
  Set TheForm = Document.forms("ValidForm")
  If IsNumeric(TheForm.Text1.Value) Then
    If TheForm.Text1.Value < 1 Or TheForm.Text1.Value > 10 Then
      MsgBox "1 から 10 までの数字を 1 つ入力してください。"
    Else
      MsgBox "ありがとうございます。"
    End If
  Else
    MsgBox "数値を入力してください。"
  End If
End Sub-->
</SCRIPT>
</HEAD>
<BODY>
<H3>Simple Validation</H3><HR>
<form id="ValidForm" action="nothing.asp" onsubmit="Validate(); return false;" language="jscript">
Enter a value between 1 and 10:
<input name="Text1" TYPE="TEXT" SIZE="2">
<input name="Submit" TYPE="Submit" VALUE="Submit">
</form>
</BODY>
</HTML>

このコードの例では、「VBScript を使用した簡単なページの例」で示されたコードの例とは異なり、テキスト ボックスの Value プロパティを使用して入力された値をチェックしています。コードの中でテキスト ボックスの名前を参照先として指定すれば、Value プロパティの値を取得できます。

通常、Document.ValidForm.Text1 のように参照先は、完全な形式で記述します。ただし、フォーム上のコントロールを何度も参照する場合は、次のようにして参照先を指定します。最初に変数を宣言します。次に Set ステートメントを使用して TheForm にフォームを代入します。このような場合は、Dim ステートメントのような通常の代入ステートメントは使用できません。オブジェクトへの参照を格納するには、Set ステートメントを使用します。

数値の使い方

上のコードの例では、数値の代わりに値を直接評価しています。テキスト ボックス内の文字列が数値かどうかを確認するために IsNumeric 関数を使用しています。VBScript では、必要に応じて自動的に文字列と数値が変換されますが、ユーザーが入力した値の内部処理形式を調べ、必要に応じて変換関数を使用することをお勧めします。また、プラス記号 (+ 演算子) は加算および文字列連結の 2 とおりの使用方法があるため、テキスト ボックスの値を合計するときには、値を明示的に数値に変換する必要があります。たとえば、Text1 に "1"、Text2 に "2" が含まれている場合、文字列連結処理になるか、または加算処理になるかで、結果は次のように異なります。

A = Text1.Value + Text2.Value   ' A は "12" です (文字列連結処理)。
A = CDbl(Text1.Value) + Text2.Value   ' A は "3" です (加算処理)。

データを検査してサーバーに送信する

通常、フォームに入力されたデータをサーバーに送信するには、Submit コントロールを使用します。しかし、Submit コントロールは、VBScript のコードを実行せずにデータをサーバーに送信するため、データの検査を行うことができません。そのため、「簡単な入力検査の例」では、Submit コントロールではなく、通常のボタン コントロールを使用しています。この場合、VBScript のコードには、データを送信するためのコードを追加する必要があります。

<SCRIPT LANGUAGE="VBScript">
<!--
Sub Button1_OnClick
 Dim TheForm
 Set TheForm = Document.ValidForm
 If IsNumeric(TheForm.Text1.Value) Then
    If TheForm.Text1.Value < 1 Or TheForm.Text1.Value > 10 Then
      MsgBox "1 から 10 までの数字を 1 つ入力してください。"
    Else
      MsgBox "ありがとうございます。"
      TheForm.Submit   ' データが正しい場合、サーバーに送信されます。
    End If
 Else
    MsgBox "数値を入力してください。"
 End If
End Sub
-->
</SCRIPT>

データをサーバーに送信するには、データが正しい場合にフォームの Submit メソッドが起動されるようにコードを記述する必要があります。サーバーは、データを受信すると、データ処理を開始します。Submit メソッドおよびその他のメソッドの詳細情報については、マイクロソフトの Web サイト (http://www.microsoft.com) の「Internet Explorer Scripting Object Model」を参照してください。

ここでは標準の HTML <FORM> オブジェクトだけを紹介しました。なお、Internet Explorer では、Microsoft ActiveX® コントロール (以前 OLE コントロールと呼んでいたもの) および Sun Microsystems® Java™ オブジェクトのすべての機能が活用できます。


Internet Explorer での VBScript の使用

VBScript を使用した簡単なページの例

VBScript とフォーム

VBScript とオブジェクト


VBScript とオブジェクト

オブジェクトの使用

Microsoft® ActiveX® (以下 ActiveX) コントロール (以前 OLE コントロールと呼んでいたもの) と Sun Microsystems® Java™ (以下 Java) Microsoft® Internet Explorer (以下 Internet Explorer) では、同じ方法で処理されます。ラベル コントロールがインストールされている環境で Internet Explorer を使用している場合は、次のコード例を記述したページを表示できます。

オブジェクトを使用するには、<OBJECT> タグを使用してオブジェクトを組み込み、<PARAM> タグを使用してコントロールのプロパティに初期値を設定します。Visual Basic 言語でのプログラミング経験があるユーザーであれば、<PARAM> タグを使用してフォーム上にあるコントロールのプロパティに初期値を設定するイメージが理解できることでしょう。たとえば、次のコード例では <OBJECT> タグと <PARAM> タグを組み合わせて、ページ上に ActiveX ラベル コントロールを追加しています。

<OBJECT
   classid="clsid:99B42120-6EC7-11CF-A6C7-00AA00A47DD2"
   id=lblActiveLbl
   width=250
   height=250
   align=left
   hspace=20
   vspace=0
>
<PARAM NAME="Angle" VALUE="90">
<PARAM NAME="Alignment" VALUE="4">
<PARAM NAME="BackStyle" VALUE="0">
<PARAM NAME="Caption" VALUE="ラベルの操作">
<PARAM NAME="FontName" VALUE="Verdana, Arial, Helvetica">
<PARAM NAME="FontSize" VALUE="20">
<PARAM NAME="FontBold" VALUE="1">
<PARAM NAME="FrColor" VALUE="0">
</OBJECT>

また、コントロールのプロパティを取得したり、プロパティに値を設定したり、ちょうど任意のフォーム コントロールを持っているようにメソッドを発行したりできます。たとえば、次のコード例では、<FORM> コントロールを使用して、ラベル コントロールの 2 つのプロパティを操作しています。

<FORM NAME="LabelControls">
<INPUT TYPE="TEXT" NAME="txtNewText" SIZE=25>
<INPUT TYPE="BUTTON" NAME="cmdChangeIt" VALUE="テキストの変更">
<INPUT TYPE="BUTTON" NAME="cmdRotate" VALUE="ラベルの回転">
</FORM>

次のコード例は、フォームに定義した cmdChangeIt ボタンのイベント プロシージャです。このイベント プロシージャはラベルのテキストを変更します。

<SCRIPT LANGUAGE="VBScript">
<!--
Sub cmdChangeIt_onClick
   Dim TheForm
   Set TheForm = Document.LabelControls
   lblActiveLbl.Caption = TheForm.txtNewText.Value
End Sub
-->
</SCRIPT>

上の例は、「簡単な入力検査の例」と同じようにフォーム内のコントロールや値を参照する資格を与えます。

ActiveX コントロールは、Internet Explorer で使用できるものもあります。コントロールのクラス ID (CLSID) と同様にプロパティ、メソッドおよびイベントに関する詳細については、Microsoft® の Web サイト (http://www.microsoft.com) を参照してください。

メモ Internet Explorer の初期のリリース版では、クラス ID 属性を中かっこ ({}) で囲む必要があり、W3C の仕様と一致していませんでしたが、現在のリリース版では、中かっこ ({}) で囲む必要はありません。ご注意ください。


正規表現とは

JScript および VBScript 正規表現

正規表現の概説

ここでは、一般的な正規表現について紹介します。

トピックごとに説明内容が完結するように記述していますが、各トピックで説明する内容を理解するには、それまでのトピックで紹介した機能や概念を理解していることが前提となります。内容を全体的に理解するためにも、最初から順を追って熟読することをお勧めします。

ここで説明するトピックは次のとおりです。

正規表現

正規表現の由来

正規表現の用途

正規表現の構文

正規表現の作成

優先順位

通常の文字

特殊文字

印刷できない文字

文字の一致

修飾子

アンカー

代替とグループ化

後方参照


正規表現

今まで正規表現を使ったことがない場合、ここに出てくる用語や概念をわかりにくいと感じるかもしれませんが、正規表現は、思っているほどわかりにくいものではありません。

ハードディスク上で特定のファイルを検索する場合を考えてみます。そのとき、目的のファイルを探し出すのに、? や * の文字を使用することが多いと考えられます。 ? はファイル名に含まれる任意の 1 文字に対応し、* は 0 個以上の任意の文字に対応します。たとえば、'data?.dat' というパターンを使用すると、次のようなファイルが検索されます。

data1.dat
data2.dat
datax.dat
dataN.dat

検索文字として ? ではなく * を使用すると、対象ファイルの範囲が広がります。'data*.dat' というパターンを使用すると、次のようなファイルが検索されます。

data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat

このファイル検索の方法は非常に便利ですが、機能的には限られたものです。ワイルドカード文字 ? と * の限られた機能から、正規表現の機能を想像できると思いますが、正規表現は、より強力で柔軟性のある機能を備えています。


正規表現の由来

正規表現の起源をたどると、人間の神経系の仕組みに関する初期の研究にさかのぼります。神経生理学者 Warren McCulloch と Walter Pitts は共同で、神経回路網を記述するための数学的な方法を考案しました。

1956 年、数学者 Stephen Kleene が、この McCulloch と Pitts の功績に基づいて、『Representation of Events in Nerve Nets』という題名の論文を発表しました。この論文で正規表現の概念が紹介されたのです。正規表現は、"正則集合の代数 (the algebra of regular sets)" と彼が名付けた概念を記述する際に使用した表現式です。これが、"正規表現" という用語の由来です。

その後、彼の功績に基づいて、Unix 開発の中心人物である Ken Thompson によって、コンピュータ検索アルゴリズムにおける初期の成果がもたらされました。正規表現が初めて現実に応用されたのは、qed という Unix のエディタにおいてです。

その後の発展は歴史が物語っています。それ以来、正規表現はテキスト ベースのエディタや検索ツールにおいて重要な役割を担うものとなっています。


正規表現の用途

一般的な検索処理と置換処理では、検索する文字列を直接指定します。この方法は、静的テキストを単純に検索して置換する作業には向いていますが、柔軟性に乏しいため、動的テキストを検索することは、不可能ではないにしろ、かなり困難になります。

正規表現を使うと、次のことを行えます。

  • 文字列内における特定パターンのテスト。たとえば、入力された文字列に特定の電話番号やクレジット カード番号のパターンが見つかるかどうかをテストできます。この処理は "データ確認" と呼ばれます。
  • テキストの置換。正規表現を使用すると、ドキュメント内で検索したテキストを、完全に削除したり、別のテキストに置換したりできます。
  • パターン マッチに基づいた、文字列の一部 (部分文字列) の抽出。ドキュメントや入力フィールドにおいて、特定のテキストを検索できます。

たとえば、Web サイト全体を検索して、古くなったコンテンツの削除や特定の HTML 書式タグの置換などに、正規表現を使用します。正規表現を使用すると、各ファイル内を検索して目的のコンテンツや HTML 書式タグの有無をテストできます。これにより、削除または変更対象とするコンテンツを含むファイルだけに絞り込むことができます。次に、古くなったコンテンツを削除します。最後に、目的のタグを検索して置換します。これらの処理には、すべて正規表現を使用します。

そのほか、正規表現を使用すると便利な例として、文字列処理機能がそれほど充実していない言語が挙げられます。Visual Basic のサブセットである VBScript は豊富な文字列処理関数を備えていますが、JScript は C 言語と同様、この点に関して十分ではありません。JScript で正規表現を使用すると、文字列処理機能が格段に向上します。また、VBScript の場合でも、1 つの正規表現によって複数の文字列操作を行うことができるようになり、処理を効率化できます。


正規表現の構文

正規表現は文字列のパターンを表すもので、通常の文字 (文字 a ～ z など) と "メタキャラクタ" と呼ばれる特殊文字で構成されます。パターンは、テキスト検索時に一致したかどうかを調べる 1 つ以上の文字列を記述したものです。正規表現は、検索対象文字列に文字パターンをマッチングさせるときのテンプレートとして機能します。

次の表に、よく使用される正規表現の例を示します。

JScript | VBScript | マッチング
/^\[ \t]*$/ | "^\[ \t]*$" | 空白行に一致します。
/\d{2}-\d{5}/ | "\d{2}-\d{5}" | 2 桁の数値、ハイフン、5 桁の数値で構成される ID 番号を確認します。
/<(.*)>.*<\/\1>/ | "<(.*)>.*<\/\1>" | HTML タグに一致します。

次の表は、すべてのメタキャラクタとその正規表現における機能を示したものです。

文字 | 説明
\ | 次に続く文字が、特殊文字、リテラル、後方参照、8 進エスケープのいずれかであることを示します。たとえば、'n' は文字 "n" に一致し、'\n' は改行文字に一致します。また、シーケンス '\\' は "\" に一致し、'\(' は "(" に一致します。
^ | 入力文字列の先頭に一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は '\n' または '\r' の直後の位置にも一致します。
$ | 入力文字列の末尾に一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は '\n' または '\r' の直前の位置にも一致します。
* | 直前のサブ式の 0 回以上の繰り返しに一致します。たとえば、'zo*' は "z" および "zoo" に一致します。* は {0,} と同じ意味になります。
+ | 直前のサブ式の 1 回以上の繰り返しに一致します。たとえば、'zo+' は "zo" および "zoo" には一致しますが、"z" には一致しません。+ は {1,} と同じ意味になります。
? | 直前のサブ式の 0 回または 1 回の繰り返しに一致します。たとえば、'do(es)?' は "do" および "does" に一致します。? は {0,1} と同じ意味になります。
{n} | n は負でない整数です。ちょうど n 回の繰り返しに一致します。たとえば、'o{2}' は "Bob" の 'o' には一致しませんが、"food" の 2 つの 'o' には一致します。
{n,} | n は負でない整数です。n 回以上の繰り返しに一致します。たとえば、'o{2,}' は "Bob" の 'o' には一致しませんが、"foooood" のすべての 'o' 全体に一致します。'o{1,}' は 'o+' と同じ意味になります。また、'o{0,}' は 'o*' と同じ意味になります。
{n,m} | m および n は負でない整数です。ここで n <= m が成立します。n 回以上 m 回以下の繰り返しに一致します。たとえば、'o{1,3}' は "fooooood" の先頭から 3 つの 'o' に一致します。'o{0,1}' は 'o?' と同じ意味になります。カンマと数字の間には空白を挿入しないことに注意してください。
? | ほかの修飾子 (*、+、?、{n}、{n,}、{n,m}) のいずれかの直後にこの文字が続く場合、検索パターンは最小一致として機能します。最小一致パターンでは検索文字列の最小範囲に一致しますが、既定のパターンでは検索文字列の最大範囲に一致します。たとえば、文字列が "oooo" の場合、'o+?' は 1 つの 'o' だけに一致しますが、'o+' はすべての 'o' に一致します。
. | "\n" 以外の任意の 1 文字に一致します。'\n' を含む任意の 1 文字に一致させるには、'[.\n]' などのパターンを使用します。
(pattern) | pattern に一致するとともに、一致した文字列を記憶します。記憶した文字列をコレクションから取得するには、SubMatches コレクション (VBScript の場合)、または $0 ～ $9 の各プロパティ (JScript の場合) を使用します。かっこ ( ) を表す文字列に一致させるには、それぞれ '\(' または '\)' を使用します。
(?:pattern) | pattern に一致しますが、後で使用できるように、一致した文字列を記憶することはありません。この構文は、"or" 文字 (|) を使ってパターンの各部分を結合する場合に便利です。たとえば、'industr(?:y|ies)' は 'industry|industries' よりも効率的な正規表現です。
(?=pattern) | pattern で指定した文字列が続く場合に一致と見なされます (肯定先読み)。これは記憶なしの一致であり、後で使用できるように、一致した文字列を記憶することはありません。たとえば、'Windows (?=95|98|NT|2000)' は "Windows 2000" の "Windows" には一致しますが、"Windows 3.1" の "Windows" には一致しません。先読み処理は、確認した文字を処理済みとはしません。つまり、一致する検索文字列が見つかると、先読みされた文字列の直後からではなく、最後に一致した検索文字列の直後から、次の検索が始まります。
(?!pattern) | pattern で指定しない文字列が続く場合に一致と見なされます (否定先読み)。これは記憶なしの一致であり、後で使用できるように、一致した文字列を記憶することはありません。たとえば、'Windows (?!95|98|NT|2000)' は "Windows 3.1" の "Windows" には一致しますが、"Windows 2000" の "Windows" には一致しません。先読み処理は、確認した文字を処理済みとはしません。つまり、一致する検索文字列が見つかると、先読みされた文字列の直後からではなく、最後に一致した検索文字列の直後から、次の検索が始まります。
x|y | x または y のいずれかに一致します。たとえば、'z|food' は "z" または "food" に一致し、'(z|f)ood' は "zood" または "food" に一致します。
[xyz] | 文字セットを表します。かっこ内の任意の 1 文字に一致します。たとえば、'[abc]' は "plain" の 'a' に一致します。
[^xyz] | 除外する文字セットを表します。かっこ内にない任意の 1 文字に一致します。たとえば、'[^abc]' は "plain" の 'p' に一致します。
[a-z] | 文字範囲を表します。指定範囲に含まれる任意の 1 文字に一致します。たとえば、'[a-z]' は任意の小文字の英字 a ～ z に一致します。
[^a-z] | 除外する文字範囲を表します。指定範囲に含まれない任意の 1 文字に一致します。たとえば、'[^a-z]' は a ～ z の範囲に含まれない任意の 1 文字に一致します。
\b | 単語境界、つまり単語とスペース間の位置に一致します。たとえば、'er\b' は "never" の 'er' には一致しますが、"verb" の 'er' には一致しません。
\B | 単語境界でない位置に一致します。'er\B' は "verb" の 'er' には一致しますが、"never" の 'er' には一致しません。
\cx | x で示された制御文字に一致します。たとえば、\cM は Ctrl + M キー (改行文字) に一致します。x の値は A ～ Z または a ～ z の範囲内であることが必要です。範囲外であると、c はリテラルの 'c' 文字であると解釈されます。
\d | 数字に一致します。[0-9] と同じ意味になります。
\D | 数字以外の 1 文字に一致します。[^0-9] と同じ意味になります。
\f | フォームフィード文字に一致します。\x0c および \cL と同じ意味になります。
\n | 改行文字に一致します。\x0a および \cJ と同じ意味になります。
\r | 改行文字に一致します。\x0d および \cM と同じ意味になります。
\s | 空白、タブ、フォームフィードなど任意の空白文字に一致します。[\f\n\r\t\v] と同じ意味になります。
\S | 空白文字以外の任意の 1 文字に一致します。[^ \f\n\r\t\v] と同じ意味になります。
\t | タブ文字に一致します。\x09 および \cI と同じ意味になります。
\v | 垂直タブ文字に一致します。\x0b および \cK と同じ意味になります。
\w | アンダスコアを含む単語に使用される任意の文字に一致します。'[A-Za-z0-9_]' と同じ意味になります。
\W | 単語に使用される文字以外の任意の文字に一致します。'[^A-Za-z0-9_]' と同じ意味になります。
\xn | n に一致します。ここで n は 16 進エスケープ値です。16 進エスケープ値は 2 桁である必要があります。たとえば、'\x41' は "A" に一致しますが、'\x041' は '\x04' および "1" と同じ意味になります。この構文を使うと、正規表現内で ASCII コードを使用できます。
\num | num に一致します。ここで num は正の整数です。記憶された一致文字列への後方参照です。たとえば、'(.)\1' は 2 つの連続した同一文字に一致します。
\n | 8 進エスケープ値または後方参照のいずれかを表します。\n の前に保存されたサブ式が少なくとも n 個存在する場合、n は後方参照を表します。それ以外の場合で n が 8 進数 (0 ～ 7) である場合、n は 8 進エスケープ値を表します。
\nm | 8 進エスケープ値または後方参照のいずれかを表します。\nm の前に保存されたサブ式が少なくとも nm 個存在する場合、\nm は後方参照を表します。\nm の前に保存されたサブ式が少なくとも n 個存在する場合、後方参照 n の後にリテラル m が続いていることを表します。それ以外の場合で n と m が 8 進数 (0 ～ 7) である場合、\nm は 8 進エスケープ値 nm に一致します。
\nml | n が 8 進数 (0 ～ 3) で m と l が 8 進数 (0 ～ 7) である場合、8 進エスケープ値 nml に一致します。
\un | n に一致します。n は、4 桁の 16 進数として表現された Unicode 文字を表します。たとえば、'\u00A9' は著作権記号 (©) に一致します。


正規表現の作成

正規表現は、算術式と同様の方法で作成します。つまり、さまざまなメタキャラクタや演算子を使って小さな表現式を結合することにより、大きな表現式を構築します。

正規表現を作成するには、表現パターンを構成するさまざまな要素を一組の区切り文字の間に配置します。JScript の場合、区切り文字として一組のスラッシュ (/) 文字を使用します。次に例を示します。

/expression/

VBScript の場合、一組の二重引用符 ("") を使って正規表現を区切ります。次に例を示します。

"expression"

上記のいずれの場合も、正規表現パターン (expression) は RegExp オブジェクトの Pattern プロパティに保存されます。

正規表現の構成要素として、個別の文字、文字セット、文字範囲、文字選択、またはこれらの任意の組み合わせを指定できます。


優先順位

正規表現は、算術式とほとんど同様に評価されます。つまり、左から右に向かって、決められた優先順位に従って評価されます。

次の表は、正規表現で使用される演算子について、優先順位の高いものから順に示しています。

演算子 | 説明
\ | エスケープ
(), (?:), (?=), [] | かっこおよび角かっこ
*, +, ?, {n}, {n,}, {n,m} | 修飾子
^, $, \メタキャラクタ | アンカーおよびシーケンス
| | 代替


通常の文字

通常の文字は、メタキャラクタとして明示的に指定されていない印刷可能な文字と印刷不可能な文字すべてから構成されます。これには、英字 (大文字と小文字)、数字、句読点、いくつかの記号が含まれます。

正規表現の最も単純な形式は 1 つの通常の文字で構成され、検索文字列内のその文字自身に一致します。たとえば、単一文字パターン 'A' は、検索文字列内にある任意の文字 "A" に一致します。次に、単一文字の正規表現パターンの例を示します。

/a/
/7/
/M/

次に、VBScript を使用した場合に、同じ意味を表す単一文字正規表現の例を示します。

"a"
"7"
"M"

いくつかの単一文字パターンを結合して、より大きな表現式を作ることができます。たとえば、次の JScript の正規表現は、単一文字表現 'a'、'7'、'M' を結合した表現式となります。

/a7M/

次に、VBScript を使用した、同じ意味を表す正規表現の例を示します。

"a7M"

連結演算子は使用せず、文字を順に並べるだけであることに注意してください。


特殊文字 (正規表現)

JScript および VBScript 正規表現

特殊文字

検索処理でメタキャラクタに一致させるとき、特殊な処理が必要になるメタキャラクタが多数あります。まず、これらの特殊文字を "エスケープ" する (特殊文字の前に円記号 (\) を付ける) 必要があります。次の表は、これらの特殊文字とその意味を示しています。

特殊文字 | 解説
$ | 入力文字列の末尾に一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、'$' は '\n' または '\r' の直前の位置にも一致します。"$" 文字自身に一致させるには、'\$' を使用します。
( ) | サブ式の開始と終了を表します。サブ式は、後で使用できるように記憶することができます。かっこに一致させるには、'\(' および '\)' を使用します。
* | 直前のサブ式の 0 回以上の繰り返しに一致します。"*" 文字に一致させるには、'\*' を使用します。
+ | 直前のサブ式の 1 回以上の繰り返しに一致します。"+" 文字に一致させるには、'\+' を使用します。
. | 改行文字 "\n" 以外の任意の 1 文字に一致します。"." 文字に一致させるには、"\." を使用します。
[ | 角かっこ式の開始を表します。"[" に一致させるには、'\[' を使用します。
? | 直前のサブ式の 0 回または 1 回の繰り返しに一致するか、または修飾子が最小一致であることを示します。"?" 文字に一致させるには、'\?' を使用します。
\ | 次に続く文字が、特殊文字、リテラル、後方参照、8 進エスケープのいずれかであることを示します。たとえば、'n' は 1 文字 "n" に一致し、'\n' は改行文字に一致します。また、'\\' は "\" に一致し、'\(' は "(" に一致します。
^ | 入力文字列の先頭に一致します。ただし、角かっこ表現の中で使用された場合は、文字セットの否定を示します。"^" 文字に一致させるには、'\^' を使用します。
{ | 修飾子の式の開始を示します。"{" に一致させるには、'\{' を使用します。
| | 2 つの項目から選択します。"|" に一致させるには、'\|' を使用します。


印刷できない文字

場合によっては、便利な印刷できない文字の使用が必要になることがあります。次の表は、印刷できない文字を表現するために使用するエスケープ シーケンスを示しています。

文字 | 意味
\cx | x で示された制御文字に一致します。たとえば、'\cM' は Ctrl + M キー (改行文字) に一致します。x の値は A ～ Z または a ～ z の範囲内であることが必要です。範囲外であると、c はリテラルの 'c' 文字であると解釈されます。
\f | フォームフィード文字に一致します。\x0c および \cL と同じ意味になります。
\n | 改行文字に一致します。\x0a および \cJ と同じ意味になります。
\r | 改行文字に一致します。\x0d および \cM と同じ意味になります。
\s | 空白、タブ、フォームフィードなど任意の空白文字に一致します。[\f\n\r\t\v] と同じ意味になります。
\S | 空白文字以外の任意の 1 文字に一致します。[^ \f\n\r\t\v] と同じ意味になります。
\t | タブ文字に一致します。\x09 および \cI と同じ意味になります。
\v | 垂直タブ文字に一致します。\x0b および \cK と同じ意味になります。


文字の一致

ピリオド (.) は、文字列内における改行文字 (\n) 以外の任意の印刷可能または印刷不可能な 1 文字に一致します。次の JScript 正規表現は、'aac'、'abc'、'acc'、'adc' などはもちろん、'a1c'、'a2c'、'a-c'、'a#c' などにも一致します。

/a.c/

次に、これと同じ意味を持つ VBScript 正規表現を示します。

"a.c"

入力文字列内のピリオド (.) を含むファイル名を表す文字列に一致させるには、正規表現のピリオドの前にバックスラッシュ (\) 文字を付けます。たとえば、次の JScript 正規表現は 'filename.ext' に一致します。

/filename\.ext/

次に、これと同じ意味を持つ VBScript 正規表現を示します。

"filename\.ext"

これらの表現は、このままでは制限が多すぎます。これらの表現は、任意の単一文字にしか一致しません。指定した文字セットに一致した方が便利なことが数多く考えられます。たとえば、ユーザーの入力テキストに Chapter 1、Chapter 2 のように番号を使って表現された章見出しが含まれている場合、これらの章見出しの検索が必要になることが考えられます。

角かっこ表現

一致させる文字のリストを作成するには、1 つまたは複数の文字を角かっこ ([ ]) 内に指定します。このように表現したリストを、"角かっこ表現" と呼びます。角かっこ内の通常文字は、ほかの場所で使用する場合と同様、その文字自身を表します。つまり、入力テキストにおけるその文字自体に一致します。角かっこ内で特殊文字を指定すると、ほとんどの場合、特殊文字としての意味は無効になります。ただし、次のように、例外となる文字もあります。

  • ']' 文字は、リストの先頭の項目でない限り、リストの終了を示します。リスト内で ']' 文字に一致させるには、リストの先頭 (左角かっこ '[' の直後) に指定します。
  • '\' 文字は通常どおり、エスケープ文字として機能します。'\' 文字に一致させるには、'\\' を使用します。

角かっこ表現内の文字は、正規表現において角かっこ表現が現れた位置にある 1 文字に一致します。たとえば、次の JScript 正規表現は、'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4'、および 'Chapter 5' に一致します。

/Chapter [12345]/

VBScript でこれらと同じ章見出しに一致させるには、次の構文を使用します。

"Chapter [12345]"

単語 'Chapter' とそれに続く空白は、角かっこ内の文字に対して固定されていることに注意してください。角かっこ表現は、単語 'Chapter' と空白の直後にある 1 文字に一致する文字セットを指定するために使用します。この場合、9 番目にある文字がそれに該当します。

一致させる文字を指定するのに、文字そのものではなく文字範囲を使用するには、ハイフン (-) を使って、開始文字と終了文字を指定します。それぞれの文字値によって、範囲内での相対的な順番が決まります。次の JScript 正規表現には範囲表現が含まれていますが、これは、上で示した角かっこ内のリストと同じ機能を果たします。

/Chapter [1-5]/

次に、これと同じ意味を持つ VBScript 正規表現を示します。

"Chapter [1-5]"

この方法で範囲を指定する場合、開始値と終了値はどちらも範囲内に含まれます。ただし、Unicode の並び順を基準として、開始値は終了値より小さな値でなければならないことに注意してください。

角かっこ表現でハイフン文字を使用するには、次のいずれかの方法で行います。

  • ハイフン文字を円記号でエスケープします。
    [\-]
  • ハイフン文字を角かっこリストの先頭または末尾に配置します。次の表現は、すべての小文字の英字とハイフンに一致します。
    [-a-z]
[a-z-]
  • 開始文字値がハイフン文字より小さく、終了文字値がハイフン文字と等しいか大きいような範囲を指定します。次の正規表現はどちらも、この条件を満たしています。
    [!--]
[!-~]

リストまたはリスト範囲に含まれない文字を検索するには、リストの先頭にキャレット (^) 文字を挿入します。キャレット文字をリストの先頭以外の位置に挿入すると、キャレット文字自体に一致します。つまり、特殊文字としての機能は無効となります。次の JScript 正規表現は、章番号が 5 より大きい章見出しに一致します。

/Chapter [^12345]/

VBScript では次の構文を使用します。

"Chapter [^12345]"

上記の角かっこ式では、9 番目の位置にある 1、2、3、4、5 以外の任意の数字に一致します。たとえば、"Chapter 7" や "Chapter 9" などに一致します。

ハイフン文字 (-) を使って同じ意味を持つ表現式を作成することもできます。JScript の場合は、次のようになります。

/Chapter [^1-5]/

VBScript の場合は、次のようになります。

"Chapter [^1-5]"

角かっこ表現式の一般的な使用方法として、任意の英字 (大文字または小文字) および数字との一致を指定する場合が挙げられます。JScript 正規表現の場合は、次のようになります。

/[A-Za-z0-9]/

VBScript 正規表現の場合は、次のようになります。

"[A-Za-z0-9]"


修飾子

一致する文字がいくつ並んでいるのか、前もってわからないときがあります。このような場合に対応するため、正規表現では修飾子の概念をサポートしています。修飾子を使用すると、一致と判断させる場合の、指定要素の出現回数を指定できます。

次の表に、修飾子とその意味を一覧します。

文字 | 説明
* | 直前のサブ式の 0 回以上の繰り返しに一致します。たとえば、'zo*' は "z" および "zoo" に一致します。* は {0,} と同じ意味になります。
+ | 直前のサブ式の 1 回以上の繰り返しに一致します。たとえば、'zo+' は "zo" および "zoo" には一致しますが、"z" には一致しません。+ は {1,} と同じ意味になります。
? | 直前のサブ式の 0 回または 1 回の繰り返しに一致します。たとえば、'do(es)?' は "do" および "does" に一致します。? は {0,1} と同じ意味になります。
{n} | n は負でない整数です。ちょうど n 回の繰り返しに一致します。たとえば、'o{2}' は "Bob" の 'o' には一致しませんが、"food" の2 つの 'o' には一致します。
{n,} | n は負でない整数です。n 回以上の繰り返しに一致します。たとえば、'o{2,}' は "Bob" の 'o' には一致しませんが、"foooood" のすべての 'o' には一致します。'o{1,}' は 'o+' と同じ意味になります。また、'o{0,}' は 'o*' と同じ意味になります。
{n,m} | m および n は負でない整数です。ここで n <= m が成立します。n 回以上 m 回以下の繰り返しに一致します。たとえば、'o{1,3}' は "fooooood" の先頭から 3 つの 'o' に一致します。'o{0,1}' は 'o?' と同じ意味になります。カンマと数字の間にはスペースを挿入しないことに注意してください。

入力ドキュメントのサイズが大きくなると章番号が 9 を超えることも考えられるため、2 桁や 3 桁の章番号にも対応することが必要です。修飾子を使うとそれが可能になります。次の JScript 正規表現は、任意の桁数を持つ章見出しに一致します。

/Chapter [1-9][0-9]*/

次の VBScript 正規表現は同じ意味の一致処理を実行します。

"Chapter [1-9][0-9]*"

修飾子が範囲表現の直後に指定されていることに注意してください。これにより、0 ～ 9 の数字を指定している範囲表現全体に対して、修飾子が適用されます。

ここでは、'+' 修飾子は使用していません。これは、2 桁目以降の数字が必ずしも必要ではないためです。また、'?' 文字も使用していません。これは、? を使用すると章番号が最大 2 桁に制限されてしまうためです。ここでは、'Chapter' とスペースに続く 1 桁以上の数字に一致させるものとします。

章番号が 99 章以下に限定される場合は、次の JScript 表現を使って 1 桁以上 2 桁以下の数字を指定できます。

/Chapter [0-9]{1,2}/

VBScript では次の正規表現を使用します。

"Chapter [0-9]{1,2}"

上記の表現では、99 より大きな章番号が存在する場合でも、最初の 2 桁だけに一致してしまいます。また、別のユーザーが Chapter 0 を作成した場合、これにも一致してしまいます。2 桁の数字だけに一致するように改善すると、JScript 表現の指定は次のようになります。

/Chapter [1-9][0-9]?/

または

/Chapter [1-9][0-9]{0,1}/

VBScript の場合は、次のようになります。

"Chapter [1-9][0-9]?"

または

"Chapter [1-9][0-9]{0,1}"

'*'、'+'、'?' の各修飾子はすべて、最大一致として動作します。つまり、できるだけ広い範囲のテキストに一致しようとします。そのため予想外の結果となることがあります。場合によっては、最小一致が必要となります。

たとえば、HTML ドキュメントで H1 タグで囲まれた章見出しを検索する場合を考えてみます。そのようなテキストは、ドキュメント内では次のように記述されます。

<H1>Chapter 1 – Introduction to Regular Expressions</H1>

次の表現は、H1 タグの開始記号 (<) から終了記号 (>) までのすべてのテキストに一致します。

/<.*>/

VBScript 正規表現の場合は、次のようになります。

"<.*>"

H1 の開始タグだけに一致させる場合、次の最小一致による表現を使用します。

/<.*?>/

または

"<.*?>"

"*"、"+"、"?" の各修飾子の後に "?" を付けると、最大一致から最小一致へと、表現の動作が変換されます。


アンカー

ここまでの説明では、検索する章見出しの位置は考慮していませんでした。'Chapter' の後にスペース 1 つと番号が続く文字列が見つかった場合、それが実際の章見出しである場合もありますが、ほかの章への相互参照であることも考えられます。実際の章見出しは、常に行の先頭に存在します。相互参照は検索せず、実際の章見出しだけを検索する方法を考える必要があります。

こうした処理に、アンカーを使用します。アンカーを使用すると、行の先頭や末尾に正規表現を固定できます。また、単語の先頭、途中、または末尾で一致する正規表現を作成することもできます。次の表は、正規表現のアンカーとその意味を示しています。

文字 | 説明
^ | 入力文字列の先頭に一致します。RegExp オブジェクトの Multiline プロパティが設定されている場合、^ は '\n' または '\r' の直後の位置にも一致します。
$ | 入力文字列の末尾に一致します。 RegExp オブジェクトの Multiline プロパティが設定されている場合、$ は '\n' または '\r' の直前の位置にも一致します。
\b | 単語境界、つまり単語とスペース間の位置に一致します。
\B | 単語境界ではない位置に一致します。

修飾子にアンカーを付けることはできません。改行や単語境界の直前直後に複数の位置が存在することはあり得ないため、'^*' などの表現は使用できません。

テキスト行の先頭で文字列に一致させるには、正規表現の先頭に '^' 文字を付加します。'^' については、この用法と、角かっこ内での用法を混同しないようにしてください。用法はまったく異なります。

テキスト行の末尾の文字列に一致させるには、正規表現の末尾に '$' 文字を付加します。

章見出しの検索にアンカーを使用する場合を考えてみます。次の JScript 正規表現は、2 桁以下の章番号を持つ章見出しの中で、行の先頭にある見出しに一致します。

/^Chapter [1-9][0-9]{0,1}/

VBScript の場合は、次のようになります。

"^Chapter [1-9][0-9]{0,1}"

実際の章見出しであれば、行の先頭にあるだけでなく、その行の唯一のテキストとなっています。つまり、行の末尾でもあるといえます。次の表現は、確実に章だけに一致し、相互参照には一致しません。これは、テキスト行の先頭と末尾でのみ一致する正規表現になっています。

/^Chapter [1-9][0-9]{0,1}$/

VBScript の場合は、次のようになります。

"^Chapter [1-9][0-9]{0,1}$"

単語境界への一致は、上記の説明とは少し異なり、正規表現に対して非常に重要な機能を付加します。単語境界は単語とスペース間の位置をいいます。それ以外の位置は、単語の境界ではありません。次の JScript 表現は、単語 'Chapter' の最初の 3 文字に一致します。これは、文字列が単語境界の後ろに指定されているためです。

/\bCha/

VBScript の場合は、次のようになります。

"\bCha"

ここで、'\b' 演算子の位置が非常に重要です。一致させる文字列の先頭にこの演算子を付加すると、単語の先頭で検索が実行されます。文字列の末尾にこの演算子を付加すると、単語の末尾で検索が実行されます。たとえば、次の表現は単語 'Chapter' の 'ter' に一致します。これは、文字列が単語境界の前に指定されているためです。

/ter\b/

および

"ter\b"

次の表現は、'Chapter' の 'apt' には一致しますが、'aptitude' の 'apt' には一致しません。

/\Bapt/

および

"\Bapt"

これは、'apt' は、単語 'Chapter' では単語境界の位置に存在しませんが、単語 'aptitude' では単語境界の位置に存在するからです。単語境界ではない位置を指定する演算子の場合、位置は重要ではありません。なぜなら、一致するかどうかは、単語の先頭および末尾とは無関係であるためです。


代替とグループ化

代替では、'|' 文字を使って複数の選択肢の中から選択するように表現できます。章見出しの正規表現を拡張することにより、章見出し以外の見出しも処理対象とするように機能を拡張できます。ただし、この拡張は想像するほど簡単ではありません。代替を使用すると、'|' 文字の両側にある表現のうち、より広範囲に一致する表現が文字列に一致します。たとえば、次のような表現 (JScript および VBScript) では、行の先頭および末尾にある文字列で、'Chapter' または 'Section' の後に 1 桁または 2 桁の数字が続く文字列に一致するように見えます。

/^Chapter|Section [1-9][0-9]{0,1}$/
"^Chapter|Section [1-9][0-9]{0,1}$"

ところが、実際には、上記の正規表現は、行の先頭にある単語 'Chapter'、または行の末尾にあり数字が後に続く 'Section' という形式の文字列に一致します。入力文字列が 'Chapter 22' であっても、上の表現は単語 'Chapter' にしか一致しません。入力文字列が 'Section 22' であると 'Section 22' に一致しますが、これは意図する処理ではありません。目的に合った正規表現を作成する必要があります。次に、その方法を説明します。

その方法とは、かっこを使って代替の適用範囲を制限する方法です。つまり、代替が、'Chapter' と 'Section' の 2 つの単語だけに適用されるように指定できます。ただし、かっこはサブ式の作成にも使用するため、かっこの使用には注意が必要です。これについては、後のサブ式に関するトピックで説明します。上記の正規表現に対して、適切な位置にかっこを追加すると、正規表現が 'Chapter 1' または 'Section 3' のいずれにも一致するようになります。

次の正規表現は、かっこを使って 'Chapter' と 'Section' をグループ化することにより、正しく動作するように修正を加えたものです。JScript の場合は、次のようになります。

/^(Chapter|Section) [1-9][0-9]{0,1}$/

VBScript の場合は、次のようになります。

"^(Chapter|Section) [1-9][0-9]{0,1}$"

これらの表現を使用すると、一致処理は正しく行われますが、1 つの興味深い、付随して発生する動作があることに注意してください。かっこで 'Chapter|Section' を囲むと適切なグループ化を行うことができますが、後で使用できるように、2 つの単語のうち、一致した単語が記憶されることになります。上記の表現ではかっこが一組しか存在しないため、記憶される "サブマッチ" も 1 つだけになります。記憶されたサブマッチを参照するには、Submatches コレクション (VBScript の場合) または RegExp オブジェクトの $1 ～ $9 の各プロパティ (JScript の場合) を使用します。

サブマッチの記憶は、常に望ましいとは限りません。上記の例では、かっこを使って 'Chapter' と 'Section' の選択をグループ化することを目的としています。一致した部分文字列を後で参照するわけではありません。サブマッチを記憶する必要がない場合は、記憶しないようにします。こうすると、サブマッチを保存するための時間とメモリを節約でき、正規表現の処理性能を向上させることができます。

サブマッチを記憶しないようにするには、かっこ内の正規表現パターンの先頭に '?:' を付加します。上記の例について考えてみると、JScript の場合は、次のようになります。

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

VBScript の場合は、次のようになります。

"^(?:Chapter|Section) [1-9][0-9]{0,1}$"

'?:' メタキャラクタのほかにも、保存なしのメタキャラクタが 2 つあり、これらは、"先読み" 一致のために使用されます。'?=' を指定する肯定先読みは、かっこ内で一致正規表現が開始するところで検索文字列を一致させます。'?!' を指定する否定先読みは、かっこ内において、正規表現パターンに一致しない文字列の先頭位置で、検索文字列を一致させます。

たとえば、Windows 3.1、Windows 95、Windows 98、および Windows NT への参照を含むドキュメントがある場合を考えてみます。このとき、ドキュメント内の Windows 95、Windows 98、Windows NT への参照をすべて検索し、Windows 2000 への参照に置換する必要があるとします。このような場合には、次のような JScript 正規表現を使用できます。これは、Windows 95、Windows 98、および Windows NT に一致する肯定先読みの例です。

/Windows(?=95 |98 |NT )/

VBScript の場合は、次のようになります。

"Windows(?=95 |98 |NT )"

一致文字列が見つかると、先読みに含まれる文字が除外され、一致文字列の直後から、次の検索が開始されます。たとえば、上記の表現で 'Windows 98' に一致した場合、'98' の後からではなく 'Windows' の後から検索が再開されます。


後方参照

正規表現の最も重要な機能の 1 つに、後で使用できるように、一致したパターンの一部を記憶しておく機能があります。前に説明したように、正規表現パターンの全体または一部をかっこで囲むと、その部分が一時バッファに格納されます。このサブ式の保存機能を無効にするには、メタキャラクタ ('?:'、'?='、または '?!') を使用します。

正規表現パターンの左から右に向かって一致検索が行われ、サブマッチは一致した順番に保存されます。サブマッチが保存されるバッファ番号は、1 から始まり、最大 99 までです。各バッファにアクセスするには '\n' を使用します。ここで n は、特定のバッファを識別する 1 桁または 2 桁の 10 進数を表します。

後方参照の最も簡単で便利な応用例として、テキスト内で、同じ単語が 2 つ連続しているパターンを検出する機能があります。次のような文章を入力する場合を考えてみます。

Is is the cost of of gasoline going up up?

この文章では、いくつかの単語が重複しており、明らかに問題があります。単語を 1 つずつ調べて重複を見つけるのではなく、もっと簡単に文章を修正する方法を検討する必要があります。次の JScript 正規表現は、1 つのサブ式を使用して、これを実現しています。

/\b([a-z]+) \1\b/gi

VBScript 表現の場合は、次のようになります。

"\b([a-z]+) \1\b"

この場合、かっこ内の指定はサブ式だけです。保存される表現には、'[a-z]+' の指定に従って 1 つまたは複数の英字が含まれます。正規表現の 2 番目の部分は、直前に記憶したサブマッチへの参照、つまり、かっこ内の表現に一致する単語の 2 回目の出現を表します。1 番目の一致文字列を指定するには "\1" を使用します。また、単語境界のメタキャラクタを指定しているため、独立した単語のみが検出されます。このメタキャラクタを指定しないと、'is issued' や 'this is' などの語句も検出されてしまいます。

JScript の表現では、正規表現の後ろにグローバル フラグ ('g') を指定することで、入力文字列内で可能なすべての一致文字列に対して表現を適用できます。表現の末尾に ("i") フラグを付加すると、大文字と小文字を区別しないことを指定できます。複数行フラグは、改行文字前後での一致も検索することを示します。VBScript では、表現にこのようなフラグを設定することはできません。RegExp オブジェクトのプロパティを使って、明示的に設定しておく必要があります。

次の JScript コードは上記の正規表現を使用したもので、サブマッチ情報を使って、テキスト文字列内の 2 つの連続した同一単語を、1 つの同じ単語に置き換えます。

var ss = "Is is the cost of of gasoline going up up?.\n";
var re = /\b([a-z]+) \1\b/gim;       //正規表現パターンの作成
var rv = ss.replace(re,"$1");   //2 つの連続した単語を 1 つの単語に置換

VBScript コードで同様の機能を実現すると、次のようになります。

Dim ss, re, rv
ss = "Is is the cost of of gasoline going up up?." & vbNewLine
Set re = New RegExp
re.Pattern = "\b([a-z]+) \1\b"
re.Global = True
re.IgnoreCase = True
re.MultiLine = True
rv = re.Replace(ss,"$1")

VBScript コードの場合、グローバル フラグ、大文字と小文字を区別しないフラグ、および複数行フラグを設定するには、RegExp オブジェクトの適切な名前つきプロパティを使用します。

replace メソッドで $1 を指定すると、1 番目に保存されたサブマッチが参照されます。複数のサブマッチが存在する場合、それらの文字列を参照するには $2、$3 などを指定します。

後方参照のその他の使用例として、URI (Universal Resource Indicator) を各構成要素に分解することが挙げられます。たとえば、次の URI をプロトコル (ftp や http など)、ドメイン アドレス、ページ/パスに分解する場合を考えてみます。

http://msdn.microsoft.com:80/scripting/default.htm

次の正規表現により、この機能を実現できます。JScript の場合は、次のようになります。

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/

VBScript の場合は、次のようになります。

"(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)"

かっこで囲まれたサブ式の中で、1 番目は Web アドレスのプロトコル部分を取り込みます。このサブ式は、1 つのコロンと 2 つのスラッシュより前にある任意の単語に一致します。2 番目は Web アドレスのドメイン アドレス部分を取り込みます。このサブ式は、'^'、'/'、':' の文字を含まない任意の文字の並びに一致します。3 番目は、Web サイトのポート番号が指定されている場合、その番号を取り込みます。このサブ式は、コロンに続く 0 個以上の数字に一致します。最後に、4 番目は Web アドレスに指定されたパス情報とページ情報の両方またはいずれかを取り込みます。このサブ式は、'#' およびスペース以外の 1 つまたは複数の文字に一致します。

この正規表現を上記の URI に適用すると、次のように、サブマッチに文字列が保存されます。

RegExp.$1 - "http"

RegExp.$2 - "msdn.microsoft.com"

RegExp.$3 - ":80"

RegExp.$4 - "/scripting/default.htm"


VBScript ランゲージ リファレンス

VBScript の定数

VBScript のエラー

VBScript のイベント

VBScript の関数

VBScript のメソッド

その他

VBScript のオブジェクトとコレクション

VBScript の演算子

VBScript のプロパティ

VBScript のステートメント


バージョン情報 (VBScript)

Visual Basic Scripting Edition

バージョン情報

次の表は、ホスト アプリケーションによって実行される Microsoft Visual Basic Scripting Edition のバージョンの一覧です。

ホスト アプリケーション | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 5.5 | 5.6
Microsoft Internet Explorer 3.0 | x |  |  |  |  |  |
Microsoft Internet Information Server 3.0 |  | x |  |  |  |  |
Microsoft Internet Explorer 4.0 |  |  | x |  |  |  |
Microsoft Internet Information Server 4.0 |  |  | x |  |  |  |
Microsoft Windows Scripting Host 1.0 |  |  | x |  |  |  |
Microsoft Outlook 98 |  |  | x |  |  |  |
Microsoft Visual Studio 6.0 |  |  |  | x |  |  |
Microsoft Internet Explorer 5.0 |  |  |  |  | x |  |
Microsoft Internet Information Services 5.0 |  |  |  |  | x |  |
Microsoft Internet Explorer 5.5 |  |  |  |  |  | x |
Microsoft Visual Studio.Net |  |  |  |  |  |  | x

次の表は、VBScript 言語の機能およびバージョンの一覧です。

言語要素 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 5.5 | 5.6
Abs 関数 | x |  |  |  |  |  |
加算演算子 (+) | x |  |  |  |  |  |
And 演算子 | x |  |  |  |  |  |
Array 関数 |  | x |  |  |  |  |
Asc 関数 | x |  |  |  |  |  |
代入演算子 (=) | x |  |  |  |  |  |
Atn 関数 | x |  |  |  |  |  |
Call ステートメント | x |  |  |  |  |  |
CBool 関数 | x |  |  |  |  |  |
CByte 関数 | x |  |  |  |  |  |
CCur 関数 | x |  |  |  |  |  |
CDate 関数 | x |  |  |  |  |  |
CDbl 関数 | x |  |  |  |  |  |
Chr 関数 | x |  |  |  |  |  |
CInt 関数 | x |  |  |  |  |  |
Class オブジェクト |  |  |  |  | x |  |
Class ステートメント |  |  |  |  | x |  |
Clear メソッド | x |  |  |  |  |  |
CLng 関数 | x |  |  |  |  |  |
色の定数 |  | x |  |  |  |  |
比較の定数 |  | x |  |  |  |  |
文字列連結演算子 (&) | x |  |  |  |  |  |
Const ステートメント |  | x |  |  |  |  |
Cos 関数 | x |  |  |  |  |  |
CreateObject 関数 |  | x |  |  |  |  |
CSng 関数 | x |  |  |  |  |  |
CStr 関数 | x |  |  |  |  |  |
日付と時刻の定数 |  | x |  |  |  |  |
日付形式の定数 |  | x |  |  |  |  |
Date 関数 | x |  |  |  |  |  |
DateAdd 関数 |  | x |  |  |  |  |
DateDiff 関数 |  | x |  |  |  |  |
DatePart 関数 |  | x |  |  |  |  |
DateSerial 関数 | x |  |  |  |  |  |
DateValue 関数 | x |  |  |  |  |  |
Day 関数 | x |  |  |  |  |  |
Description プロパティ | x |  |  |  |  |  |
Dim ステートメント | x |  |  |  |  |  |
除算演算子 (/) | x |  |  |  |  |  |
Do...Loop ステートメント | x |  |  |  |  |  |
Empty | x |  |  |  |  |  |
Eqv Operator | x |  |  |  |  |  |
Erase ステートメント | x |  |  |  |  |  |
Err オブジェクト | x |  |  |  |  |  |
Eval 関数 |  |  |  |  | x |  |
Execute メソッド |  |  |  |  | x |  |
Execute ステートメント |  |  |  |  | x |  |
ExecuteGlobal ステートメント |  |  |  |  | x |  |
Exit ステートメント | x |  |  |  |  |  |
Exp 関数 | x |  |  |  |  |  |
指数演算 (^) | x |  |  |  |  |  |
False | x |  |  |  |  |  |
Filter 関数 |  | x |  |  |  |  |
FirstIndex プロパティ |  |  |  |  | x |  |
Fix 関数 | x |  |  |  |  |  |
For...Next ステートメント | x |  |  |  |  |  |
For Each...Next ステートメント |  | x |  |  |  |  |
FormatCurrency 関数 |  | x |  |  |  |  |
FormatDateTime 関数 |  | x |  |  |  |  |
FormatNumber 関数 |  | x |  |  |  |  |
FormatPercent 関数 |  | x |  |  |  |  |
Function ステートメント | x |  |  |  |  |  |
GetLocale 関数 |  |  |  |  | x |  |
GetObject 関数 |  | x |  |  |  |  |
GetRef 関数 |  |  |  |  | x |  |
Global プロパティ |  |  |  |  | x |  |
Hex 関数 | x |  |  |  |  |  |
HelpContext プロパティ |  | x |  |  |  |  |
HelpFile プロパティ |  | x |  |  |  |  |
Hour 関数 | x |  |  |  |  |  |
If...Then...Else ステートメント | x |  |  |  |  |  |
IgnoreCase プロパティ |  |  |  |  | x |  |
Imp 演算子 | x |  |  |  |  |  |
Initialize イベント |  |  |  |  | x |  |
InputBox 関数 | x |  |  |  |  |  |
InStr 関数 | x |  |  |  |  |  |
InStrRev 関数 |  | x |  |  |  |  |
Int 関数 | x |  |  |  |  |  |
整数除算演算子 (\) | x |  |  |  |  |  |
Is 演算子 | x |  |  |  |  |  |
IsArray 関数 | x |  |  |  |  |  |
IsDate 関数 | x |  |  |  |  |  |
IsEmpty 関数 | x |  |  |  |  |  |
IsNull 関数 | x |  |  |  |  |  |
IsNumeric 関数 | x |  |  |  |  |  |
IsObject 関数 | x |  |  |  |  |  |
Join 関数 |  | x |  |  |  |  |
LBound 関数 | x |  |  |  |  |  |
LCase 関数 | x |  |  |  |  |  |
Left 関数 | x |  |  |  |  |  |
Len 関数 | x |  |  |  |  |  |
Length プロパティ |  |  |  |  | x |  |
LoadPicture 関数 |  | x |  |  |  |  |
Log 関数 | x |  |  |  |  |  |
LTrim 関数 | x |  |  |  |  |  |
Match オブジェクト |  |  |  |  | x |  |
Matches コレクション |  |  |  |  | x |  |
Mid 関数 | x |  |  |  |  |  |
Minute 関数 | x |  |  |  |  |  |
その他の定数 |  | x |  |  |  |  |
Mod 演算子 | x |  |  |  |  |  |
Month 関数 | x |  |  |  |  |  |
MonthName 関数 |  | x |  |  |  |  |
MsgBox 定数 |  | x |  |  |  |  |
MsgBox 関数 | x |  |  |  |  |  |
乗算演算子 (*) | x |  |  |  |  |  |
マイナス符号演算子 (-) | x |  |  |  |  |  |
Not 演算子 | x |  |  |  |  |  |
Now 関数 | x |  |  |  |  |  |
Nothing | x |  |  |  |  |  |
Null | x |  |  |  |  |  |
Number プロパティ | x |  |  |  |  |  |
Oct 関数 | x |  |  |  |  |  |
On Error ステートメント | x |  |  |  |  |  |
Option Explicit ステートメント | x |  |  |  |  |  |
Or 演算子 | x |  |  |  |  |  |
Pattern プロパティ |  |  |  |  | x |  |
Private ステートメント |  | x |  |  |  |  |
PropertyGet ステートメント |  |  |  |  | x |  |
PropertyLet ステートメント |  |  |  |  | x |  |
PropertySet ステートメント |  |  |  |  | x |  |
Public ステートメント |  | x |  |  |  |  |
Raise メソッド | x |  |  |  |  |  |
Randomize ステートメント | x |  |  |  |  |  |
ReDim ステートメント | x |  |  |  |  |  |
RegExp オブジェクト |  |  |  |  | x |  |
Rem ステートメント | x |  |  |  |  |  |
Replace 関数 |  | x |  |  |  |  |
Replace メソッド |  |  |  |  | x |  |
RGB 関数 |  | x |  |  |  |  |
Right 関数 | x |  |  |  |  |  |
Rnd 関数 | x |  |  |  |  |  |
Round 関数 |  | x |  |  |  |  |
RTrim 関数 | x |  |  |  |  |  |
ScriptEngine 関数 |  | x |  |  |  |  |
ScriptEngineBuildVersion 関数 |  | x |  |  |  |  |
ScriptEngineMajorVersion 関数 |  | x |  |  |  |  |
ScriptEngineMinorVersion 関数 |  | x |  |  |  |  |
Second 関数 | x |  |  |  |  |  |
Select Case ステートメント | x |  |  |  |  |  |
Set ステートメント | x |  |  |  |  |  |
SetLocale 関数 |  |  |  |  | x |  |
Sgn 関数 | x |  |  |  |  |  |
Sin 関数 | x |  |  |  |  |  |
Source プロパティ | x |  |  |  |  |  |
Space 関数 | x |  |  |  |  |  |
Split 関数 |  | x |  |  |  |  |
Sqr 関数 | x |  |  |  |  |  |
StrComp 関数 | x |  |  |  |  |  |
文字列の定数 |  | x |  |  |  |  |
String 関数 | x |  |  |  |  |  |
StrReverse 関数 |  | x |  |  |  |  |
Sub ステートメント | x |  |  |  |  |  |
減算演算子 (-) | x |  |  |  |  |  |
Tan 関数 | x |  |  |  |  |  |
Terminate イベント |  |  |  |  | x |  |
Test メソッド |  |  |  |  | x |  |
Time 関数 | x |  |  |  |  |  |
Timer 関数 |  |  |  |  | x |  |
TimeSerial 関数 | x |  |  |  |  |  |
TimeValue 関数 | x |  |  |  |  |  |
Trim 関数 | x |  |  |  |  |  |
Tristate の定数 |  | x |  |  |  |  |
True | x |  |  |  |  |  |
TypeName 関数 |  | x |  |  |  |  |
UBound 関数 | x |  |  |  |  |  |
UCase 関数 | x |  |  |  |  |  |
Value プロパティ |  |  |  |  | x |  |
VarType の定数 |  | x |  |  |  |  |
VarType 関数 | x |  |  |  |  |  |
VBScript の定数 |  | x |  |  |  |  |
Weekday 関数 | x |  |  |  |  |  |
WeekdayName 関数 |  | x |  |  |  |  |
While...Wend ステートメント | x |  |  |  |  |  |
With ステートメント |  |  |  |  | x |  |
Xor 演算子 | x |  |  |  |  |  |
Year 関数 | x |  |  |  |  |  |


VBScript の定数

VBScript には、コード内で使用できる多くの便利な定数が組み込まれています。定数を使うと、値そのものを覚えることなく、特定の値を簡単に使用できます。また、いずれかの定数の値が変更されても、コードを簡単に修正できます。VBScript では、定数は定義済みなので、コードの中で定数を明示的に宣言する必要はありません。コード内では常に値の代わりに定数を使用してください。

次の一覧は、VBScript に用意されている定数のカテゴリと簡単な説明です。

  • 色の定数 スクリプトで使用できる 8 種類の基本的な色を定義します。
  • 日付と時刻の定数 日付と時刻の関数で使用される日付と時刻の定数を定義します。
  • 日付形式の定数 日付と時刻の形式を設定するための定数を定義します。
  • その他の定数 ほかのカテゴリに含まれない定数を定義します。
  • MsgBox 関数の定数 ボタンの表示、ラベル、機能、および戻り値を記述するために MsgBox 関数で使用される定数を定義します。
  • 文字列の定数 文字列操作で使用される、印刷できない文字を定義します。
  • Tristate の定数 数値形式を設定する関数で使用される定数を定義します。
  • VarType 関数の定数 バリアント型の各種の内部処理形式を定義します。

必要条件

バージョン 2


色の定数

これらの定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 | 値 | 内容
vbBlack | &h00 | 黒
vbRed | &hFF | 赤
vbGreen | &hFF00 | 緑
vbYellow | &hFFFF | 黄
vbBlue | &hFF0000 | 青
vbMagenta | &hFF00FF | マゼンタ
vbCyan | &hFFFF00 | シアン
vbWhite | &hFFFFFF | 白

必要条件

バージョン 2

参 照

比較の定数 | 日付と時刻の定数 | 日付形式の定数 | その他の定数 | MsgBox 関数の定数 | 文字列の定数 | Tristate の定数 | VarType 関数の定数


比較の定数

これらの定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 | 値 | 内容
vbBinaryCompare | 0 | バイナリ モードで比較を行います。
vbTextCompare | 1 | テキスト モードで比較を行います。

必要条件

バージョン 2

参 照

色の定数 | 日付と時刻の定数 | 日付形式の定数 | その他の定数 | MsgBox 関数の定数 | 文字列の定数 | Tristate の定数 | VarType 関数の定数


日付と時刻の定数

これらの定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 | 値 | 内容
vbSunday | 1 | 日曜
vbMonday | 2 | 月曜
vbTuesday | 3 | 火曜
vbWednesday | 4 | 水曜
vbThursday | 5 | 木曜
vbFriday | 6 | 金曜
vbSaturday | 7 | 土曜
vbUseSystemDayOfWeek | 0 | システムで指定された曜日を週の最初の曜日として使用します。
vbFirstJan1 | 1 | 1 月 1 日を含む週から開始します (既定値)。
vbFirstFourDays | 2 | 新しい年の少なくとも 4 日間を含む週から開始します。
vbFirstFullWeek | 3 | 新しい年の 1 週間を含む最初の週から開始します。

必要条件

バージョン 2

参 照

色の定数 | 比較の定数 | 日付形式の定数 | その他の定数 | MsgBox 関数の定数 | 文字列の定数 | Tristate の定数 | VarType 関数の定数


日付形式の定数

これらの定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 | 値 | 内容
vbGeneralDate | 0 | 日付か時刻、または両方を表示します。実数では、日付と時刻を表示します。小数部がない場合は、日付のみを表示します。整数部がない場合は、時刻のみを表示します。日付および時刻の表示は、システムの設定に従います。
vbLongDate | 1 | [地域のプロパティ] で指定されている長い形式で日付を表示します。
vbShortDate | 2 | [地域のプロパティ] で指定されている短い形式で日付を表示します。
vbLongTime | 3 | コントロール パネルの [地域のプロパティ] で指定されている長い形式で時刻を表示します。
vbShortTime | 4 | コントロール パネルの [地域のプロパティ] で指定されている短い形式で時刻を表示します。

必要条件

バージョン 2

参 照

色の定数 | 比較の定数 | 日付と時刻の定数 | その他の定数 | MsgBox 関数の定数 | 文字列の定数 | Tristate の定数 | VarType 関数の定数


その他の定数

この定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 値 内容
vbObjectError -2147221504 カスタム エラー番号は、この定数の値よりも大きい値にします。たとえば、次のように指定します。
Err.Raise Number = vbObjectError + 1000

必要条件

バージョン 2

参 照

色の定数 | 比較の定数 | 日付と時刻の定数 | 日付形式の定数 | MsgBox 関数の定数 | 文字列の定数 | Tristate の定数 | VarType 関数の定数


MsgBox 関数の定数

次の定数は、メッセージ ボックス上に表示されるボタンとアイコンの種類および標準ボタンを設定するために MsgBox 関数で使用されます。また、MsgBox のモーダルも指定することができます。これらの定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 | 値 | 内容
vbOKOnly | 0 | [OK] ボタンのみを表示します。
vbOKCancel | 1 | [OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore | 2 | [中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
vbYesNoCancel | 3 | [はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
vbYesNo | 4 | [はい] ボタンと [いいえ] ボタンを表示します。
vbRetryCancel | 5 | [再試行] ボタンと [キャンセル] ボタンを表示します。
vbCritical | 16 | 警告メッセージ アイコンを表示します。
vbQuestion | 32 | 問い合わせメッセージ アイコンを表示します。
vbExclamation | 48 | 注意メッセージ アイコンを表示します。
vbInformation | 64 | 情報メッセージ アイコンを表示します。
vbDefaultButton1 | 0 | 第 1 ボタンを標準ボタンに設定します。
vbDefaultButton2 | 256 | 第 2 ボタンを標準ボタンに設定します。
vbDefaultButton3 | 512 | 第 3 ボタンを標準ボタンに設定します。
vbDefaultButton4 | 768 | 第 4 ボタンを標準ボタンに設定します。
vbApplicationModal | 0 | アプリケーション モーダルに設定します。メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。
vbSystemModal | 4096 | システム モーダルに設定します。Win16 システムでは、メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。Win32 システムでは、実行中の他のプログラムより上に、アプリケーション モーダル メッセージ ボックスが表示されます。

次の定数は、どのボタンが選択されたかを示すために MsgBox 関数で使用されます。コード内で定数を使用するには、目的の定数の定義が入った適切なタイプ ライブラリをプロジェクトから明示的に参照しておく必要があります。VBScript の場合、これらの定数はコード内で明示的に宣言してください。

定数 | 値 | 内容
vbOK | 1 | [OK] ボタン
vbCancel | 2 | [キャンセル] ボタン
vbAbort | 3 | [中止] ボタン
vbRetry | 4 | [再試行] ボタン
vbIgnore | 5 | [無視] ボタン
vbYes | 6 | [はい] ボタン
vbNo | 7 | [いいえ] ボタン

必要条件

バージョン 2

参 照

色の定数 | 比較の定数 | 日付と時刻の定数 | 日付形式の定数 | その他の定数 | 文字列の定数 | Tristate の定数 | VarType 関数の定数


文字列の定数

これらの定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 | 値 | 内容
vbCr | Chr(13) | キャリッジ リターン文字。
VbCrLf | Chr(13)、Chr(10) | キャリッジ リターンとライン フィードの組み合わせ。
vbFormFeed | Chr(12) | フォーム フィード文字。Microsoft Windows では使用できません。
vbLf | Chr(10) | ライン フィード文字。
vbNewLine | Chr(13)、Chr(10) または Chr(10) | プラットフォームで指定した改行文字。現在のプラットフォームに適切ないずれかを使用します。
vbNullChar | Chr(0) | 値 0 を持つ文字列。
vbNullString | 値 0 を持つ文字列 | 長さ 0 の文字列 ("") とは異なります。外部プロシージャを呼び出す場合に使用します。
vbTab | Chr(9) | タブ文字 (横)。
vbVerticalTab | Chr(11) | タブ文字 (縦)。Microsoft Windows では使用できません。

必要条件

バージョン 2

参 照

色の定数 | 比較の定数 | 日付と時刻の定数 | 日付形式の定数 | その他の定数 | MsgBox 関数の定数 | Tristate の定数 | VarType 関数の定数


Tristate の定数

これらの定数は、あらかじめ VBScript に組み込まれているので、使用前に定義する必要はありません。コード中のどこでも、対応する値の代わりに使用することができます。

定数 | 値 | 内容
vbUseDefault | -2 | [地域のプロパティ] の設定値を使用します。
真 (vbTrue) | -1 | True
偽 (vbFalse) | 0 | False

必要条件

バージョン 2

参 照

色の定数 | 比較の定数 | 日付と時刻の定数 | 日付形式の定数 | その他の定数 | MsgBox 関数の定数 | 文字列の定数 | VarType 関数の定数


VarType 関数の定数

コード内で定数を使用するには、目的の定数の定義が入った適切なタイプ ライブラリをプロジェクトから明示的に参照しておく必要があります。VBScript の場合、これらの定数はコード内で明示的に宣言してください。

定数 | 値 | 内容
vbEmpty | 0 | Empty 値 (未初期化)
vbNull | 1 | Null 値 (無効な値)
vbInteger | 2 | 整数型 (Integer)
vbLong | 3 | 長整数型 (Long)
vbSingle | 4 | 単精度浮動小数点数型 (Single)
vbSingle | 5 | 倍精度浮動小数点数型 (Double)
vbCurrency | 6 | 通貨型 (Currency)
vbDate | 7 | 日付型 (Date)
vbString | 8 | 文字列型 (String)
vbObject | 9 | オブジェクト型
vbError | 10 | エラー値 (Error)
vbBoolean | 11 | ブール型 (Boolean)
vbVariant | 12 | バリアント型 (Variant) (バリアント型配列にのみ使用)
vbDataObject | 13 | 非オートメーション オブジェクト
vbDecimal | 14 | 10 進型 (Decimal)
vbByte | 17 | バイト型 (Byte)
vbArray | 8192 | 配列 (Array)

必要条件

バージョン 2

参 照

色の定数 | 比較の定数 | 日付と時刻の定数 | 日付形式の定数 | その他の定数 | MsgBox 関数の定数 | 文字列の定数 | Tristate の定数


VBScript のエラー

内容 | 言語要素
VBScript の実行時エラーの一覧です。 | 実行時エラー
VBScript の構文エラーの一覧です。 | 構文エラー


VBScript 実行時エラー

VBScript 実行時エラーは、VBScript のスクリプトがシステムで処理できない動作を実行しようとした場合に発生するエラーです。VBScript 実行時エラーは、変数の数式が評価されメモリが割り当てられる、スクリプト実行時に発生します。

エラー番号 | 内容
5 | プロシージャの呼び出し、または引数が不正です。
6 | オーバーフローしました。
7 | メモリ不足です。
9 | インデックスが有効範囲にありません。
10 | 固定サイズの配列、または現在、この配列はサイズを変更できない状態にあります。
11 | 0 で除算しました。
13 | 型が一致しません。
14 | 文字列領域が不足しています。
17 | 要求された操作を実行できません。
28 | スタック領域が不足しています。
35 | Sub または Function が定義されていません。
48 | DLL 読み込み時のエラーです。
51 | 内部エラーです。
91 | オブジェクト型の変数は設定されていません。
92 | For ループは初期化されていません。
94 | Null 値の使い方が不正です。
424 | オブジェクトがありません。
429 | ActiveX コンポーネントはオブジェクトを作成できません。
430 | クラスはオートメーションをサポートしていません。
432 | オートメーションの操作中にファイル名またはクラス名を見つけられませんでした。
438 | オブジェクトでサポートされていないプロパティまたはメソッドです。
445 | このオブジェクトではサポートされていない操作です。
447 | 現在の国別情報の設定は、このオブジェクトではサポートされていません。
448 | 名前付き引数が不正です。
449 | 引数は省略できません。
450 | 引数の数が一致していません。または不正なプロパティを指定しています。
451 | オブジェクトがコレクションではありません。
458 | VBScript でサポートされていないオートメーションが変数で使用されています。
462 | リモート サーバ マシンが存在しないか、利用できません。
481 | ピクチャが不正です。
500 | この変数は宣言されていません。
502 | このオブジェクトは safe モードでは作成できません。
503 | このオブジェクトは safe モードでは初期化できません。
504 | このオブジェクトは safe モードでは作成できません。
505 | 不正な参照です。
506 | クラスが定義されていません。
507 | 例外が発生しました。
5008 | 不正な代入です。
5017 | 正規表現で構文エラーが発生しました。
5018 | 文字の繰り返しを表す正規表現演算子が不正です。
5019 | 正規表現の中に ']' を指定してください。
5020 | 正規表現の中に ')' を指定してください。
5021 | 文字セットの範囲が不正です。

参 照

VBScript 構文エラー


VBScript 構文エラー

VBScript 構文エラーは、VBScript ステートメントの構造が VBScript スクリプト言語の文法上の規則に違反した場合に発生するエラーです。VBScript 構文エラーは、プログラム実行前のコンパイル時に発生します。

エラー番号 | 内容
1001 | メモリ不足です。
1002 | 構文エラーです。
1005 | '(' がありません。
1006 | ')' がありません。
1010 | 識別子がありません。
1011 | '=' がありません。
1012 | 'If' がありません。
1013 | 'To' がありません。
1013 | 不正な数字です。
1014 | 'End' がありません。
1014 | 不正な文字です。
1015 | 'Function' がありません。
1015 | 終了していない文字列型の定数です。
1016 | 'Sub' がありません。
1017 | 'Then' がありません。
1018 | 'Wend' がありません。
1019 | 'Loop' がありません。
1020 | 'Next' がありません。
1021 | 'Case' がありません。
1022 | 'Select' がありません。
1023 | 式がありません。
1024 | ステートメントがありません。
1025 | ステートメントの末尾が不正です。
1026 | 整数型の定数がありません。
1027 | 'While' または 'Until' がありません。
1028 | 'While'、'Until' または終了するためのステートメントがありません。
1029 | 'With' がありません。
1030 | 識別子が長すぎます。
1037 | 'Me' キーワードの使い方が不正です。
1038 | 'do' がありません。
1039 | 不正な 'exit' ステートメントです。
1040 | 'for' ループを制御する変数が不正です。
1041 | 名前が二重に定義されています。
1042 | 行頭のみ許されるステートメントです。
1044 | Sub プロシージャを呼び出すときに、かっこを使うことはできません。
1045 | リテラル定数を指定してください。
1046 | 'In' がありません。
1047 | 'Class' がありません。
1048 | クラスの内部で宣言しなければなりません。
1049 | プロパティの宣言に Let、Set または Get がありません。
1050 | 'Property' ステートメントがありません。
1051 | プロパティで指定した引数の数は、同じでなければなりません。
1052 | クラスでは、既定のプロパティ/メソッドを複数個選択することはできません。
1053 | クラスの初期化または終了に引数がありません。
1054 | Property set または Property let には少なくとも 1 つの引数が必要です。
1055 | 'Next' が不正です。
1057 | 'Default' 指定する場合には、'Public' も指定されていなければなりません。
1058 | 'Default' の指定は、Property Get にのみ適用されます。

参 照

VBScript ランタイム エラー


VBScript のイベント

内容 | 言語要素
関連付けられたクラスのインスタンスが作成されたときに発生します。 | Initialize イベント
関連付けられたクラスのインスタンスが終了したときに発生します。 | Terminate イベント

参 照

VBScript ランゲージ リファレンス


Initialize イベント

関連付けられたクラスのインスタンスが作成されたときに発生します。

Private Sub Class_Initialize()
   statements
End Sub

statements は、クラスが初期化されるときに実行される 0 個以上のステートメントを表します。

解説

次のコードは、Initialize イベントの使用例です。

Class TestClass
   Private Sub Class_Initialize   ' Initialize イベントを設定します。
      MsgBox("TestClass started")
   End Sub
   Private Sub Class_Terminate   ' Terminate イベントを設定します。
      MsgBox("TestClass terminated")
   End Sub
End Class

Set X = New TestClass   ' TestClass のインスタンスを作成します。
Set X = Nothing   ' インスタンスを破棄します。

必要条件

バージョン 5

参 照

Class オブジェクト | Class ステートメント | Terminate イベント

対象: Class オブジェクト


Terminate イベント

関連付けられたクラスのインスタンスが終了したときに発生します。

Private Sub Class_Terminate()
   statements
End Sub

statements は、クラスが初期化されるときに実行される 0 個以上のステートメントを表します。

解説

次のコードは、Terminate イベントの使用例です。

Class TestClass
   Private Sub Class_Initialize   ' Initialize イベントを設定します。
      MsgBox("TestClass started")
   End Sub
   Private Sub Class_Terminate   ' Terminate イベントを設定します。
      MsgBox("TestClass terminated")
   End Sub
End Class
Set X = New TestClass   ' TestClass のインスタンスを作成します。
Set X = Nothing      ' インスタンスを破棄します。

必要条件

バージョン 5

参 照

Class オブジェクト | Class ステートメント | Initialize イベント

対象: Class オブジェクト


VBScript の関数

内容 | 言語要素
指定された数値の絶対値を返す数値演算関数です。 | Abs 関数
配列が格納されたバリアント型 (Variant) の値を返します。 | Array 関数
指定された文字列内の、最初の文字の ANSI コードまたはシフト JIS コードを返す変換関数です。 | Asc 関数
指定された角度のアークタンジェントを倍精度浮動小数点数型 (Double) の値で返す数値演算関数です。 | Atn 関数
指定された式をバリアント型 (内部処理形式がブール型 (Boolean) の Variant) にする変換関数です。 | CBool 関数
指定された式をバリアント型 (内部処理形式がバイト型 (Byte) の Variant) にする変換関数です。 | CByte 関数
指定された式をバリアント型 (内部処理形式が通貨型 (Currency) の Variant) にする変換関数です。 | CCur 関数
指定された式をバリアント型 (内部処理形式が日付型 (Date) の Variant) にする変換関数です。 | CDate 関数
指定された式をバリアント型 (内部処理形式が倍精度浮動小数点数型 (Double) の Variant) にする変換関数です。 | CDbl 関数
指定された ANSI コードまたはシフト JIS コードに対応する文字を返します。 | Chr 関数
指定された式をバリアント型 (内部処理形式が整数型 (Integer) の Variant) にする変換関数です。 | CInt 関数
指定された式をバリアント型 (内部処理形式が長整数型 (Long) の Variant) にする変換関数です。 | CLng 関数
指定された角度のコサインを倍精度浮動小数点数型 (Double) の値で返す数値演算関数です。 | Cos 関数
オートメーション オブジェクトを作成します。 | CreateObject 関数
指定された式をバリアント型 (内部処理形式が単精度浮動小数点型 (Single) の Variant) にする変換関数です。 | CSng 関数
指定された式をバリアント型 (内部処理形式が文字列型 (String) の Variant) にする変換関数です。 | CStr 関数
現在のシステムの日付を返します。 | Date 関数
指定された時間間隔を加算した日付を返します。 | DateAdd 関数
指定された 2 つの日付の時間間隔を返します。 | DateDiff 関数
指定された日付の一部分を返します。 | DatePart 関数
引数に指定された年、月、日に対応する日付をバリアント型 (内部処理形式が日付型 (Date) の Variant) の値で返します。 | DateSerial 関数
指定された日付をバリアント型 (内部処理形式が日付型 (Date) の Variant) の値で返します。 | DateValue 関数
月の何日かを表す 1 ～ 31 の範囲の整数を返します。 | Day 関数
式を評価し、結果を返します。 | Eval 関数
指数関数 (e を底とする数式のべき乗) を計算する数値演算関数です。 | Exp 関数
指定されたフィルタ条件に基づいた文字列配列のサブセットを含むゼロ ベースの配列を返します。 | Filter 関数
引数に指定された数式の小数部を切り捨て、整数部分だけを返す数値演算関数です。 | Fix 関数
システムの [コントロール パネル] で定義されている通貨記号を使って通貨形式の文字列に書式設定して返す文字列処理関数です。 | FormatCurrency 関数
日付形式または時刻形式の文字列に書式設定して返す文字列処理関数です。 | FormatDateTime 関数
数値形式の文字列に書式設定して返す文字列処理関数です。 | FormatNumber 関数
パーセント記号 (%) が付加されたパーセント形式 (100 で乗算した) の文字列に書式設定して返す文字列処理関数です。 | FormatPercent 関数
現在のロケール ID の値を返します。 | GetLocale 関数
ファイルから取得したオートメーション オブジェクトへの参照を返します。 | GetObject 関数
イベントとバインドできるプロシージャに対する参照を返します。 | GetRef 関数
指定された値を 16 進数で表した文字列で返します。 | Hex 関数
1 日の時刻を表す 0 ～ 23 の範囲の整数を返します。 | Hour 関数
ダイアログ ボックスにメッセージとテキスト ボックスを表示し、テキストが入力されるか、またはボタンがクリックされると、テキスト ボックスの内容を返します。 | InputBox 関数
ある文字列 (string1) の中から指定された文字列 (string2) を検索し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。 | InStr 関数
ある文字列 (string1) の中から指定された文字列 (string2) を最後の文字位置から検索を開始し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。 | InStrRev 関数
引数に指定された数式の小数部を切り捨て、整数部分だけを返す数値演算関数です。 | Int 関数
変数が配列であるかどうかを調べ、結果をブール値で返します。 | IsArray 関数
式を日付に変換できるかどうかを調べ、結果をブール値で返します。 | IsDate 関数
変数が初期化されたかどうかを調べ、結果をブール値で返します。 | IsEmpty 関数
式に Null 値が含まれているかどうかを調べ、結果をブール値で返します。 | IsNull 関数
式が数値として評価できるかどうかを調べ、結果をブール値で返します。 | IsNumeric 関数
式がオートメーション オブジェクトを参照しているかどうかを調べ、結果をブール値で返します。 | IsObject 関数
配列に含まれる各要素の内部文字列を結合して作成される文字列を返します。 | Join 関数
配列の指定された次元で使用できるインデックス番号の最小値を返します。 | LBound 関数
アルファベットの大文字を小文字に変換する文字列処理関数です。 | LCase 関数
文字列の左端から指定された文字数分の文字列を返します。 | Left 関数
指定された文字列の文字数を返します。 | Len 関数
ピクチャ オブジェクトを返します。32 ビット版プラットフォームでのみ使用できます。 | LoadPicture 関数
数値の自然対数を返す数値演算関数です。 | Log 関数
先頭にスペースのない文字列のコピーを返します。 | LTrim 関数
文字列から指定された文字数分の文字列を返します。 | Mid 関数
時刻の分を表す 0 ～ 59 の範囲の整数を返します。 | Minute 関数
1 年の何月かを表す 0 ～ 12 の範囲の整数を返します。 | Month 関数
指定された月を表す文字列を返します。 | MonthName 関数
ダイアログ ボックスにメッセージを表示し、ボタンがクリックされるのを待って、どのボタンがクリックされたかを示す値を返します。 | MsgBox 関数
コンピュータのシステムの日付と時刻の設定に基づいて、現在の日付と時刻を返します。 | Now 関数
指定された値を 8 進数で返します。 | Oct 関数
指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します。 | Replace 関数
RGB カラー値を表す値を返します。 | RGB 関数
文字列の右端から指定された文字数分の文字列を返します。 | Right 関数
単精度浮動小数点数型 (Single) の乱数を返します。 | Rnd 関数
指定された小数点位置で丸めた数値を返します。 | Round 関数
末尾にスペースのない文字列のコピーを返します。 | RTrim 関数
使用中のスクリプト言語を表す文字列を返します。 | ScriptEngine 関数
使用中のスクリプト エンジンのビルド バージョン番号を返します。 | ScriptEngineBuildVersion 関数
使用中のスクリプト エンジンのメジャー バージョン番号を返します。 | ScriptEngineMajorVersion 関数
使用中のスクリプト エンジンのマイナ バージョン番号を返します。 | ScriptEngineMinorVersion 関数
時間の秒を表す 0 ～ 59 の整数を返します。 | Second 関数
引数に指定された数式の符号を返します。 | Sgn 関数
指定された角度のサインを返します。 | Sin 関数
指定された数のスペースから成る文字列を返します。 | Space 関数
各要素ごとに区切られた文字列からゼロ ベースの 1 次元配列を作成し、返します。 | Split 関数
数式の平方根を返します。 | Sqr 関数
文字列比較の結果を表す値を返します。 | StrComp 関数
指定された文字コード (ASCII またはシフト JIS コード) の示す文字、または文字列の先頭文字を、指定された文字数だけ並べた文字列を返します。 | String 関数
指定された文字列の文字の並び順を逆にした文字列を返します。 | StrReverse 関数
指定された角度のタンジェントを返します。 | Tan 関数
現在のシステムの時刻を返します。 | Time 関数
午前 0:00 以降に経過した秒数を返します。 | Timer 関数
引数に指定された時、分、秒に対応する時刻を返します。 | TimeSerial 関数
時刻を返します。 | TimeValue 関数
先頭または末尾にスペースのない文字列のコピーを返します。 | Trim 関数
指定された変数に関する情報を提供する文字列を返します。 | TypeName 関数
配列で指定した次元で使用できるインデックス番号の最大値を返します。 | UBound 関数
指定されたアルファベットの小文字を大文字に変換します。 | UCase 関数
変数の内部処理形式を表す値を返します。 | VarType 関数
何曜日であるかを表す 1 (日曜) ～ 7 (土曜) の範囲の値を返します。 | Weekday 関数
指定された曜日を表す文字列を返します。 | WeekdayName 関数
年を表す整数を返します。 | Year 関数

参 照

VBScript ランゲージ リファレンス


Abs 関数

指定された数値の絶対値を返す数値演算関数です。

Abs(number)

引数 number には、任意の有効な数式を指定します。引数 number に Null 値が含まれている場合、Null 値を返します。また引数 number に値が割り当てられる前の変数が指定されている場合は、0 を返します。

解説

数値の絶対値とは、その数値から符号を取り除いたものです。たとえば、Abs(-1) と Abs(1) は、どちらも 1 を返します。

次のコードは、Abs 関数を使って数値の絶対値を計算する例です。

Dim MyNumber
MyNumber = Abs(50.3)  ' 50.3 を返します。
MyNumber = Abs(-50.3) ' 50.3 を返します。

必要条件

バージョン 1

参 照

Sgn 関数


Array 関数

配列が格納されたバリアント型 (Variant) の値を返します。

Array(arglist)

引数 arglist には、値のリストをカンマ (,) で区切って指定します。指定した値は、バリアント型 (Variant) に格納される配列の各要素に代入されます。引数 arglist を指定しない場合は、長さ 0 の配列が作成されます。

解説

配列の要素を参照するには、変数名の後にかっこを付け、かっこの中に参照する要素のインデックス番号を指定します。次のコード例の最初のステートメントでは、バリアント型の変数 A を宣言しています。2 番目のステートメントでは、変数 A に配列を代入しています。最後のステートメントでは、配列の 2 番目の要素に格納されている値を、別の変数に代入しています。

Dim A
A = Array(10,20,30)
B = A(2)   ' B の値は、30 です。
メモ 配列として宣言していないバリアント型に、配列を格納できます。また、バリアント型の変数には、固定長文字列およびユーザー定義型以外の型の配列を格納できます。配列を格納したバリアント型は、バリアント型の要素を持つ配列とは概念的に異なりますが、各要素に対する処理方法は同じです。

必要条件

バージョン 2

参 照

Dim ステートメント


Asc 関数

指定された文字列内の、最初の文字の ANSI コードまたはシフト JIS コードを返す変換関数です。

Asc(string)

引数 string には、任意の文字列式を指定します。引数 string に文字が含まれていない場合は、実行時エラーが発生します。

解説

次のコードは、Asc 関数を使って各文字列の最初の文字の ANSI コードを返す例です。

Dim MyNumber
MyNumber = Asc("A")       ' 65を返します。
MyNumber = Asc("a")       ' 97を返します。
MyNumber = Asc("Apple")   ' 65を返します。
メモ 文字列に含まれたバイト データを取得するには、AscB 関数を使います。AscB 関数は、最初の文字の文字コードではなく、最初のバイト データを返します。AscW 関数は、Unicode に対応している 32 ビット プラットホームのために用意されています。AscW は Unicode (wide) 文字コードを返すので、Unicode から ANSI への変換を避けられます。

必要条件

バージョン 1

参 照

Chr 関数


Atn 関数

指定された角度のアークタンジェントを返します。

Atn(number)

引数 number には、任意の有効な数式を指定します。

解説

Atn 関数は、直角三角形の 2 辺の比を引数 (number) として受け取り、対応する角度を返します。ここでいう 2 辺とは、直角をはさむ 2 つの辺を指します。2 辺の比は、指定した角の反対側の辺 (対辺) の長さを、もう一方の辺 (底辺、つまり指定した角に隣接する側の辺) の長さで割った値です。戻り値は、-π/2 ～ π/2 の範囲の値 (単位はラジアン) になります。

角度の単位を度からラジアンに変換するには、度にπ/180 を掛けます。ラジアンから度に変換するには、ラジアンに 180/πを掛けます。

次のコードは、Atn 関数を使用してπの値を計算する例です。

Dim pi
pi = 4 * Atn(1)   ' πの値を計算します。
メモ Atn 関数は Tan 関数の逆三角関数です。Atn 関数は、引数として角度を受け取り、その角度を含む直角三角形の直角をはさむ 2 辺の比を返します。Atn 関数と、タンジェントの逆数であるコタンジェント (1/タンジェント) を間違えないように注意してください。

必要条件

バージョン 1

参 照

Cos 関数 | 超越関数 | Sin 関数 | Tan 関数


CBool 関数

指定された式をバリアント型 (内部処理形式がブール型 (Boolean) の Variant) に変換して返します。

CBool(expression)

引数 expression には、任意の式を指定します。

解説

引数 expression が 0 のときは、偽 (False) を返します。それ以外のときは、真 (True) を返します。引数 expression が数値として扱えないときは、実行時エラーが発生します。

次のコードは、CBool 関数を使って式をブール型 (Boolean) に変換する例です。次のコードは、CBool 関数を使って式をブール型 (Boolean) に変換する例です。

Dim A, B, Check
A = 5: B = 5           ' 変数を初期化します。
Check = CBool(A = B)   ' Check は、真 (True) を含みます。
A = 0                  ' 変数を定義します。
Check = CBool(A)       ' Check は、偽 (False) を含みます。

必要条件

バージョン 1

参 照

CByte 関数 | CCur 関数 | CDate 関数 | CDbl 関数 | CInt 関数 | CLng 関数 | CSng 関数 | CStr 関数


CByte 関数

指定された式をバリアント型 (内部処理形式がバイト型 (Byte) の Variant) に変換して返します。

CByte(expression)

引数 expression には、任意の式を指定します。

解説

ある操作結果を既定のデータ型ではなく、特定のデータ型として表す必要がある場合には、通常、内部処理形式変換関数を使ってコードを記述します。CByte 関数を使うと、通常、通貨型 (Currency)、単精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double) を使う計算の中で、バイト型 (Byte) の数値を使用できます。

ほかのデータ型からバイト型 (Byte) の内部処理形式に変換するときは、CByte 関数を使います。システムのロケールの設定に従って、その国で使われている小数点記号や桁区切りの記号が正しく処理されます。

引数 expression にバイト型の許容範囲を超える値が指定された場合、エラーが発生します。次のコードは、CByte 関数を使って式をバイト型 (Byte) に変換する例です。

Dim MyDouble, MyByte
MyDouble = 125.5678        ' MyDouble は、倍精度浮動小数点数型 (Double) です。
MyByte = CByte(MyDouble)   ' MyByte は、126 を含みます。

必要条件

バージョン 1

参 照

CBool 関数 | CCur 関数 | CDate 関数 | CDbl 関数 | CInt 関数 | CLng 関数 | CSng 関数 | CStr 関数


CCur 関数

指定された式をバリアント型 (内部処理形式が通貨型 (Currency) の Variant) に変換して返します。

CCur(expression)

引数 expression には、任意の式を指定します。

解説

ある操作結果を既定のデータ型ではなく、特定のデータ型として表す必要がある場合には、通常、内部処理形式変換関数を使ってコードを記述します。CCur 関数を使うと、通常、整数型 (Integer) を使う計算の中で、通貨型の数値を使用できます。

ほかのデータ型から通貨型の内部処理形式に変換するときは、ロケールを基に変換を行う CCur 関数を使います。システムのロケールの設定に従って、その国で使われている小数点記号や桁区切り記号が正しく処理されます。

次のコードは、CCur 関数を使って式を通貨型 (Currency) に変換する例です。

Dim MyDouble, MyCurr
MyDouble = 543.214588         ' MyDouble は、倍精度浮動小数点数型 (Double) です。
MyCurr = CCur(MyDouble * 2)   ' MyDouble * 2 (1086.429176) の結果を通貨型 (Currency) (1086.4292) に変換します。

必要条件

バージョン 1

参 照

CBool 関数 | CByte 関数 | CDate 関数 | CDbl 関数 | CInt 関数 | CLng 関数 | CSng 関数 | CStr 関数


CDate 関数

指定された式をバリアント型 (内部処理形式が日付型 (Date) の Variant) に変換して返します。

CDate(date)

引数 date には、任意の日付式を指定します。

解説

IsDate 関数は、日付リテラル、時刻リテラル、および日付と解釈できる数値を引数として受け取ります。数値を日付に変換するとき、整数部の値が日付に変換されます。小数点以下の値は、午前 0 時から始まる時間に変換されます。IsDate 関数を使うと、引数 date に指定する値が日付や時間に変換できるかどうかを確認できます。

CDate 関数は、ロケールに従って、日付の形式を認識します。認識できない日付の設定があるときには、年、月、日の表示の順番を正しく決定できないこともあります。また、日付の形式が曜日を含む長い形式の場合も認識できません。

次のコードは、CDate 関数を使って文字列型 (String) を日付型 (Date) に変換する例です。通常、次の例のような、ハードコーディングされた文字列型 (String) の日時の使用は推奨されません。#10/19/1962# や #4:45:23 PM# のように、日付リテラルや時刻リテラルを使用してください。

MyDate = "October 19, 1962"   ' 日付を定義します。
MyShortDate = CDate(MyDate)   ' 日付型 (Date) に変換します。
MyTime = "4:35:47 PM"         ' 時刻を定義します。
MyShortTime = CDate(MyTime)   ' 日付型 (Date) に変換します。

必要条件

バージョン 1

参 照

IsDate 関数


CDbl 関数

指定された式をバリアント型 (内部処理形式が倍精度浮動小数点数型 (Double) の Variant) に変換して返します。

CDbl(expression)

引数 expression には、任意の式を指定します。

解説

ある操作結果を既定のデータ型ではなく、特定のデータ型として表す必要がある場合には、通常、内部処理形式変換関数を使ってコードを記述します。CSng 関数を使うと、通常、通貨型 (Currency) または整数型 (Integer) を使う計算の中で、単精度浮動小数点数型の数値を使用できます。

ほかのデータ型から倍精度浮動小数点数型の内部処理形式に変換するときは、ロケールを基に変換を行う CDbl 関数を使います。システムのロケールの設定に従って、その国で使われている小数点記号や桁区切り記号が正しく処理されます。

次のコードは、CDbl 関数を使って式を倍精度浮動小数点型 (Double) に変換する例です。

Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)              ' MyCurr は、通貨型 (Currency) (234.4567) です。
MyDouble = CDbl(MyCurr * 8.2 * 0.01)   ' 結果を倍精度浮動小数点数型 (Double) (19.2254576) に変換します。

必要条件

バージョン 1

参 照

CBool 関数 | CByte 関数 | CCur 関数 | CDate 関数 | CInt 関数 | CLng 関数 | CSng 関数 | CStr 関数


Chr 関数

指定された ANSI コードまたはシフト JIS コードに対応する文字を返します。

Chr(charcode)

引数 charcode には、ANSI コードまたはシフト JIS コードなどの文字コードを指定します。

解説

ASCII コード 0 ～ 31 の範囲の文字は表示できません。たとえば、Chr(10) は、ライン フィード文字を返します。

次のコードは、Chr 関数を使って指定された文字コードに対応する文字を返す例です。

Dim MyChar
MyChar = Chr(65)   ' A を返します。
MyChar = Chr(97)   ' a を返します。
MyChar = Chr(62)   ' > を返します。
MyChar = Chr(37)   ' % を返します。
メモ 文字列をバイト データとして扱う場合は、ChrB 関数を使用してください。ChrB 関数は文字ではなく、1 バイトを返します。AscW 関数は、Unicode に対応している 32 ビット プラットホームのために用意されています。AscW は Unicode (wide) 文字コードを返すので、Unicode から ANSI への変換を避けられます。

必要条件

バージョン 1

参 照

Asc 関数


CInt 関数

指定された式をバリアント型 (内部処理形式が整数型 (Integer) の Variant) に変換して返します。

CInt(expression)

引数 expression には、任意の式を指定します。

解説

ある操作結果を既定のデータ型ではなく、特定のデータ型として表す必要がある場合には、通常、内部処理形式変換関数を使ってコードを記述します。CInt 関数を使うと、通常、通貨型 (Currency)、単精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double) を使う計算の中で、整数型 (Integer) の数値を使用できます。

ほかのデータ型から整数型の内部処理形式に変換するときは、ロケールを基に変換を行う CInt 関数を使います。システムのロケールの設定に従って、その国で使われている小数点記号や桁区切りの記号が正しく処理されます。

引数 expression に整数型の許容範囲を超える値が指定された場合、エラーが発生します。

次のコードは、CInt 関数を使って整数型 (Integer) に変換する例です。

Dim MyDouble, MyInt
MyDouble = 2345.5678     ' MyDouble は、倍精度浮動小数点数型 (Double) です。
MyInt = CInt(MyDouble)   ' MyInt は、2346 です。
メモ CInt 関数は小数部分を丸めますが、Fix 関数と Int 関数は小数部分を切り捨てます。小数部分が 0.5 の場合は、CInt 関数は常に最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 に、それぞれ丸めます。

必要条件

バージョン 1

参 照

CBool 関数 | CByte 関数 | CCur 関数 | CDate 関数 | CDbl 関数 | CLng 関数 | CSng 関数 | CStr 関数 | Int 関数、Fix 関数


CLng 関数

指定された式をバリアント型 (内部処理形式が長整数型 (Long) の Variant) に変換して返します。

CLng(expression)

引数 expression には、任意の式を指定します。

解説

ある操作結果を既定のデータ型ではなく、特定のデータ型として表す必要がある場合には、通常、内部処理形式変換関数を使ってコードを記述します。CInt 関数を使うと、通常、通貨型 (Currency)、単精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double) を使う計算の中で、整数型 (Integer) の数値を使用できます。

ほかのデータ型から長整数型 (Long) の内部処理形式に変換するときは、CLng 関数を使います。システムのロケールの設定に従って、その国で使われている小数点記号や桁区切りの記号が正しく処理されます。

引数 expression に長整数型の許容範囲を超える値が指定された場合、エラーが発生します。

次のコードは、CLng 関数を使って値を長整数型 (Long) に変換する例です。

Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45: MyVal2 = 25427.55   ' MyVal1 と MyVal2 は、倍精度浮動小数点数型 (Double) です。
MyLong1 = CLng(MyVal1)   ' MyLong1 は、25427 です。
MyLong2 = CLng(MyVal2)   ' MyLong2 は、25428 です。
メモ CLng 関数は小数部分を丸めますが、Fix 関数と Int 関数は小数部分を切り捨てます。小数部分が 0.5 の場合は、CLng 関数は常に最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 に、それぞれ丸めます。

必要条件

バージョン 1

参 照

CBool 関数 | CByte 関数 | CCur 関数 | CDate 関数 | CDbl 関数 | CInt 関数 | CSng 関数 | CStr 関数 | Int 関数、Fix 関数


変換関数

Asc 関数

CBool 関数

CByte 関数

CCur 関数

CDate 関数

CDbl 関数

Chr 関数

CInt 関数

CLng 関数

CSng 関数

CStr 関数

Hex 関数

Oct 関数


Cos 関数

角度のコサインを返します。

Cos(number)

引数 number には、任意の数式 (単位はラジアン) を指定します。

解説

Cos 関数は、角度を引数として受け取り、その角度を含む直角三角形の 2 辺の比を返します。ここでいう 2 辺とは、引数 number に指定した角をはさむ 2 つの辺を指します。2 辺の比は、短い方の辺 (底辺) の長さを、もう一方の辺 (斜辺) の長さで割った値です。戻り値は、-1 ～ 1 の範囲の値になります。

角度の単位を度からラジアンに変換するには、度にπ/180 を掛けます。ラジアンから度に変換するには、ラジアンに 180/πを掛けます。

次のコードは、Cos 関数を使って角度のコサイン値を返します。

Dim MyAngle, MySecant
MyAngle = 1.3                 ' 角度をラジアンで定義します。
MySecant = 1 / Cos(MyAngle)   ' セカントを計算します。

必要条件

バージョン 1

参 照

Atn 関数 | 超越関数 | Sin 関数 | Tan 関数


CreateObject 関数

オートメーション オブジェクトへの参照を作成して返します。

CreateObject(servername.typename [, location])

引数

servername
必ず指定します。オブジェクトを提供しているアプリケーションの名前を指定します。
typename
必ず指定します。作成するオブジェクトの種類またはクラスを指定します。
location
省略可能です。オブジェクトが作成されるサーバーの名前を指定します。

解説

オートメーション サーバーは、少なくとも 1 種類のオブジェクトを提供しています。たとえば、ワード プロセッサであれば、アプリケーション オブジェクト、文書オブジェクト、ツールバー オブジェクトなどが提供されます。

オートメーション オブジェクトを作成するには、CreateObject 関数の戻り値をオブジェクト変数に代入します。

Dim ExcelSheet
Set ExcelSheet = CreateObject("Excel.Sheet")

このコード例では、オブジェクトを提供するアプリケーション (この場合、Microsoft Excel のワークシート) が起動します。定義したオブジェクト変数を使って、コード内で作成されたオブジェクトを参照することができます。次のコードは、ActiveSheet.Cells コレクションの Application オブジェクトに含まれるオブジェクト変数 ExcelSheet およびその他の Excel オブジェクトを使って、新しく作成されたオブジェクトのプロパティやメソッドを操作する例です。

' Application オブジェクトから Excel のワークシートを表示します。
ExcelSheet.Application.Visible = True
' ワークシートの最初のセルにテキストを入力します。
ExcelSheet.ActiveSheet.Cells(1,1).Value = "この位置は、1 行 A 列目です。"
' ワークシートを名前を付けて保存します。
ExcelSheet.SaveAs "C:\DOCS\TEST.XLS"
' Application オブジェクトの Quit メソッドで Excel を終了します。
ExcelSheet.Application.Quit
' オブジェクト変数を開放します。
Set ExcelSheet = Nothing

リモート サーバー上のオブジェクトの作成は、インターネットのセキュリティが切られている場合のみ行うことができます。コンピュータ名を CreateObject 関数の引数 servername に渡すことで、リモートのネットワークで接続されたコンピュータ上にオブジェクトを作成できます。この名前は、共有名のマシン名の部分と同じです。たとえば、"\\myserver\public" というネットワークの共有名では、"myserver" が servername となります。さらに、DNS 形式または IP アドレスを使用して servername を指定することもできます。

次のコードは、"Myserver" という名前のリモート ネットワーク コンピュータ上で実行されている、Excel のインスタンスのバージョン番号を返す例です。

Function GetVersion
   Dim XLApp
   Set XLApp = CreateObject("Excel.Application", "MyServer")
   GetVersion = XLApp.Version
End Function

指定したリモート サーバーが、ネットワーク上に存在しないか見つからない場合、エラーが発生します。

必要条件

バージョン 2

参 照

GetObject 関数


CSng 関数

指定された式をバリアント型 (内部処理形式が単精度浮動小数点数型 (Single) の Variant) に変換して返します。

CSng(expression)

引数 expression には、任意の式を指定します。

解説

ある操作結果を既定のデータ型ではなく特定のデータ型として表す必要がある場合には、通常、内部処理形式変換関数を使ってコードを記述します。CSng 関数を使うと、通常、通貨型 (Currency) または整数型 (Integer) を使う計算の中で、単精度浮動小数点数型の数値を使用できます。

ほかのデータ型から単精度浮動小数点数型の内部処理形式に変換するときは、ロケールを基に変換を行う CSng 関数を使います。システムのロケールの設定に従って、その国で使われている小数点記号や桁区切りの記号が正しく処理されます。

引数 expression に単精度浮動小数点数型の許容範囲を超える値が指定された場合、エラーが発生します。

次のコードは、CSng 関数を使って値を単精度浮動小数点数型 (Single) に変換する例です。

Dim MyDouble1, MyDouble2, MySingle1, MySingle2   ' MyDouble1 と MyDouble2 は、倍精度浮動小数点数型 (Double) です。
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)   ' MySingle1 は、75.34211 です。
MySingle2 = CSng(MyDouble2)   ' MySingle2 は、75.34216 です。

必要条件

バージョン 1

参 照

CBool 関数 | CByte 関数 | CCur 関数 | CDate 関数 | CDbl 関数 | CInt 関数 | CLng 関数 | CStr 関数


CStr 関数

指定された式をバリアント型 (内部処理形式が文字列型 (String) の Variant) に変換して返します。

CStr(expression)

引数 expression には、任意の式を指定します。

解説

ある操作結果を既定のデータ型ではなく特定のデータ型として表す必要がある場合には、通常、内部処理形式変換関数を使ってコードを記述します。CStr 関数を使うと、引数に指定された式を文字列型に変換します。

ほかのデータ型から文字列型の内部処理形式に変換するときは、ロケールを基に変換を行う CStr 関数を使います。システムのロケールの設定に従って、その国で使われている小数点記号や桁区切りの記号が正しく処理されます。

次の表は、引数 expression に指定された式と、CStr 関数の戻り値を示しています。

引数 | CStr の戻り値
ブール型 (Boolean) | 真 (True) または偽 (False) を表す文字列。
日付型 (Date) | ロケールで設定されている短い形式の日付を表す文字列。
Null 値 | 実行時エラーが発生します。
Empty 値 | 長さ 0 の文字列 ("")。
エラー型 | "エラー値" という文字列 (ロケールにより異なります) と、エラー (Error) 値として格納されている数値を合わせた文字列。
数式以外 | 数値を表す文字列。

次のコードは、CStr 関数を使い数値を文字列型 String に変換する例です。

Dim MyDouble, MyString
MyDouble = 437.324         ' MyDouble は、倍精度浮動小数点数型 (Double) です。
MyString = CStr(MyDouble)   ' MyString は、"437.324" です。

必要条件

バージョン 1

参 照

CBool 関数 | CByte 関数 | CCur 関数 | CDate 関数 | CDbl 関数 | CInt 関数 | CLng 関数 | CSng 関数


Date 関数

現在のシステムの日付を返します。

Date

解説

次のコードは、Date 関数を使って現在のシステムの日付を返します。

Dim MyDate
MyDate = Date   ' MyDate は、現在のシステムの日付です。

必要条件

バージョン 1

参 照

CDate 関数 | Now 関数 | Time 関数


DateAdd 関数

指定された時間間隔を加算した日付を返します。

DateAdd(interval, number, date)

引数

interval
必ず指定します。追加する時間間隔の単位を表す文字列式を指定します。設定する値については、次の「設定値」を参照してください。
number
必ず指定します。追加する時間間隔の数を表す数式を指定します。将来の日時を取得するには正の数を指定します。過去の日時を取得するには負の数を指定します。
date
必ず指定します。時間間隔を追加する日付を表すバリアント型 (Variant) の値またはリテラル文字列を指定します。

設定値

引数 interval の設定値は次のとおりです。

設定値 | 内容
yyyy | 年
q | 四半期
m | 月
y | 年間通算日
d | 日
w | 週日
ww | 週
h | 時
n | 分
s | 秒

解説

DateAdd 関数を使うと、ある日付に対して指定した時間間隔を、加えたり引いたりすることができます。たとえば、現在から 30 日後の日付や、現在から 45 分後の時刻などを計算できます。引数 date に日数を加えるには、年間通算日 ("y")、日 ("d")、週日 ("w") のいずれかを指定します。

DateAdd 関数は、無効な日付を返しません。次の例は、1 月 31 日に 1 か月を足します。

NewDate = DateAdd("m", 1, "31-Jan-95")

この場合、31-Feb-95 ではなく、28-Feb-95 が返されます。名前付き引数 date が 31-Jan-96 であれば、1996 年はうるう年なので 29-Feb-96 が返されます。

計算の結果、日付が西暦 100 年以前になる場合は、エラーが発生します。

名前付き引数 number に指定した値が長整数型 (Long) でない場合は、最も近い整数値に丸められてから評価されます。

必要条件

バージョン 2

参 照

DateDiff 関数 | DatePart 関数


DateDiff 関数

指定された 2 つの日付の時間間隔を返します。

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])

DateDiff 関数の構文は、次の指定項目から構成されます。

引数

interval
必ず指定します。引数 date1 と引数 date2 の間隔を計算するための、時間間隔の単位を表す文字列式を指定します。設定する値については、次の「設定値」を参照してください。
date1, date2
必ず指定します。日付式を指定します。間隔を計算する 2 つの日付を指定します。
firstdayofweek
省略可能です。週の始まりの曜日を表す定数を指定します。省略すると、日曜日が指定されます。設定する値については、次の「設定値」を参照してください。
firstweekofyear
省略可能です。年度の第 1 週を表す定数を指定します。省略すると、1 月 1 日を含む週が第 1 週と指定されます。設定する値については、次の「設定値」を参照してください。

設定値

引数 interval の設定値は次のとおりです。

設定値 | 内容
yyyy | 年
q | 四半期
m | 月
y | 年間通算日
d | 日
w | 週日
ww | 週
h | 時
n | 分
s | 秒

引数 firstdayofweek の設定値は次のとおりです。

定数 | 値 | 内容
vbUseSystemDayOfWeek | 0 | 各国語対応 (NLS) API の設定値を使用します。
vbSunday | 1 | 日曜 (既定値)
vbMonday | 2 | 月曜
vbTuesday | 3 | 火曜
vbWednesday | 4 | 水曜
vbThursday | 5 | 木曜
vbFriday | 6 | 金曜
vbSaturday | 7 | 土曜

引数 firstweekofyear の設定値は次のとおりです。

定数 | 値 | 内容
vbUseSystem | 0 | 各国語対応 (NLS) API の設定値を使用します。
vbFirstJan1 | 1 | (既定値) 1 月 1 日を含む週を年度の第 1 週として扱います。
vbFirstFourDays | 2 | 7 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週として扱います。
vbFirstFullWeek | 3 | 全体が新年度に含まれる最初の週を年度の第 1 週として扱います。

解説

DateDiff 関数を使うと、指定した時間単位で 2 つの日付の時間間隔を調べることができます。たとえば、2 つの日付の間の日数や、現在から年末までの週の数などを求めることができます。

引数 date1 と引数 date2 の間の日数を求めるには、年間通算日 ("y") か、日 ("d") のいずれかを指定します。引数 interval に週日 ("w") を指定すると、2 つの日付の間の週の数が計算されます。引数 date1 が月曜日の場合は、引数 date2 までの間の月曜日の数が返されます。このとき引数 date2 の月曜日は計算に入りますが、引数 date1 の月曜日は計算に入りません。一方、引数 interval に週 ("ww") を指定した場合は、2 つの日付の間の暦上の週の数が計算されます。つまり、引数 date1 と引数 date2 の間の日曜日の数が返されます。引数 date2 に指定した日付が日曜日であれば、引数 date2 は計算に入りますが、引数 date1 は日曜日であっても計算に入りません。

引数 date2 よりも時間的に後の日付を引数 date1 に指定すると、DateDiff 関数は負の数を返します。

引数 firstdayofweek は、引数 interval に週 ("ww") を指定した場合の計算値に影響します。

引数 date1 または date2 に日付リテラルを指定した場合、指定した年が日付の固定部分となります。ただし、引数 date1 または引数 date2 をダブル クォーテーション (") で囲み、年を省略すると、引数 date1 または引数 date2 の式が評価されるたびにコードに現在の年が挿入されます。これを利用すると、異なる年度で使用できるコードを記述することが可能になります。

12 月 31 日とその次の年の 1 月 1 日を比較すると、DateDiff 関数の年 ("yyyy") は、1 日後であっても、1 を返します。

次のコードは、DateDiff 関数を使って今日から指定日までの日数を表示する例です。

Function DiffADate(theDate)
   DiffADate = "日数: " & DateDiff("d", Now, theDate)
End Function

必要条件

バージョン 2

参 照

DateAdd 関数 | DatePart 関数


DatePart 関数

指定された日付の一部分を返します。

DatePart(interval, date[, firstdayofweek[, firstweekofyear]])

引数

interval
必ず指定します。時間間隔の単位を表す文字列式を指定します。設定する値については、次の「設定値」を参照してください。
date
必ず指定します。評価する日付式を指定します。
firstdayof week
省略可能です。週の始まりの曜日を表す定数を指定します。省略すると、日曜日が指定されます。設定する値については、次の「設定値」を参照してください。
firstweekofyear
省略可能です。年度の第 1 週を表す定数を指定します。省略すると、1 月 1 日を含む週が第 1 週と指定されます。設定する値については、次の「設定値」を参照してください。

設定値

引数 interval の設定値は次のとおりです。

設定値 | 内容
yyyy | 年
q | 四半期
m | 月
y | 年間通算日
d | 日
w | 週日
ww | 週
h | 時
n | 分
s | 秒

引数 firstdayofweek の設定値は次のとおりです。

定数 | 値 | 内容
vbUseSystemDayOfWeek | 0 | 各国語対応 (NLS) API の設定値を使用します。
vbSunday | 1 | 日曜 (既定値)
vbMonday | 2 | 月曜
vbTuesday | 3 | 火曜
vbWednesday | 4 | 水曜
vbThursday | 5 | 木曜
vbFriday | 6 | 金曜
vbSaturday | 7 | 土曜

引数 firstweekofyear の設定値は次のとおりです。

定数 | 値 | 内容
vbUseSystem | 0 | 各国語対応 (NLS) API の設定値を使用します。
vbFirstJan1 | 1 | (既定値) 1 月 1 日を含む週を年度の第 1 週として扱います。
vbFirstFourDays | 2 | 7 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週として扱います。
vbFirstFullWeek | 3 | 全体が新年度に含まれる最初の週を年度の第 1 週として扱います。

解説

DatePart 関数を使うと、日付を評価し、特定の時間間隔部分を取得できます。たとえば、週日や現在の時刻などを計算できます。

引数 firstdayofweek は、引数 interval に週 ("w" および "ww") を指定した場合の計算値に影響します。

引数 date に日付リテラルを指定した場合、指定した年が日付の固定部分となります。ただし、引数 date をダブル クォーテーション (") で囲み、年を省略すると、引数 date の式が評価されるたびにコードに現在の年が挿入されます。これを利用すると、異なる年度で使用できるコードを記述することが可能になります。

次のコードは、DatePart 関数を使って日付を取得し、その四半期を表示します。

Function GetQuarter(TheDate)
   GetQuarter = DatePart("q", TheDate)
End Function

必要条件

バージョン 2

参 照

DateAdd 関数 | DateDiff 関数


DateSerial 関数

引数に指定された年、月、日に対応する日付をバリアント型 (内部処理形式が日付型 (Date) の Variant) の値で返します。

DateSerial(year, month, day)

引数

year
年を表す 100 ～ 9999 の範囲の数値または任意の数式を指定します。
month
任意の数式を指定します。
day
任意の数式を指定します。

解説

日付を指定する場合、引数はそれぞれ正しい範囲内にある必要があります。月については 1 ～ 12、日については 1 ～ 31 です。また、ある日付からの相対的な年、月、日を表す数式を引数に指定することもできます。

次のコードは、直接日付を指定せずに式を使って相対的に日付を指定した例です。1990 年の 10 年前 (1990 - 10) の 8 月から 2 か月前 (8 - 2) の最初の日の前日 (1 - 1) の日付に対応する 1980 年 5 月 31 日を値として返します。

Dim MyDate1, MyDate2
MyDate1 = DateSerial(1970, 1, 1)   ' 1970 年 1 月 1 日を返します。
MyDate2 = DateSerial(1990 - 10, 8 - 2, 1 - 1)   ' 1980 年 5 月 31 日を返します。

引数 year に 0 ～ 99 の範囲の数値を指定すると、1900 ～ 1999 と読み替えられます。その範囲外の数値を引数 year に指定するには、完全な 4 桁の数値 (たとえば 1800) を指定してください。

各引数に指定する値が正しい範囲内にない場合、指定された値は引数に従って加算されます。たとえば、引数 day に 35 を指定すると、指定した年と月に応じて、指定した月と翌月に超過した分の日数として扱われます。ただし、各引数の値が -32,768 ～ 32,767 の範囲を超える場合、またはこの 3 つの引数で直接または相対的に指定された日付が、正しい日付の範囲内にない場合は、エラーが発生します。

必要条件

バージョン 1

参 照

Date 関数 | DateValue 関数 | Day 関数 | Month 関数 | Now 関数 | TimeSerial 関数 | TimeValue 関数 | Weekday 関数 | Year 関数


DateValue 関数

指定された日付をバリアント型 (内部処理形式が日付型 (Date) の Variant) の値で返します。

DateValue(date)

引数 date には、通常、100 年 1 月 1 日から 9999 年 12 月 31 日までの範囲の日付を表す文字列式を指定します。また、この範囲内の日付や時刻、または日付と時刻の両方を表す式を指定することもできます。

解説

引数 date に時刻の値が含まれている場合、DateValue 関数はその時刻を戻り値に含めません。ただし、引数 date に不正な時刻 (たとえば "89:98") を指定したときには、エラーが発生します。

引数 date が有効な日付の区切り記号によって区切られた数字だけの文字列の場合、その引数の年、月、日の順番は、コントロール パネルで設定した短い日付の書式に従って認識されます。また、DateValue 関数は、日付に月の名前が記述してあったり、省略した形式であっても認識します。たとえば、"1991/12/30" や "91/12/30" だけでなく、"平成 3 年 12 月 30 日" や "H3 - 12 - 30" などの形式で指定することもできます。

引数 date で年が省略して指定された場合、DateValue 関数はシステムの日付から現在の年を使います。

次のコードは、DateValue 関数を使って文字列を日付型 (Date) に変換する例です。"MyDate = #9/11/63#" のように、日付リテラルを直接バリアント型 (Variant) で指定することができます。

Dim MyDate
MyDate = DateValue("September 11, 1963")   ' 日付を返します。

必要条件

バージョン 1

参 照

CDate 関数 | DateSerial 関数 | Day 関数 | Month 関数 | Now 関数 | TimeSerial 関数 | TimeValue 関数 | Weekday 関数 | Year 関数


Day 関数

月の何日かを表す 1 ～ 31 の範囲の整数を返します。

Day(date)

引数 date には、日付を表す式を指定します。引数 date が有効な値ではない場合は、Null 値を返します。

次のコードは、Day 関数を使って指定された日付が月の何日かを取得する例です。

Dim MyDay
MyDay = Day("October 19, 1962")   ' MyDay は、19 です。

必要条件

バージョン 1

参 照

Date 関数 | Hour 関数 | Minute 関数 | Month 関数 | Now 関数 | Second 関数 | Weekday 関数 | Year 関数


超越関数

次の表は、組み込み関数から導くことができるその他の数値演算関数を示しています。

数値 | 組み込み関数を使った導出式
セカント | Sec(X) = 1 / Cos(X)
コセカント | Cosec(X) = 1 / Sin(X)
コタンジェント | Cotan(X) = 1 / Tan(X)
アークサイン | Arcsin(X) = Atn(X / Sqr(-X * X + 1))
アークコサイン | Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
アークセカント | Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) -1) * (2 * Atn(1))
アークコセカント | Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))
アークコタンジェント | Arccotan(X) = Atn(X) + 2 * Atn(1)
双曲線サイン | HSin(X) = (Exp(X) - Exp(-X)) / 2
双曲線コサイン | HCos(X) = (Exp(X) + Exp(-X)) / 2
双曲線タンジェント | HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))
双曲線セカント | HSec(X) = 2 / (Exp(X) + Exp(-X))
双曲線コセカント | HCosec(X) = 2 / (Exp(X) - Exp(-X))
双曲線コタンジェント | HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
双曲線アークサイン | HArcsin(X) = Log(X + Sqr(X * X + 1))
双曲線アークコサイン | HArccos(X) = Log(X + Sqr(X * X - 1))
双曲線アークタンジェント | HArctan(X) = Log((1 + X) / (1 - X)) / 2
双曲線アークセカント | HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
双曲線アークコセカント | HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) +1) / X)
双曲線アークコタンジェント | HArccotan(X) = Log((X + 1) / (X - 1)) / 2
対数 | LogN(X) = Log(X) / Log(N)

参 照

Atn 関数 | Cos 関数 | Exp 関数 | Log 関数 | Sin 関数 | Sqr 関数 | Tan 関数


Eval 関数

式を評価し、結果を返します。

[result = ]Eval(expression)

引数

result
省略可能です。戻り値が代入される変数を指定します。result を指定しない場合は、Execute ステートメントで代用することを検討してください。
expression
必ず指定します。任意の正しい VBScript の式を含む文字列を指定します。

解説

VBScript では、x = y の解釈が 2 とおりあります。1 つ目は代入ステートメントとして解釈され、y の値が x に代入されます。2 つ目は x と y の値が等しいかどうかをテストする式として解釈されます。等しい場合、result は True です。それ以外の場合、result は False です。Eval メソッドは常に 2 つ目の解釈を適用し、Execute ステートメントは常に 1 つ目の解釈を適用します。

メモ Microsoft® JScript™ では、代入と比較を混同することはありません。代入演算子 (=) は比較演算子 (==) と異なるからです。

次のコードは、Eval 関数の使用例です。

Sub GuessANumber
   Dim Guess, RndNum
   RndNum = Int((100) * Rnd(1) + 1)
   Guess = CInt(InputBox("当たりだと思う数字を入力してください。",,0))
   Do
      If Eval("Guess = RndNum") Then
         MsgBox "おめでとう ! 当たりです。"
         Exit Sub
      Else
         Guess = CInt(InputBox("残念 ! もう一度。",,0))
      End If
   Loop Until Guess = 0
End Sub

必要条件

バージョン 5

参 照

Execute ステートメント


Exp 関数

指数関数 (e を底とする数式のべき乗) を計算する数値演算関数です。

Exp(number)

引数 number には、任意の有効な数式を指定します。

解説

引数 number の値が 709.782712893 を超えると、オーバーフロー エラーが発生します。定数 e の値は約 2.718282 です。

メモ Exp 関数は Log 関数の逆関数であり、逆対数と呼ばれることもあります。

次のコードは、Exp 関数を使って指数関数を返す例です。

Dim MyAngle, MyHSin   ' 角度をラジアンで定義します。
MyAngle = 1.3   ' 双曲線のサインを計算します。
MyHSin = (Exp(MyAngle) - Exp(-1 * MyAngle)) / 2

必要条件

バージョン 1

参 照

超越関数 | Log 関数


Filter 関数

指定されたフィルタ条件に基づいた文字列配列のサブセットを含むゼロ ベースの配列を返します。

Filter(InputStrings, Value[, Include[, Compare]])

引数

InputStrings
必ず指定します。検索先の 1 次元配列の文字列を指定します。
Value
必ず指定します。検索する文字列を指定します。
Include
省略可能です。引数 InputStrings に指定した配列の各要素の文字列の中に、引数 Value が含まれるかどうかを表すブール値を指定します。引数 Include が真 (True) の場合、Filter 関数は、配列の各要素の文字列の中で、引数 Value が含まれる配列のサブセットを返します。引数 Include が偽 (False) の場合、Filter 関数は、配列の各要素の文字列の中で、引数 Value が含まれない配列のサブセットを返します。
Compare
省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。

設定値

引数 Compare の設定値は次のとおりです。

定数 | 値 | 内容
vbBinaryCompare | 0 | バイナリ モードで比較を行います。
vbTextCompare | 1 | テキスト モードで比較を行います。

解説

引数 InputStrings 内で引数 Value に一致する文字列がなかった場合は、Filter 関数は空の配列を返します。引数 InputStrings が Null 値であるか、1 次元配列でない場合は、エラーになります。

Filter 関数が返す配列は、一致した項目数分だけの要素が含まれています。

次のコードは、Filter 関数を使って "Mon" を含む配列を返す例です。

Dim MyIndex
Dim MyArray (3)
MyArray(0) = "Sunday"
MyArray(1) = "Monday"
MyArray(2) = "Tuesday"
MyIndex = Filter(MyArray, "Mon") ' MyIndex(0) contains "Monday".

必要条件

バージョン 2

参 照

Replace 関数


FormatCurrency 関数

システムの [コントロール パネル] で定義されている通貨記号を使って通貨形式の文字列に書式設定して返す文字列処理関数です。

FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

引数

Expression
必ず指定します。書式を変換する式を指定します。
NumDigitsAfterDecimal
省略可能です。小数点以下に表示する桁数を表す数値を指定します。既定値は -1 で、[地域のプロパティ] の値を使用します。
IncludeLeadingDigit
省略可能です。小数点の左側のゼロを表示するかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。
UseParensForNegativeNumbers
省略可能です。負の値をかっこで囲むかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。
GroupDigits
省略可能です。[地域のプロパティ] で指定されている桁区切り記号を使用して、数値を区切るかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。

設定値

IncludeLeadingDigit、UseParensForNegativeNumbers、および GroupDigits の各引数の設定値は次のとおりです。

定数 | 値 | 内容
TristateTrue | -1 | True
TristateFalse | 0 | False
TristateUseDefault | -2 | [地域のプロパティ] の設定値を使用します。

解説

引数を省略すると、[地域のプロパティ] の対応する値を使用します。通貨記号の位置は、[地域のプロパティ] の設定値で決まります。

メモ これらの設定値の情報は、[地域のプロパティ] の [通貨] タブに基づいています。ただし、ゼロの表示については、[数値] タブに基づいています。

次のコードは、FormatCurrency 関数を使って式を通貨形式に設定し、MyCurrency に割り当てます。

Dim MyCurrency
MyCurrency = FormatCurrency(1000)   ' MyCurrency には、$1000.00 が含まれます。

必要条件

バージョン 2

参 照

FormatDateTime 関数 | FormatNumber 関数 | FormatPercent 関数


FormatDateTime 関数

日付形式または時刻形式の文字列に書式設定して返す文字列処理関数です。

FormatDateTime(Date[, NamedFormat])

引数

Date
必ず指定します。書式を変換する日付式を指定します。
NamedFormat
省略可能です。使用されている日付/時刻形式を表す数値を指定します。省略すると、定数 vbGeneralDate が使用されます。

設定値

引数 NamedFormat の設定値は次のとおりです。

定数 | 値 | 内容
vbGeneralDate | 0 | 日付か時刻、または両方を表示します。日付部がある場合は、日付を短い形式で表示します。時刻部がある場合は、時刻を長い形式で表示します。両方がある場合は、両方とも表示します。
vbLongDate | 1 | [地域のプロパティ] で指定されている長い形式で日付を表示します。
vbShortDate | 2 | [地域のプロパティ] で指定されている短い形式で日付を表示します。
vbLongTime | 3 | [地域のプロパティ] で指定されている形式で時刻を表示します。
vbShortTime | 4 | 24 時間形式 (hh:mm) で時刻を表示します。

解説

次のコードは、FormatDateTime 関数を使って式を長整数型 (Long) に設定し、MyDateTime に割り当てます。

Function GetCurrentDate
   ' 日付を長整数型 (Long) に設定します。
   GetCurrentDate = FormatDateTime(Date, 1)
End Function

必要条件

バージョン 2

参 照

FormatCurrency 関数 | FormatNumber 関数 | FormatPercent 関数


FormatNumber 関数

数値形式の文字列に書式設定して返す文字列処理関数です。

FormatNumber(Expression [,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

引数

Expression
必ず指定します。書式を変換する式を指定します。
NumDigitsAfterDecimal
省略可能です。小数点以下に表示する桁数を表す数値を指定します。既定値は -1 で、[地域のプロパティ] の値を使用します。
IncludeLeadingDigit
省略可能です。小数点の左側のゼロを表示するかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。
UseParensForNegativeNumbers
省略可能です。負の値をかっこで囲むかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。
GroupDigits
省略可能です。[コントロール パネル] で指定されている桁区切り記号を使用して、数値を区切るかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。

設定値

IncludeLeadingDigit、UseParensForNegativeNumbers、および GroupDigits の各引数の設定値は次のとおりです。

定数 | 値 | 内容
TristateTrue | -1 | True
TristateFalse | 0 | False
TristateUseDefault | -2 | [地域のプロパティ] の設定値を使用します。

解説

引数を省略すると、[地域のプロパティ] の対応する値を使用します。

メモ これらの設定値の情報は、[地域のプロパティ] の [数値] タブに基づいています。

次のコードは、FormatNumber 関数を使い数字を小数点以下 4 桁まで表すよう設定する例です。

Function FormatNumberDemo
   Dim MyAngle, MySecant, MyNumber
   MyAngle = 1.3   ' 角度をラジアンで定義します。
   MySecant = 1 / Cos(MyAngle)   ' セカントを計算します。
   FormatNumberDemo = FormatNumber(MySecant,4) ' MySecant を小数点以下 4 桁まで表示するよう設定します。
End Function

必要条件

バージョン 2

参 照

FormatCurrency 関数 | FormatDateTime 関数 | FormatPercent 関数


FormatPercent 関数

パーセント記号 (%) が付加されたパーセント形式 (100 で乗算した) の文字列に書式設定して返す文字列処理関数です。

FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatPercent 関数の構文は、次の指定項目から構成されます。

引数

Expression
必ず指定します。書式を変換する式を指定します。
NumDigitsAfterDecimal
省略可能です。小数点以下に表示する桁数を表す数値を指定します。既定値は -1 で、[地域のプロパティ] の値を使用します。
IncludeLeadingDigit
省略可能です。小数点の左側のゼロを表示するかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。
UseParensForNegativeNumbers
省略可能です。負の値をかっこで囲むかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。
GroupDigits
省略可能です。[コントロール パネル] で指定されている桁区切り記号を使用して、数値を区切るかどうかを表す定数を指定します。設定する値については、次の「設定値」を参照してください。

設定値

IncludeLeadingDigit、UseParensForNegativeNumbers、および GroupDigits の各引数の設定値は次のとおりです。

定数 | 値 | 内容
TristateTrue | -1 | True
TristateFalse | 0 | False
TristateUseDefault | -2 | [地域のプロパティ] の設定値を使用します。

解説

引数を省略すると、[地域のプロパティ] の対応する値を使用します。

メモ これらの設定値の情報は、[地域のプロパティ] の [数値] タブに基づいています。

次のコードは、FormatPercent 関数を使って式をパーセント形式に設定する例です。

Dim MyPercent
MyPercent = FormatPercent(2/32) ' MyPercent は、6.25% です。

必要条件

バージョン 2

参 照

FormatCurrency 関数 | FormatDateTime 関数 | FormatNumber 関数


GetLocale 関数

機能

現在のロケール ID の値を返します。

GetLocale()

解説

ロケールには、言語、国/地域、および文化的な慣習に関連するユーザーごとの各種設定が含まれています。キーボード レイアウト、文字の並び順、および日付、時間、数字、通貨の書式などは、このロケールによって決まります。

戻り値は、ロケール ID の一覧に含まれる 32 ビット値です。

次のコードは、GetLocale 関数の使用例です。このコードを使用するには、コード例全体をコピーしてから、標準的な HTML ページの <BODY> タグと </BODY> タグの間にコードを貼り付けてください。

英語 (U.K.) の書式で日付を入力してください: <input type="text" id="UKDate" size="20"><p>
対応する英語 (U.S.) の日付: <input type="text" id="USdate" size="20"><p>
<input type="button" value="Convert" id="button1"><p>
ドイツ語の書式で、通貨の値を入力してください: &nbsp; <input type="text" id="GermanNumber" size="20">
<p>
対応する英語 (U.K.) の通貨: <input type="text" id="USNumber" size="20"><p>
<input type="button" value="Convert" id="button2"><p>

<script language="vbscript">
Dim currentLocale
' 現在のロケールを取得します。
currentLocale = GetLocale

Sub Button1_onclick
  Dim original
  original = SetLocale("en-gb")
  mydate = CDate(UKDate.value)
  ' IE では、通常、ロケールは英語 (U.S.) に設定されているので、
  ' 変数 currentLocale を使用してロケールを英語 (U.S.) に設定します。
  original = SetLocale(currentLocale)
  USDate.value = FormatDateTime(mydate,vbShortDate)
End Sub

Sub button2_onclick
  Dim original
  original = SetLocale("de")
  myvalue = CCur(GermanNumber.value)
  original = SetLocale("en-gb")
  USNumber.value = FormatCurrency(myvalue)
End Sub

</script>

参 照

SetLocale 関数 | ロケール ID (LCID) の一覧


GetObject 関数 (VBScript)

Visual Basic Scripting Edition

GetObject 関数

ファイルから取得したオートメーション オブジェクトへの参照を返します。

GetObject([pathname] [, class])

引数

pathname
省略可能です。文字列を指定します。取得するオブジェクトが含まれているファイルの絶対パスおよびファイル名を指定します。引数 pathname に長さ 0 の文字列 ("") を指定した場合は、引数 class も指定する必要があります。
class
省略可能です。文字列を指定します。オブジェクトのクラスを表す文字列を指定します。

引数class は、appname.objectype の形式で指定します。

引数

appname
必ず指定します。オブジェクトを提供しているアプリケーションの名前を指定します。
objectype
必ず指定します。作成するオブジェクトの種類またはクラスを指定します。

解説

GetObject 関数を使用して、ファイルから取得したオートメーション オブジェクトにアクセスしたり、取得したオブジェクトへの参照をオブジェクト変数に代入することができます。GetObject関数で取得したオブジェクトをオブジェクト変数に代入するには、Set ステートメントを使用します。次にコード例を示します。

Dim CADObject
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

このコード例を実行すると、引数 pathname に指定したファイルに関連付けられているアプリケーションが起動され、指定したファイル内のオブジェクトがアクティブになります。引数 pathname に長さ 0 の文字列 ("") を指定すると、GetObject 関数は、指定した種類の新しいオブジェクト (インスタンス) を返します。引数 pathname を省略すると、GetObject 関数は、指定した種類の現在アクティブなオブジェクトを返します。指定した種類のオブジェクトが存在しない場合はエラーが発生します。

ファイルの一部をアクティブにするアプリケーションもあります。ファイルの一部をアクティブにするには、ファイル名の後に感嘆符 (!) を付け、アクティブにする部分を表す文字列をその後に指定します。この文字列の指定方法については、そのオブジェクトを提供するアプリケーションのマニュアルを参照してください。

たとえば、描画アプリケーションでは、1 つのファイルに格納されている描画が、複数の階層に分かれていることがあります。このような場合は、次のコード例ように記述すると、SCHEMA.CAD という描画ファイル内の 1 つの階層をアクティブにできます。

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

オブジェクトの引数 class を指定しない場合、オートメーションが、指定したファイル名に基づいて起動するアプリケーションおよびアクティブにするオブジェクトを決定します。ただし、ファイルによっては複数のオブジェクトのクラスがサポートされています。たとえば、ある描画アプリケーションでは、3 つの異なる種類のオブジェクト、Application オブジェクト、Drawing オブジェクト、および Toolbar オブジェクトがサポートされていて、どのオブジェクトも同じファイル内にあるものと仮定します。このような場合は、引数 class を使用して、ファイル内のアクティブにするオブジェクトを指定します。次にコード例を示します。

Dim MyObject
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")

このコード例では、FIGMENT は描画アプリケーションの名前で、DRAWING は、FIGMENT がサポートしているオブジェクトの種類の 1 つです。一度、オブジェクトがアクティブになれば、定義したオブジェクト変数を使用して、そのオブジェクトを参照できるようになります。上の例の場合、オブジェクト変数 MyObject を使用して、アクティブになったオブジェクトのプロパティやメソッドを操作することができます。次にコード例を示します。

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
メモ カレント オブジェクトのインスタンスがあるとき、または、既に読み込まれたファイルを使用してオブジェクトを作成するときは、GetObject 関数を使用します。カレント オブジェクトのインスタンスがなく、ファイルを使用してオブジェクトを作成しないときは、CreateObject 関数を使用します。

複数のインスタンスを作成できないオブジェクトの場合は、何度 CreateObject 関数を実行しても、そのオブジェクトのインスタンスは 1 つしか作成されません。また、複数のインスタンスを作成できないオブジェクトの場合、長さ 0 の文字列 ("") を指定して GetObject 関数を呼び出すと常に同じインスタンスを返し、引数 pathname を省略するとエラーが発生します。

必要条件

バージョン 5

参 照

CreateObject 関数


GetRef 関数

イベントとバインドできるプロシージャに対する参照を返します。

Set object.eventname = GetRef(procname)

引数

object
必ず指定します。event が関連付けられるオブジェクトの名前を指定します。
event
必ず指定します。関数がバインドされるイベントの名前を指定します。
procname
必ず指定します。event に関連付けられる Sub プロシージャまたは Function プロシージャの名前を含む文字列を指定します。

解説

GetRef 関数を使用すると、VBScript のプロシージャ (Function または Sub) を、DHTML (Dynamic HTML) ページ上で使用可能な任意のイベントに接続できます。DHTML オブジェクト モデルは、各種のオブジェクトで使用できるイベントについての情報を提供します。

ほかのスクリプト言語とプログラミング言語では、GetRef 関数で提供される機能は関数ポインタと呼ばれています。つまり、指定されたイベントが発生したときに実行されるプロシージャのアドレスを示すポインタということです。

次のコードは、GetRef 関数の使用例です。

<SCRIPT LANGUAGE="VBScript">

Function GetRefTest()
   Dim Splash
   Splash = "GetRefTest Version 1.0"   & vbCrLf
   Splash = Splash & Chr(169) & " YourCompany 1999 "
   MsgBox Splash
End Function

Set Window.Onload = GetRef("GetRefTest")
</SCRIPT>

必要条件

バージョン 5

参 照

Function ステートメント | Set ステートメント | Sub ステートメント


Hex 関数

指定された値を 16 進数で表した文字列で返します。

Hex(number)

引数 number には、任意の式を指定します。

解説

引数 number に小数点以下の値を持つ数式を指定すると、変換する前に一番近い整数に丸められます。

引数 number | Hex の戻り値
Null | Null 値
Empty | 0
その他の数値 | 16 進数を表す最大 8 桁の文字列

適切な範囲の数値の前に &H を付けて記述すると、値を直接 16 進数で表すことができます。たとえば、10 進数の 16 の場合は、&H10 のように 16 進数で表記することができます。

次のコードは、Hex 関数を使って数値を 16 進数で返す例です。

Dim MyHex
MyHex = Hex(5)   ' 5 を返します。
MyHex = Hex(10)   ' A を返します。
MyHex = Hex(459)   ' 1CB を返します。

必要条件

バージョン 1

参 照

Oct 関数


Hour 関数

1 日の時刻を表す 0 ～ 23 の範囲の整数を返します。

Hour(time)

引数 time には、時間の秒を表す式を指定します。引数 time が有効な値ではない場合は、Null 値を返します。

次のコードは、Hour 関数を使って現在の時刻から何時かを取得する例です。

Dim MyTime, MyHour
MyTime = Now
MyHour = Hour(MyTime) ' MyHour は、現在の時刻を表す数です。

必要条件

バージョン 1

参 照

Day 関数 | Minute 関数 | Now 関数 | Second 関数 | Time 関数


InputBox 関数

ダイアログ ボックスにメッセージとテキスト ボックスを表示し、テキストが入力されるか、またはボタンがクリックされると、テキスト ボックスの内容を返します。

InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])

引数

prompt
ダイアログ ボックス内にメッセージとして表示する文字列を示す文字列式を指定します。引数 prompt に指定できる最大文字数は、1 バイト文字で約 1,024 文字です。ただし、使う文字の文字幅に依存します。引数 prompt に複数行を指定するには、改行する場所にキャリッジ リターン (Chr(13))、ライン フィード (Chr(10))、またはキャリッジ リターンとライン フィードの組み合わせ (Chr(13) & Chr(10)) を挿入してください。
title
ダイアログ ボックスのタイトル バーに表示する文字列を示す文字列式を指定します。引数 title を省略すると、タイトル バーにはアプリケーション名が表示されます。
default
ユーザーが何も入力しない場合に、テキスト ボックスに既定値として表示する文字列式を指定します。引数 default を省略すると、テキスト ボックスには何も表示されません。
xpos
画面の左端からダイアログ ボックスの左端までの水平方向の距離を twip 単位で示す数式を指定します。引数 xpos を省略すると、ダイアログ ボックスは水平方向に対して画面の中央の位置に配置されます。
ypos
画面の上端からダイアログ ボックスの上端までの垂直方向の距離を twip 単位で示す数式を指定します。引数 ypos を省略すると、ダイアログ ボックスは垂直方向に対して画面の上端から約 1/3 の位置に配置されます。
helpfile
ダイアログ ボックスに状況依存のヘルプを設定するために、使用するヘルプ ファイルの名前を示す文字列式を指定します。この引数は、表示するダイアログ ボックスの説明を、ヘルプを使って表示するときに指定します。引数 helpfile を指定した場合は、引数 context も指定する必要があります。
context
ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。引数 context を指定した場合は、引数 helpfile も指定する必要があります。

解説

引数 helpfile および引数 context を指定すると、ダイアログ ボックスに自動的に [ヘルプ] ボタンが追加されます。

[OK] をクリックするか、または Enter キーを押すと、InputBox 関数はテキスト ボックスの内容を返します。[キャンセル] をクリックすると、InputBox 関数は長さ 0 の文字列 ("") を返します。

次のコードは、InputBox 関数を使って入力ボックスを表示し、文字列を変数の入力に関連付ける例です。

Dim Input
Input = InputBox("名前を入力してください。")
MsgBox (Input & "を入力しました。")

必要条件

バージョン 1

参 照

MsgBox 関数


InStr 関数

ある文字列 (string1) の中から指定された文字列 (string2) を検索し、最初に見つかった文字位置を返す文字列処理関数です。

InStr([start, ]string1, string2[, compare])

引数

start
省略可能です。各検索の開始位置を設定する数式を指定します。引数 start を省略すると、先頭の文字から検索されます。引数 start に Null 値が含まれると、エラーになります。引数 compare を指定した場合は、引数 start も必ず指定します。
string1
必ず指定します。検索先の文字列式を指定します。
string2
必ず指定します。引数 string1 内で検索する文字列式を指定します。
compare
省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。引数 compare を省略すると、バイナリ モードで比較が行われます。

設定値

引数 compare の設定値は次のとおりです。

定数 | 値 | 内容
vbBinaryCompare | 0 | バイナリ モードで比較を行います。
vbTextCompare | 1 | テキスト モードで比較を行います。

戻り値

InStr 関数の戻り値は次のとおりです。

条件 | InStr の戻り値
string1 が長さ 0 の文字列 ("") のとき | 0
string1 が Null 値のとき | Null 値
string2 が長さ 0 の文字列 ("") のとき | start
string2 が Null 値のとき | Null 値
string2 が見つからないとき | 0
string2 が string1 内で見つかったとき | 文字列が見つかった位置
start の値が string2 の文字数より大きいとき | 0

解説

次のコードは、InStr 関数を使って文字列を検索する例です

Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP"   ' 検索対象の文字列。
SearchChar = "P"   ' "P" を検索します。
MyPos = Instr(4, SearchString, SearchChar, 1)   ' 4 番目の文字からテキスト モードで比較を行います。6 を返します。
MyPos = Instr(1, SearchString, SearchChar, 0)   ' 1 番目の文字からバイナリ モードで比較を行います。9 を返します。
MyPos = Instr(SearchString, SearchChar)   ' 既定ではバイナリ モードで比較を行います (最後の引数は、省略されます)。9 を返します。
MyPos = Instr(1, SearchString, "W")   ' 1 番目の文字からバイナリ モードで比較を行います。"W" はないので、0 を返します。
メモ 文字列をバイト データとして扱う場合は、InStrB 関数を使用してください。InStrB 関数は検索結果をバイト位置 (先頭からその位置までのバイト数) で返します。

必要条件

バージョン 1

参 照

InStrRev 関数


InStrRev 関数

ある文字列 (string1) の中から指定された文字列 (string2) を最後の文字位置から検索を開始し、最初に見つかった文字位置を返す文字列処理関数です。

InStrRev(string1, string2[, start[, compare]])

引数

string1
必ず指定します。検索先の文字列式を指定します。
string2
必ず指定します。検索する文字列式を指定します。
start
省略可能です。各検索の開始位置を設定する数式を指定します。引数 start を省略すると -1 が使用され、最後の文字位置から検索を開始します。引数 start に Null 値が含まれると、エラーになります。
compare
省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。引数 compare を省略すると、バイナリ モードで比較が行われます。設定する値については、次の「設定値」を参照してください。

設定値

引数 compare の設定値は次のとおりです。

定数 | 値 | 内容
vbBinaryCompare | 0 | バイナリ モードで比較を行います。
vbTextCompare | 1 | テキスト モードで比較を行います。

戻り値

InStrRev 関数の戻り値は次のとおりです。

条件 | InStrRev の戻り値
string1 が長さ 0 の文字列 ("") のとき | 0
string1 が Null 値のとき | Null 値
string2 が長さ 0 の文字列 ("") のとき | start
string2 が Null 値のとき | Null 値
string2 が見つからないとき | 0
string2 が string1 内で見つかったとき | 文字列が見つかった位置
start の値が string2 の文字数より大きいとき | 0

解説

次のコードは、InStrRev 関数を使って文字列を検索する例です。

Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP"   ' 検索対象の文字列。
SearchChar = "P"   ' "P" を検索します。
MyPos = InstrRev(SearchString, SearchChar, 10, 0)   ' 10 番目の文字から、バイナリ モードで比較を行います。9 を返します。
MyPos = InstrRev(SearchString, SearchChar, -1, 1)   ' 最後の文字から、テキスト モードで比較を行います。12 を返します。
MyPos = InstrRev(SearchString, SearchChar, 8)   ' 既定ではバイナリ モードで比較を行います (最後の引数は、省略されます)。0 を返します。
メモ InStrRev 関数の構文は、InStr 関数の構文と異なることに注意してください。

必要条件

バージョン 2

参 照

InStr 関数


Int、Fix 関数

整数部分を返す数値演算関数です。

Int(number)
Fix(number)

引数 number には、任意の有効な数式を指定します。引数 number に Null 値が含まれる場合は、Null 値を返します。

解説

Int 関数と Fix 関数は、どちらも引数 number の小数部分を取り除いた整数値を返します。

引数 number に負の値を指定した場合には、Int 関数が引数 number 以下の最大の負の整数を返すのに対して、Fix 関数は引数 number 以上の最小の負の整数を返します。たとえば、引数として -8.4 を指定すると、Int 関数は -9、Fix 関数は -8 をそれぞれ返します。

Fix(number) は、次の数式と等価です。

Sgn(number) * Int(Abs(number))

次のコードは、Int 関数と Fix 関数を使って数の整数部分を返す例です。

MyNumber = Int(99.8)    ' 99 を返します。
MyNumber = Fix(99.2)    ' 99 を返します。
MyNumber = Int(-99.8)   ' -100 を返します。
MyNumber = Fix(-99.8)   ' -99 を返します。
MyNumber = Int(-99,2)   ' -100 を返します。
MyNumber = Fix(-99,2)   ' -99 を返します。

必要条件

バージョン 1

参 照

CInt 関数 | Round 関数


IsArray 関数

変数が配列であるかどうかを調べ、結果をブール値で返します。

IsArray(varname)

引数 varname には、任意の変数を指定します。

解説

IsArray 関数は、指定した変数が配列の場合は、真 (True) を返します。それ以外の場合は、偽 (False) を返します。IsArray 関数は、特に配列を含むバリアント型 (Variant) に有効です。

次のコードは、IsArray 関数を使って MyVariable が配列であるかどうかを調べる例です

Dim MyVariable
Dim MyArray(3)
MyArray(0) = "日曜日"
MyArray(1) = "月曜日"
MyArray(2) = "火曜日"
MyVariable = IsArray(MyArray) ' MyVariable は、真 (True) です。

必要条件

バージョン 1

参 照

IsDate 関数 | IsEmpty 関数 | IsNull 関数 | IsNumeric 関数 | IsObject 関数 | VarType 関数


IsDate 関数

式を日付に変換できるかどうかを調べ、結果をブール値で返します。

IsDate(expression)

引数 expression には、日付または時刻として認識できる日付式または文字列式を指定します。

解説

IsDate 関数は、指定した式が日付である場合、またはその式を日付に変換できる場合は、真 (True) を返します。変換できない場合は、偽 (False) を返します。Microsoft Windows で有効な日付の範囲は、西暦 100 年 1 月 1 日から西暦 9999 年 12 月 31 日までです。この範囲は、オペレーティング システムによって異なります。

次のコードは、IsDate 関数を使って式を日付に変換できるかどうかを調べる例です。

Dim MyDate, YourDate, NoDate, MyCheck
MyDate = "October 19, 1962": YourDate = #10/19/62#: NoDate = "Hello"
MyCheck = IsDate(MyDate)   ' 真 (True) を返します。
MyCheck = IsDate(YourDate)   ' 真 (True) を返します。
MyCheck = IsDate(NoDate)   ' 偽 (False) を返します。

必要条件

バージョン 1

参 照

CDate 関数 | IsArray 関数 | IsEmpty 関数 | IsNull 関数 | IsNumeric 関数 | IsObject 関数 | VarType 関数


IsEmpty 関数

変数が初期化されたかどうかを調べ、結果をブール値で返します。

IsEmpty(expression)

引数 expression には、任意の式を指定します。ただし、IsEmpty 関数は、単独の変数についてその変数が初期化されているかどうかを調べる関数なので、通常は、引数 expression には 1 つの変数名を指定します。

解説

IsEmpty 関数は、指定した変数が初期化されていない場合、または、Empty 値の場合は、真 (True) を返します。また、引数 expression 内に複数の変数がある場合には、常に偽 (False) を返します。

次のコードは、IsEmpty 関数を使って変数が初期化されているかどうかを調べる例です。

Dim MyVar, MyCheck
MyCheck = IsEmpty(MyVar)   ' 真 (True) を返します。
MyVar = Null   ' Null 値を割り当てます。
MyCheck = IsEmpty(MyVar)   ' 偽 (False) を返します。
MyVar = Empty   ' Empty 値を割り当てます。
MyCheck = IsEmpty(MyVar)   ' 真 (True) を返します。

必要条件

バージョン 1

参 照

IsArray 関数 | IsDate 関数 | IsNull 関数 | IsNumeric 関数 | IsObject 関数 | VarType 関数


IsNull 関数

式に Null 値が含まれているかどうかを調べ、結果をブール値で返します。

IsNull(expression)

引数 expression には、任意の式を指定します。

解説

IsNull 関数は、引数 expression の値が無効な値 (Null 値) である場合は真 (True) を返します。それ以外は偽 (False) を返します。引数 expression が複数の変数で構成されている場合、変数が 1 つでも Null 値のときには、式全体が Null 値となり、真 (True) が返されます。

Null 値は、変数に有効なデータが入っていないことを示す値であり、変数が初期化されていないことを示す Empty 値や、Null 文字列と呼ばれる長さが 0 の文字列 ("") とは異なります。

注意 IsNull 関数を使用すると、式に Null 値が含まれているかどうかを調べることができます。If Var = Null や If Var <> Null のように他の状況では真 (True) と評価される式でも、偽 (False) になります。これは、Null 値を含む式はすべて式自体が Null 値となり、偽 (False) と評価されるためです。

次のコードは、IsNull 関数を使って変数が Null 値であるかどうかを調べる例です。

Dim MyVar, MyCheck
MyCheck = IsNull(MyVar)   ' 偽 (False) を返します。
MyVar = Null   ' Null 値を割り当てます。
MyCheck = IsNull(MyVar)   ' 真 (True) を返します。
MyVar = Empty   ' Empty 値を割り当てます。
MyCheck = IsNull(MyVar)   ' 偽 (False) を返します。

必要条件

バージョン 1

参 照

IsArray 関数 | IsDate 関数 | IsEmpty 関数 | IsNumeric 関数 | IsObject 関数 | VarType 関数


IsNumeric 関数

式が数値として評価できるかどうかを調べ、結果をブール値で返します。

IsNumeric(expression)

引数 expression には、任意の式を指定します。

解説

IsNumeric 関数は、引数 expression が数値として認識できる場合は真 (True) を返します。それ以外は偽 (False) を返します。桁区切り文字や全角の数字も数値として認識されます。引数 expression が日付式の場合は、偽 (False) を返します。

次のコードは、IsNumeric 関数を使って変数が数値として評価できるかどうかを調べる例です。

Dim MyVar, MyCheck
MyVar = 53   ' 値を割り当てます。
MyCheck = IsNumeric(MyVar)   ' 真 (True) を返します。
MyVar = "459.95"   ' 値を割り当てます。
MyCheck = IsNumeric(MyVar)   ' 真 (True) を返します。
MyVar = "45 Help"   ' 値を割り当てます。
MyCheck = IsNumeric(MyVar)   ' 偽 (False) を返します。

必要条件

バージョン 1

参 照

IsArray 関数 | IsDate 関数 | IsEmpty 関数 | IsNull 関数 | IsObject 関数 | VarType 関数


IsObject 関数

式がオートメーション オブジェクトを参照しているかどうかを調べ、結果をブール値で返します。

IsObject(expression)

引数 expression には、任意の式を指定します。

解説

IsObject 関数は、引数 expression の内部処理形式が有効なオートメーション オブジェクトの場合、またはユーザー定義型のオブジェクトの場合は、真 (True) を返します。それ以外は偽 (False) を返します。

次のコードは、IsObject 関数を使って識別子がオブジェクト変数を示すかどうかを調べる例です。

Dim MyInt, MyCheck, MyObject
Set MyObject = Me
MyCheck = IsObject(MyObject)   ' 真 (True) を返します。
MyCheck = IsObject(MyInt)   ' 偽 (False) を返します。

必要条件

バージョン 1

参 照

IsArray 関数 | IsDate 関数 | IsEmpty 関数 | IsNull 関数 | IsNumeric 関数 | Set ステートメント | VarType 関数


Join 関数

配列に含まれる各要素の内部文字列を結合して作成される文字列を返します。

Join(list[, delimiter])

引数

list
必ず指定します。結合する文字列を含む 1 次元配列を指定します。
delimiter
省略可能です。戻り値となる文字列を区切るのに使用する文字を指定します。省略すると、スペース (" ") が使用されます。引数 delimiter が長さ 0 の文字列 ("") である場合は、リスト内のすべての項目が区切り文字なしで連結されます。

解説

次のコードは、Join 関数を使って MyArray の各文字列を連結する例です。

Dim MyString
Dim MyArray(3)
MyArray(0) = "Mr."
MyArray(1) = "John "
MyArray(2) = "Doe "
MyArray(3) = "III"
MyString = Join(MyArray) ' MyString は、"Mr. John Doe III" です。

必要条件

バージョン 2

参 照

Split 関数


LBound 関数

配列の指定された次元で使用できるインデックス番号の最小値を返します。

LBound(arrayname[, dimension])

引数

arrayname
配列変数の名前を指定します。変数の標準的な名前付け規則に従って付けます。
dimension
配列の指定した次元で使うことのできるインデックス番号の最小値を返します。最初の次元なら 1、2 番目の次元なら 2 というように指定します。引数 dimension を省略すると、1 が使用されます。

解説

LBound 関数は、UBound 関数と組み合わせて、配列のサイズを調べるために使います。インデックス番号の最大値を調べるには、UBound 関数を使ってください。

既定の最小の次元値は、常に 0 です。

必要条件

バージョン 1

参 照

Dim ステートメント | ReDim ステートメント | UBound 関数


LCase 関数

アルファベットの大文字を小文字に変換する文字列処理関数です。

LCase(string)

引数 string には、任意の文字列式を指定します。引数 string に Null 値が含まれている場合は、Null 値を返します。

解説

大文字だけが小文字に変換されます。大文字のアルファベット以外の文字には影響がありません。全角のアルファベットも変換することができます。

次のコードは、LCase 関数を使って大文字を小文字に変換する例です。

Dim MyString
Dim LCaseString
MyString = "VBSCript"
LCaseString = LCase(MyString) ' LCaseString は、"vbscript" です。

必要条件

バージョン 1

参 照

UCase 関数


Left 関数

文字列の左端から指定された文字数分の文字列を返します。

Left(string, length)

引数

string
文字列式の左端から文字列が取り出されます。引数 string に Null 値が含まれている場合は、Null 値を返します。
length
取り出す文字列の文字数を示す数式を指定します。0 を指定した場合は、長さ 0 の文字列 ("") を返します。引数 string の文字数以上の場合は、文字列全体が返されます。

解説

引数 string の文字数を決定するときは、Len 関数を使用します。

次のコードは、Left 関数を使って MyString の最初の 3 文字を返す例です。

Dim MyString, LeftString
MyString = "VBSCript"
LeftString = Left(MyString, 3) ' LeftString は、"VBS" です。
メモ 文字列をバイト データとして扱う場合は、LeftB 関数を使用します。length には文字数ではなくバイト数を指定します。

必要条件

バージョン 1

参 照

Len 関数 | Mid 関数 | Right 関数


Len 関数

指定された文字列の文字数または変数を格納するに必要なバイト数を返します。

Len(string | varname)

引数

string
任意の文字列式を指定します。引数 string に Null 値が含まれている場合は、Null 値を返します。
varname
任意の変数の名前を指定します。引数 varname に Null 値が含まれている場合は、Null 値を返します。

解説

次のコードは、Len 関数を使って文字列の文字数を返す例です。

Dim MyString
MyString = Len("VBSCRIPT") ' MyString は、8 です。
メモ 文字列をバイト データとして扱う場合は、LenB 関数を使用します。LenB 関数は、指定した文字列のバイト数を返します。

必要条件

バージョン 1

参 照

InStr 関数


LoadPicture 関数

ピクチャ オブジェクトを返します。32 ビット版プラットフォームでのみ使用できます。

LoadPicture(picturename)

引数 picturename には読み込むピクチャ ファイルの名前を示す文字列式を指定します。

解説

LoadPicture 関数が対応しているファイル形式は、ビットマップ (.bmp)、アイコン (.ico)、RLE (.rle)、メタファイル (.wmf)、EMF (.emf)、GIF (.gif)、JPEG (.jpg) です。

必要条件

バージョン 2


Log 関数

数値の自然対数を返す数値演算関数です。

Log(number)

引数 number には、0 を超える任意の有効な数式を指定します。

解説

自然対数とは、定数 e を底とする対数です。定数 e の値は約 2.718282 です。

任意の数値 x の n を底とする対数は、次に示すように x の自然対数を n の自然対数で割ることによって得られます。

Logn(x) = Log(x) / Log(n)

次の Function プロシージャは、引数に指定した数値の常用対数 (10 を底とする対数) を計算します。

Function Log10(X)
   Log10 = Log(X) / Log(10)
End Function

必要条件

バージョン 1

参 照

超越関数 | Exp 関数


LTrim 関数、RTrim 関数、Trim 関数

指定された文字列から先頭のスペース (LTrim) または末尾のスペース (RTrim)、あるいは先頭と末尾の両方のスペース (Trim) を削除した文字列を返します。

LTrim(string)
RTrim(string)
Trim(string)

引数 string には、任意の文字列式を指定します。引数 string に Null 値が含まれている場合は、Null 値を返します。

解説

次のコードは、LTrim 関数、RTrim 関数、および Trim 関数を使って文字列の先頭、末尾、あるいは両方のスペースを削除する例です。

Dim MyVar
MyVar = LTrim("   vbscript ")   ' MyVar は、"vbscript " です。
MyVar = RTrim("   vbscript ")   ' MyVar は、"   vbscript" です。
MyVar = Trim("   vbscript ")   ' MyVar は、"vbscript" です。

必要条件

バージョン 1

参 照

Left 関数 | Right 関数


数値演算関数

Abs 関数

Atn 関数

Cos 関数

Exp 関数

Fix 関数

Int 関数

Log 関数

Rnd 関数

Sgn 関数

Sin 関数

Sqr 関数

Tan 関数

超越関数


Mid 関数

文字列から指定された文字数分の文字列を返します。

Mid(string, start[, length])

引数

string
文字列を取り出す、元の文字列式を指定します。引数 string に Null 値が含まれている場合は、Null 値を返します。
start
引数 string の先頭の位置を 1 として、どの位置から文字列を取り出すかを先頭からの文字数で指定します。引数 start が引数 string の文字数を超える場合は、Mid 関数は長さ 0 の文字列 ("") を返します。
length
取り出す文字数を指定します。引数 length を省略すると、または文字列内に引数 length より短い文字数しかない場合には、引数 start から後のすべての文字を返します。

解説

引数 string の文字数を決定するときは、Len 関数を使用します。

次のコードは、Mid 関数を使って文字列の 4 番目の文字から 6 文字を返す例です。

Dim MyVar
MyVar = Mid("VB Script is fun!", 4, 6) ' MyVar は、"Script" です。
メモ 文字列をバイト データとして扱う場合は、MidB 関数を使用します。MidB 関数はバイト単位で文字列を取り出します。MidB 関数には、文字数でなく、バイト数を指定します。

必要条件

バージョン 1

参 照

Left 関数 | Len 関数 | LTrim 関数、RTrim 関数、Trim 関数 | Right 関数


Minute 関数

時刻の分を表す 0 ～ 59 の範囲の整数を返します。

Minute(time)

引数 time には、時間の分を表す式を指定します。引数 time が有効な値ではない場合は、Null 値を返します。

解説

次のコードは、Minute 関数を使って時刻の分を返す例です。

Dim MyVar
MyVar = Minute(Now)

必要条件

バージョン 1

参 照

Day 関数 | Hour 関数 | Now 関数 | Second 関数 | Time 関数


Month 関数

1 年の何月かを表す 0 ～ 12 の範囲の整数を返します。

Month(date)

引数 date には、日付を表す式を指定します。引数 date が有効な値ではない場合は、Null 値を返します。

解説

次のコードは、Month 関数を使って現在の月を返す例です。

Dim MyVar
MyVar = Month(Now) ' MyVar は、現在何月かを返します。

必要条件

バージョン 1

参 照

Date 関数 | Day 関数 | Now 関数 | Weekday 関数 | Year 関数


MonthName 関数

指定された月を表す文字列を返します。

MonthName(month[, abbreviate])

引数

month
必ず指定します。月を示す数値を指定します。たとえば、1 月は 1、2 月は 2 になります。
abbreviate
省略可能です。月名を短縮するかどうかを表すブール値を指定します。省略すると、既定値の偽 (False) が使用され、月名は短縮されません。

解説

次のコードは、MonthName 関数を使って短縮された月名を返す例です。

Dim MyVar
MyVar = MonthName(10, True) ' MyVar は、"Oct" です。

必要条件

バージョン 2

参 照

WeekdayName 関数


MsgBox 関数

ダイアログ ボックスにメッセージを表示し、ボタンがクリックされるのを待って、どのボタンがクリックされたかを示す値を返します。

MsgBox(prompt[, buttons][, title][, helpfile, context])

引数

prompt
ダイアログ ボックス内にメッセージとして表示する文字列を示す文字列式を指定します。引数 prompt に指定できる最大文字数は、1 バイト文字で約 1,024 文字です。ただし、使う文字の文字幅に依存します。引数 prompt に複数行を指定するには、改行する場所にキャリッジ リターン (Chr(13))、ライン フィード (Chr(10))、またはキャリッジ リターンとライン フィードの組み合わせ (Chr(13) & Chr(10)) を挿入してください。
buttons
表示されるボタンの種類と個数、使用するアイコンのスタイル、標準ボタン、メッセージ ボックスがモーダルかどうかなど、それらを表す値の合計値を示す数式を指定します。設定する値については、次の「設定値」を参照してください。省略すると、引数 buttons の既定値である 0 になります。
title
ダイアログ ボックスのタイトル バーに表示する文字列を示す文字列式を指定します。引数 title を省略すると、タイトル バーにはアプリケーション名が表示されます。
helpfile
ダイアログ ボックスに状況依存のヘルプを設定するために、使用するヘルプ ファイルの名前を示す文字列式を指定します。この引数は、表示するダイアログ ボックスの説明を、ヘルプを使って表示するときに指定します。引数 helpfile を指定した場合は、引数 context も指定する必要があります。16 ビット版のプラットフォームでは、利用できません。
context
ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。引数 context を指定した場合は、引数 helpfile も指定する必要があります。16 ビット版のプラットフォームでは、利用できません。

設定値

引数 buttons には、次の値のうち、該当する値の合計値を指定します。

定数 | 値 | 内容
vbOKOnly | 0 | [OK] ボタンのみを表示します。
vbOKCancel | 1 | [OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore | 2 | [中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
vbYesNoCancel | 3 | [はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
vbYesNo | 4 | [はい] ボタンと [いいえ] ボタンを表示します。
vbRetryCancel | 5 | [再試行] ボタンと [キャンセル] ボタンを表示します。
vbCritical | 16 | 警告メッセージ アイコンを表示します。
vbQuestion | 32 | 問い合わせメッセージ アイコンを表示します。
vbExclamation | 48 | 注意メッセージ アイコンを表示します。
vbInformation | 64 | 情報メッセージ アイコンを表示します。
vbDefaultButton1 | 0 | 第 1 ボタンを標準ボタンにします。
vbDefaultButton2 | 256 | 第 2 ボタンを標準ボタンにします。
vbDefaultButton3 | 512 | 第 3 ボタンを標準ボタンにします。
vbDefaultButton4 | 768 | 第 4 ボタンを標準ボタンにします。
vbApplicationModal | 0 | アプリケーション モーダルに設定します。メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。
vbSystemModal | 4096 | システム モーダルに設定します。メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。

最初のグループに属する値 (0 ～ 5) は、ダイアログ ボックスに表示されるボタンの種類と個数を指定します。次のグループに属する値 (16、32、48、64) は、アイコンの種類を指定します。第 3 のグループに属する値 (0、256、512、768) は、どのボタンが標準ボタンになるかを指定します。最後のグループに属する値 (0、4096) は、メッセージ ボックスがモーダルかどうかを指定します。引数 buttons の値を設定するには、各グループから値を 1 つずつ選択して加算した合計値を指定します。

戻り値

MsgBox 関数の戻り値は次のとおりです。

定数 | 値 | 選択されたボタン
vbOK | 1 | [OK]
vbCancel | 2 | [キャンセル]
vbAbort | 3 | [中止]
vbRetry | 4 | [再試行]
vbIgnore | 5 | [無視]
vbYes | 6 | [はい]
vbNo | 7 | [いいえ]

解説

引数 helpfile および引数 context を指定すると、F1 キーを押すことにより、コンテキスト番号に対応したヘルプ トピックを参照できます。

[キャンセル] ボタンが表示されているダイアログ ボックスでは、Esc キーを押すと、[キャンセル] をクリックしたときと同じ結果になります。ダイアログ ボックスに [ヘルプ] ボタンが表示されているときは、そのダイアログ ボックスには状況依存のヘルプが設定されています。ただし、[ヘルプ] ボタン以外のボタンがクリックされるまでは、値を返しません。

Microsoft Internet Explorer で MsgBox 関数が使用されている場合は、表示されるダイアログ ボックスのタイトルに常に "VBScript:"が含まれ、標準のシステム ダイアログ ボックスと区別されます。

次のコードは、MsgBox 関数を使って、メッセージ ボックスを表示し、どのボタンがクリックされたかを説明する値を返す例です。

Dim MyVar
MyVar = MsgBox ("Hello World!", 65, "MsgBox の例")
   ' MyVar の値は、クリックされたボタンによって、1 または 2 になります。

必要条件

バージョン 1

参 照

InputBox 関数


Now 関数

コンピュータのシステムの日付と時刻の設定に基づいて、現在の日付と時刻を返します。

Now

解説

次のコードは、Now 関数を使って現在の日付と時刻を返す例です。

Dim MyVar
MyVar = Now ' MyVar は、現在の日時です。

必要条件

バージョン 1

参 照

Date 関数 | Day 関数 | Hour 関数 | Minute 関数 | Month 関数 | Second 関数 | Time 関数 | Weekday 関数 | Year 関数


Oct 関数

指定された値を 8 進数で返します。

Oct(number)

引数 number には、任意の式を指定します。

解説

引数 number に小数点以下の値を持つ数式を指定すると、変換する前に一番近い整数に丸められます。

引数 number | Oct の戻り値
Null 値 | Null 値
Empty 値 | Zero (0).
その他の数値 | 最大 11 桁の 8 進数

適切な範囲の数値の前に &O を付けて記述すると、値を直接 8 進数で表すことができます。たとえば、10 進数の 8 の場合は、&O10 のように 8 進数で表記することができます。

次のコードは、Oct 関数を使って 8 進数の数値を返す例です。

Dim MyOct
MyOct = Oct(4)     ' 4 を返します。
MyOct = Oct(8)     ' 10 を返します。
MyOct = Oct(459)   ' 713 を返します。

必要条件

バージョン 1

参 照

Hex 関数


Replace 関数

指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します。

Replace(expression, find, replacewith[, start[, count[, compare]]])

引数

expression
必ず指定します。置換する文字列を含む文字列式を指定します
find
必ず指定します。検索する文字列を指定します。
replacewith
必ず指定します。置換する文字列を指定します。
start
省略可能です。引数 expression 内の内部文字列の検索開始位置を指定します。count と共に使用してください。
count
省略可能です。置換する文字列数を指定します。この引数を省略すると、既定値の -1 が使用され、すべての候補が置換されます。start と共に使用してください。
compare
省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。この引数を省略すると、既定値の 0 が使用され、バイナリ モードで比較が行われます。

設定値

引数 compare の設定値は次のとおりです。

定数 | 値 | 内容
vbBinaryCompare | 0 | バイナリ モードで比較を行います。
vbTextCompare | 1 | テキスト モードで比較を行います。

戻り値

Replace 関数の戻り値は次のとおりです。

条件 | Replace の戻り値
expression が長さ 0 の文字列 ("") のとき | 長さ 0 の文字列 ("")
expression が Null 値のとき | エラー
find が長さ 0 の文字列 ("") のとき | expression のコピー
replacewith が長さ 0 の文字列 ("") のとき | find がすべて削除された expression のコピー
start の値が expression の文字数より大きいとき | 長さ 0 の文字列 ("")
count が 0 のとき | expression のコピー

解説

引数 start を指定した場合、Replace 関数は、指定された位置から引数 expression の文字列の末尾までを返します。

次のコードは、Replace 関数を使って文字列を返す例です。

Dim MyString
MyString = Replace("XXpXXPXXp", "p", "Y")   ' 文字列の最初から、バイナリ モードで比較を行います。"XXYXXPXXY"を返します。
MyString = Replace("XXpXXPXXp", "p", "Y", 3, -1, 1)   ' 3 番目の位置からテキスト モードで比較を行います。"YXXYXXY" を返します。

必要条件

バージョン 2

参 照

Filter 関数


RGB 関数

RGB カラー値を表す値を返します。

RGB(red, green, blue)

引数

red
必ず指定します。目的の色の赤の成分を表す 0 ～ 255 の範囲内の数値を指定します。
green
必ず指定します。目的の色の緑の成分を表す 0 ～ 255 の範囲内の数値を指定します。
blue
必ず指定します。目的の色の青の成分を表す 0 ～ 255 の範囲内の数値を指定します。

解説

色の指定を受け取るメソッドやプロパティは、RGB カラー値を表す数値として色を受け取ります。RGB カラー値は、赤、緑、および青の相対的な明度を指定することによって色を表示します。

下位側の 1 バイトには赤の成分の値、真ん中の 1 バイトには緑の成分の値、上位側の 1 バイトには青の成分の値が示されます。

このバイトの順序を逆にする必要のあるアプリケーションでは、バイトの順序が逆で同じ色を表す値を、次のような関数で得ることができます。

Function RevRGB(red, green, blue)
   RevRGB= CLng(blue + (green * 256) + (red * 65536))
End Function

RGB 関数の引数に 255 を超える値が指定された場合、255 が指定されたとして処理します。

必要条件

バージョン 2


Right 関数

文字列の右端から指定された文字数分の文字列を返します。

Right(string, length)

引数

string
文字列式の右端から文字列を取り出します。引数 string に Null 値が含まれている場合は、Null 値を返します。
length
取り出す文字列の文字数を示す数式を指定します。0 を指定した場合は、長さ 0 の文字列 ("") を返します。引数 string の文字数以上の場合は、文字列全体が返されます。

解説

引数 string の文字数を決定するときは、Len 関数を使用します。

次のコードは、Right 関数を使って文字列の右端から、指定した文字数分の文字を返す例です。

Dim AnyString, MyStr
AnyString = "Hello World"      ' 文字列を定義します。
MyStr = Right(AnyString, 1)    ' "d" を返します。
MyStr = Right(AnyString, 6)    ' " World" を返します。
MyStr = Right(AnyString, 20)   ' "Hello World" を返します。
メモ 文字列をバイト データとして扱う場合は、RightB 関数を使用します。length には文字数ではなくバイト数を指定します。

必要条件

バージョン 1

参 照

Left 関数 | Len 関数 | Mid 関数


Rnd 関数

乱数を返します。

Rnd[(number)]

引数 number には、任意の有効な数式を指定します。

解説

Rnd 関数は 0 以上、1 未満の範囲の値を返します。

引数 number | Run の戻り値
number < 0 | 常に引数 number のシード値によって決まる同じ数値を返します。
number > 0 | 乱数系列の次の乱数を返します。
number = 0 | 直前に生成した乱数を返します。
Not supplied | 乱数系列の次の乱数を返します。

初期シード値が変わらない限り、一連の Rnd 関数が返す乱数系列は同じになります。これは、連続する Rnd 関数が乱数系列の中の直前の乱数をシード値として、次の乱数をそれぞれ生成するためです。

システム タイマーから取得した新しいシード値を使用して乱数ジェネレータを初期化するには、Rnd 関数を呼び出す前に、引数を指定せずに Randomize ステートメントを実行してください。

任意の範囲の整数の乱数を生成するには、次の式を使用してください。

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

この式では、引数 upperbound には範囲の上限の値を指定し、引数 lowerbound には範囲の下限の値を指定します。

メモ 乱数系列を繰り返すには、数値を指定して Randomize ステートメントを実行する直前に、負の引数を指定して Rnd 関数を呼び出します。引数 number に同じ値を指定して Randomize ステートメントを使用しても、前の乱数系列を繰り返すことはできません。

必要条件

バージョン 1

参 照

Randomize ステートメント


Round 関数

指定された小数点位置で丸めた数値を返します。

Round(expression[, numdecimalplaces])

引数

expression
必ず指定します。丸めを行う数式を指定します。
numdecimalplaces
省略可能です。丸めを行う小数点以下の桁数を表す数値を指定します。省略すると、Round 関数は整数値を返します。

解説

次のコードは、Round 関数を使って小数点以下 2 桁で数値を丸める例です。

Dim MyVar, pi
pi = 3.14159
MyVar = Round(pi, 2) ' MyVar は、3.14 です。

必要条件

バージョン 2

参 照

Int 関数、Fix 関数


ScriptEngine 関数 (VBScript)

Visual Basic Scripting Edition

ScriptEngine 関数

使用中のスクリプト言語を表す文字列を返します。

ScriptEngine

戻り値

ScriptEngine 関数の戻り値は次のとおりです。

文字列型 | 内容
VBScript | 現在のスクリプト エンジンが Microsoft® Visual Basic® であることを示します。
JScript | 現在のスクリプト エンジンが Microsoft® JScript® であることを示します。
VBA | 現在のスクリプト エンジンが Microsoft® Visual Basic® for Applications であることを示します。

解説

次のコードは、ScriptEngine 関数を使って使用中のスクリプト言語を表す文字列を返す例です。

Function GetScriptEngineInfo
   Dim s
   s = ""   ' 必要な情報から文字列を組み立てます。
   s = ScriptEngine & " バージョン "
   s = s & ScriptEngineMajorVersion & "."
   s = s & ScriptEngineMinorVersion & "."
   s = s & ScriptEngineBuildVersion
   GetScriptEngineInfo = s   ' 結果を返します。
End Function

必要条件

バージョン 2

参 照

ScriptEngineBuildVersion 関数 | ScriptEngineMajorVersion 関数 | ScriptEngineMinorVersion 関数


ScriptEngineBuildVersion 関数 (VBScript)

Visual Basic Scripting Edition

ScriptEngineBuildVersion 関数

使用中のスクリプト エンジンのビルド バージョン番号を返します。

ScriptEngineBuildVersion

解説

戻り値は、使用中のスクリプト言語の DLL に含まれているバージョン情報と一致します。

次のコードは、ScriptEngineBuildVersion 関数を使ってスクリプト エンジンのビルド バージョン番号を返す例です。

Function GetScriptEngineInfo
   Dim s
   s = ""   ' 必要な情報から文字列を組み立てます。
   s = ScriptEngine & " バージョン "
   s = s & ScriptEngineMajorVersion & "."
   s = s & ScriptEngineMinorVersion & "."
   s = s & ScriptEngineBuildVersion
   GetScriptEngineInfo = s   ' 結果を返します。
End Function

必要条件

バージョン 2

参 照

ScriptEngine 関数 | ScriptEngineMajorVersion 関数 | ScriptEngineMinorVersion 関数


ScriptEngineMajorVersion 関数 (VBScript)

Visual Basic Scripting Edition

ScriptEngineMajorVersion 関数

使用中のスクリプト エンジンのメジャー バージョン番号を返します。

ScriptEngineMajorVersion

解説

戻り値は、使用中のスクリプト言語の DLL に含まれているバージョン情報と一致します。

次のコードは、ScriptEngineMajorVersion 関数を使ってスクリプト エンジンのメジャー バージョン番号を返す例です。

Function GetScriptEngineInfo
   Dim s
   s = ""   ' 必要な情報から文字列を組み立てます。
   s = ScriptEngine & " バージョン "
   s = s & ScriptEngineMajorVersion & "."
   s = s & ScriptEngineMinorVersion & "."
   s = s & ScriptEngineBuildVersion
   GetScriptEngineInfo = s   ' 結果を返します。
End Function

必要条件

バージョン 2

参 照

ScriptEngine 関数 | ScriptEngineBuildVersion 関数 | ScriptEngineMinorVersion 関数


ScriptEngineMinorVersion 関数 (VBScript)

Visual Basic Scripting Edition

ScriptEngineMinorVersion 関数

使用中のスクリプト エンジンのマイナ バージョン番号を返します。

ScriptEngineMinorVersion

解説

戻り値は、使用中のスクリプト言語の DLL に含まれているバージョン情報と一致します。

次のコードは、ScriptEngineMinorVersion 関数を使ってスクリプト エンジンのマイナ バージョン番号を返す例です。

Function GetScriptEngineInfo
   Dim s
   s = ""   ' 必要な情報から文字列を組み立てます。
   s = ScriptEngine & " バージョン "
   s = s & ScriptEngineMajorVersion & "."
   s = s & ScriptEngineMinorVersion & "."
   s = s & ScriptEngineBuildVersion
   GetScriptEngineInfo = s   ' 結果を返します。
End Function

必要条件

バージョン 2

参 照

ScriptEngine 関数 | ScriptEngineBuildVersion 関数 | ScriptEngineMajorVersion 関数


Second 関数

時間の秒を表す 0 ～ 59 の整数を返します。

Second(time)

引数 time は、時間を表す任意の式です。引数 time が有効な値ではない場合は、Null 値を返します。

解説

次のコードは、Second 関数を使って現在の時刻の秒を返す例です。

Dim MySec
MySec = Second(Now)
   ' MySec は、現在の時刻の秒を表す数です。

必要条件

バージョン 1

参 照

Day 関数 | Hour 関数 | Minute 関数 | Now 関数 | Time 関数


SetLocale 関数

グローバルなロケール設定を行い、直前のロケール設定値を返します。

SetLocale(lcid)

引数 lcid には、ロケール情報を識別するための 32 ビットの値、または一意の言語コードを指定します。指定可能な値については、ロケール ID の一覧を参照してください。

解説

lcid がゼロ ("0") の場合は、現在のシステムのロケール設定が適用されます。

ロケールには、言語、国/地域、および文化的な慣習に関連するユーザーごとの各種設定が含まれています。キーボード レイアウト、文字の並び順、および日付、時間、数値、通貨の書式は、このロケールによって決定されます。

次のコードは SetLocale 関数の使用例です。このコードを使用するには、コード例全体をコピーしてから、標準的な HTML ファイルの <BODY> タグと </BODY> タグの間にコードを貼り付けてください。

英語 (U.K.) の書式で日付を入力してください: <input type="text" id="UKDate" size="20"><p>
対応する英語 (U.S.) の日付: <input type="text" id="USdate" size="20"><p>
<input type="button" value="Convert" id="button1"><p>
ドイツ語の書式で、通貨の値を入力してください: &nbsp; <input type="text" id="GermanNumber" size="20">
<p>
対応する英語 (U.K.) の通貨: <input type="text" id="USNumber" size="20"><p>
<input type="button" value="Convert" id="button2"><p>

<script language="vbscript">
Dim currentLocale
' 現在のロケールを取得します。
currentLocale = GetLocale

Sub Button1_onclick
  Dim original
  original = SetLocale("en-gb")
  mydate = CDate(UKDate.value)
  ' IE では通常、ロケールは英語 (U.S.) に設定されているので、
  ' 変数 currentLocale を使用してロケールを英語 (U.S.) に設定します。
  original = SetLocale(currentLocale)
  USDate.value = FormatDateTime(mydate,vbShortDate)
End Sub

Sub button2_onclick
  Dim original
  original = SetLocale("de")
  myvalue = CCur(GermanNumber.value)
  original = SetLocale("en-gb")
  USNumber.value = FormatCurrency(myvalue)
End Sub

</script>

参 照

GetLocale 関数 | ロケール ID (LCID) の一覧


Sgn 関数

引数に指定された数の符号を示す整数を返します。

Sgn(number)

引数 number には、任意の有効な数式を指定します。

戻り値

Sgn 関数の戻り値は次のとおりです。

引数 number | Sgn の戻り値
number > 0 | 1
number = 0 | 0
number < 0 | -1

解説

引数 number の値の符号により、Sgn 関数の戻り値が決まります。

次のコードは、Sgn 関数を使って数の符号を決める例です。

Dim MyVar1, MyVar2, MyVar3, MySign
MyVar1 = 12: MyVar2 = -2.4: MyVar3 = 0
MySign = Sgn(MyVar1)   ' 1 を返します。
MySign = Sgn(MyVar2)   ' -1 を返します。
MySign = Sgn(MyVar3)   ' 0 を返します。

必要条件

バージョン 1

参 照

Abs 関数


Sin 関数

指定された角度のサインを返します。

Sin(number)

引数 number には、角度を表す任意の数式 (単位はラジアン) を指定します。

解説

Sin 関数は、引数として角度を受け取り、その角度を含む直角三角形の 2 辺の比を返します。ここでいう 2 辺とは、指定した角の反対側の辺 (対辺) と斜辺を指します。2 辺の比は、対辺の長さを斜辺の長さで割った値です。戻り値は、-1 ～ 1 の範囲の値になります。

角度の単位を度からラジアンに変換するには、度にπ/180 を掛けます。ラジアンから度に変換するには、ラジアンに 180/πを掛けます。

次のコードは、Sin 関数を使って角度のサインを返す例です。

Dim MyAngle, MyCosecant
MyAngle = 1.3   ' 角度をラジアンで定義します。
MyCosecant = 1 / Sin(MyAngle)   ' コセカントを計算します。

必要条件

バージョン 1

参 照

Atn 関数 | Cos 関数 | 超越関数 | Tan 関数


Space 関数

指定された数のスペースから成る文字列を返します。

Space(number)

引数 number には、スペースの数を指定します。

解説

次のコードは、Space 関数を使って指定された数のスペースから成る文字列を返す例です。

Dim MyString
MyString = Space(10)   ' 10 個のスペースから成る文字列を返します。
MyString = "Hello" & Space(10) & "World" ' 2 つの文字列の間に、10 個のスペースを挿入します。

必要条件

バージョン 1

参 照

String 関数


Split 関数

各要素ごとに区切られた文字列からゼロ ベースの 1 次元配列を作成し、返します。

Split(expression[, delimiter[, count[, compare]]])

引数

expression
必ず指定します。文字列と区切り文字を含んだ文字列式を指定します。引数 expression が長さ 0 の文字列 ("") である場合、Split 関数は、要素もデータもない空の配列を返します。
delimiter
省略可能です。文字列の区切りを識別する文字を指定します。引数 delimiter を省略すると、区切り文字にスペース (" ") が使用されます。引数 delimiter が長さ 0 の文字列 ("") である場合は、引数 expression 全体の文字列を含む単一の要素の配列を返します。
count
省略可能です。返す配列の要素数を指定します。-1 を指定すると、すべての文字列を含んだ配列を返します。
compare
省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。

設定値

引数 compare の設定値は次のとおりです。

定数 | 値 | 内容
vbBinaryCompare | 0 | バイナリ モードで比較を行います。
vbTextCompare | 1 | テキスト モードで比較を行います。

解説

次のコードは、Split 関数を使って文字列から配列を返す例です。関数は区切り文字の比較をテキスト モードで行い、各要素の文字列全体を返します。

Dim MyString, MyArray, Msg
MyString = "VBScriptXisXfun!"
MyArray = Split(MyString, "x", -1, 1)
' MyArray(0) は、"VBScript" です。
' MyArray(1) は、"is" です。
' MyArray(2) は、"fun!" です。
Msg = MyArray(0) & " " & MyArray(1)
Msg = Msg   & " " & MyArray(2)
MsgBox Msg

必要条件

バージョン 2

参 照

Join 関数


Sqr 関数

数式の平方根を返します。

Sqr(number)

引数 number には、0 以上の任意の有効な数式を指定します。

解説

次のコードは、Sqr 関数を使って平方根を計算する例です。

Dim MySqr
MySqr = Sqr(4)    ' 2 を返します。
MySqr = Sqr(23)   ' 4.79583152331272 を返します。
MySqr = Sqr(0)    ' 0 を返します。
MySqr = Sqr(-4)   ' 実行時エラーが発生します。

必要条件

バージョン 1


StrComp 関数

文字列比較の結果を表す値を返します。

StrComp(string1, string2[, compare])

引数

string1
必ず指定します。任意の文字列式を指定します。
string2
必ず指定します。任意の文字列式を指定します。
compare
省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。引数 compare を省略すると、バイナリ モードで比較が行われます。設定する値については、次の「設定値」を参照してください。

設定値

引数 compare の設定値は次のとおりです。

定数 | 値 | 内容
vbBinaryCompare | 0 | バイナリ モードで比較を行います。
vbTextCompare | 1 | テキスト モードで比較を行います。

戻り値

StrComp 関数の戻り値は次のとおりです。

条件 | StrComp の戻り値
string1 は string2 未満 | -1
string1 と string2 は等しい | 0
string1 は string2 を超える | 1
string1 または string2 は Null 値 | Null 値

解説

次のコードは、StrComp 関数を使って文字列比較の結果を返す例です。3 番目の引数が 1 の場合は、テキスト モードで比較を行い、0 または省略された場合は、バイナリ モードで比較を行います。

Dim MyStr1, MyStr2, MyComp
MyStr1 = "ABCD": MyStr2 = "abcd"    ' 変数を定義します。
MyComp = StrComp(MyStr1, MyStr2, 1)   ' 0 を返します。
MyComp = StrComp(MyStr1, MyStr2, 0)   ' -1 を返します。
MyComp = StrComp(MyStr2, MyStr1)      ' 1 を返します。

必要条件

バージョン 1


String 関数

指定した繰り返し回数を使用して文字列を返します。

String(number, character)

引数

number
文字をいくつ並べるのかを指定します。引数 number に Null 値が含まれる場合は、Null 値を返します。
character
文字の文字コードまたは文字列式を指定します。この文字列の先頭文字を number 回繰り返した値を返します。引数 character に Null 値が含まれる場合は、Null 値を返します。

解説

引数 character に 256 以上の数値を指定すると、String 関数では次の式を使って数値を有効な文字コードに変換します。

character Mod 256

次のコードは、String 関数を使って指定された文字数だけ並べた文字列を返す例です。

Dim MyString
MyString = String(5, "*")   ' " *****" を返します。
MyString = String(5, 42)    ' "*****" を返します。
MyString = String(10, "ABC")   ' "AAAAAAAAAA" を返します。

必要条件

バージョン 1

参 照

Space 関数


StrReverse 関数

指定された文字列の文字の並び順を逆にした文字列を返します。

StrReverse(string1)

引数 string1 に文字の並びを逆にする文字列を指定します。引数 string1 が長さ 0 の文字列 ("") である場合は、長さ 0 の文字列を返します。引数 string1 が Null 値である場合は、エラーになります。

解説

次のコードは、StrReverse 関数を使って並び順を逆にした文字列を返す例です。

Dim MyStr
MyStr = StrReverse("VBScript") ' MyStr は、"tpircSBV" です。

必要条件

バージョン 2


Tan 関数

指定された角度のタンジェントを返します。

Tan(number)

引数 number には、角度を示す任意の数式 (単位はラジアン) を指定します。

解説

Tan 関数は、引数として角度を受け取り、その角度を含む直角三角形の 2 辺の比を返します。この場合の 2 辺とは、直角をはさむ 2 つの辺を指します。2 辺の比は、指定した角の反対側の辺 (対辺) の長さを、もう一方の辺 (底辺、つまり指定した角に隣接する側の辺) の長さで割った値です。

角度の単位を度からラジアンに変換するには、度にπ/180 を掛けます。ラジアンから度に変換するには、ラジアンに 180/πを掛けます。

次のコードは、Tan 関数を使って角度のタンジェントを返す例です。

Dim MyAngle, MyCotangent
MyAngle = 1.3   ' 角度をラジアンで定義します。
MyCotangent = 1 / Tan(MyAngle)   ' コタンジェントを計算します。

必要条件

バージョン 1

参 照

Atn 関数 | Cos 関数 | 超越関数 | Sin 関数


Time 関数

現在のシステムの時刻を表すバリアント型 (内部処理形式が日付型 (Date) の Variant) の値を返します。

Time

解説

次のコードは、Time 関数を使って現在のシステムの時刻を返す例です。

Dim MyTime
MyTime = Time    ' 現在のシステムの時刻を返します。

必要条件

バージョン 1

参 照

Date 関数


Timer 関数

午前 0:00 以降に経過した秒数を返します。

Timer

解説

次の例では、For...Next ループを N 回繰り返すために必要な時間を、Timer 関数を使って決める例です。

Function TimeIt(N)
   Dim StartTime, EndTime
   StartTime = Timer
   For I = 1 To N
   Next
   EndTime = Timer
   TimeIt = EndTime - StartTime
End Function

必要条件

バージョン 5

参 照

Randomize ステートメント


TimeSerial 関数

引数に指定された時、分、秒に対応する時刻を含むバリアント型 (内部処理形式が日付型 (Date) の Variant) の値を返します。

TimeSerial(hour, minute, second)

引数

hour
時を表す 0 (12:00 AM) ～ 23 (11:00 PM) の範囲の数値または任意の数式を指定します。
minute
任意の数式を指定します。
second
任意の数式を指定します。

解説

時刻を指定するには、11:59:59 のように TimeSerial 関数の引数が、それぞれ正しい範囲内にある必要があります。時の範囲は 0 ～ 23、分および秒の範囲は 0 ～ 59 です。また、ある時刻からの相対的な時、分、および秒を表す数式を引数に指定することもできます。

次のコード例では、直接日付を指定せずに、式を用いて相対的に指定しています。正午の 6 時間前 (12 - 6) から 15 分前 (-15) の時刻である午前 5:45:00 を返します。

Dim MyTime1
MyTime1 = TimeSerial(12 - 6, -15, 0) ' 5:45:00 AM を返します。

各引数に指定する値が正しい範囲内にない場合、指定された値は引数に従って加算されます。たとえば、引数 minute に 75 を指定すると、1 時間と 15 分として扱われます。ただし、各引数の値が -32,768 ～ 32,767 の範囲を超える場合、またはこの 3 つの引数で指定した時刻が、時刻の正しい範囲内にない場合は、エラーが発生します。

必要条件

バージョン 1

参 照

DateSerial 関数 | DateValue 関数 | Hour 関数 | Minute 関数 | Now 関数 | Second 関数 | TimeValue 関数


TimeValue 関数

時刻を表すバリアント型 (内部処理形式が日付型 (Date) の Variant) の値を返します。

TimeValue(time)

引数 time には、通常、0:00:00 (12:00:00 AM) ～ 23:59:59 (11:59:59 PM) の範囲の時刻を表す文字列式を指定します。また、この範囲で時刻を表す任意の式を指定することもできます。引数 time が有効な値ではない場合は、Null 値を返します。

解説

12 時間制、24 時間制のどちらでも時刻を指定することができます。たとえば、"2:24PM" と "14:24" は、両方とも有効な引数となります。引数 time に日付の値が含まれている場合、TimeValue 関数はその日付を戻り値に含めません。ただし、引数 time に不正な日付を指定したときには、エラーが発生します。

次のコードは、TimeValue 関数を使って文字列を時刻に返還する例です。MyTime = #4:35:17 PM# のように、データ リテラルを使用して、時刻を直接バリアント型 (Variant) に割り当てることもできます。

Dim MyTime
MyTime = TimeValue("4:35:17 PM")    ' MyTime は、4:35:17 PM です。

必要条件

バージョン 1

参 照

DateSerial 関数 | DateValue 関数 | Hour 関数 | Minute 関数 | Now 関数 | Second 関数 | TimeSerial 関数


TypeName 関数

指定された変数に関するバリアント サブタイプ情報を提供する文字列を返します。

TypeName(varname)

必ず指定します。引数 varname は任意の変数を指定します。

戻り値

TypeName 関数の戻り値は次のとおりです。

値 | 内容
バイト型 | バイト値
整数型 | 整数
長整数型 | 長整数
単精度浮動小数点数型 | 単精度浮動小数点数
倍精度浮動小数点数型 | 倍精度浮動小数点数
通貨型 (Currency) | 通貨値
Decimal | 10 進数
日付型 (Date) | 日付と時間の値
文字列型 | 文字列
ブール型 (Boolean) | ブール値。真 (True) または偽 (False)
Empty 値 | 未初期化
Null 値 | 無効な値
<object type> | 実際のオブジェクトの種類の名前
オブジェクト型 | オブジェクト
Unknown | オブジェクトの種類が不明なオブジェクト
Nothing | オブジェクトを参照していないオブジェクト変数
エラー型 | エラー型

解説

次のコードは、TypeName 関数を使って変数に関する情報を返す例です。

Dim ArrayVar(4), MyType
NullVar = Null   ' Null 値を割り当てます。

MyType = TypeName("VBScript")   ' "String" を返します。
MyType = TypeName(4)            ' "Integer" を返します。
MyType = TypeName(37.50)        ' "Double" を返します。
MyType = TypeName(NullVar)      ' "Null" を返します。
MyType = TypeName(ArrayVar)     ' "Variant()" を返します。

必要条件

バージョン 2

参 照

IsArray 関数 | IsDate 関数 | IsEmpty 関数 | IsNull 関数 | IsNumeric 関数 | IsObject 関数 | VarType 関数


UBound 関数

配列で指定した次元で使用できるインデックス番号の最大値を返します。

UBound(arrayname[, dimension])

引数

arrayname
必ず指定します。配列変数の名前を指定します。変数の標準的な名前付け規則に従って付けます。
dimension
省略可能です。インデックス番号の最大値を調べる配列の次元を示す整数を指定します。最初の次元なら 1、2 番目の次元なら 2 というように指定します。引数 dimension を省略すると、1 が使用されます。

解説

UBound 関数は、LBound 関数と組み合わせて、配列のサイズを調べるために使います。インデックス番号の最小値を調べるには、LBound 関数を使ってください。

既定の最小の次元値は、常に 0 です。次のような配列が宣言されているとき、UBound 関数は、下の表のような値を結果として返します。

Dim A(100,3,4)
ステートメント | 戻り値
UBound(A, 1) | 100
UBound(A, 2) | 3
UBound(A, 3) | 4

必要条件

バージョン 1

参 照

Dim ステートメント | LBound 関数 | ReDim ステートメント


UCase 関数

指定されたアルファベットの小文字を大文字に変換します。

UCase(string)

引数 string には、任意の文字列式を指定します。引数 string に Null 値が含まれている場合は、Null 値を返します。

解説

小文字だけが大文字に変換されます。小文字のアルファベット以外の文字は影響がありません。

全角アルファベットも変換することができます。次のコードは、UCase 関数を使って文字列を大文字にして返す例です。

Dim MyWord
MyWord = UCase("Hello World")   ' "HELLO WORLD" を返します。

必要条件

バージョン 1

参 照

LCase 関数


VarType 関数

変数の内部処理形式を表す値を返します。

VarType(varname)

引数 varname には、任意の変数を指定します。

戻り値

VarType 関数の戻り値は次のとおりです。

定数 | 値 | 内容
vbEmpty | 0 | Empty 値 (未初期化)
vbNull | 1 | Null 値 (無効な値)
vbInteger | 2 | 整数型
vbLong | 3 | 長整数型 (Long)
vbSingle | 4 | 単精度浮動小数点数型 (Single)
vbDouble | 5 | 倍精度浮動小数点数型 (Double)
vbCurrency | 6 | 通貨型 (Currency)
vbDate | 7 | 日付型 (Date)
vbString | 8 | 文字列型
vbObject | 9 | オートメーション オブジェクト
vbError | 10 | エラー型
vbBoolean | 11 | ブール型 (Boolean)
vbVariant | 12 | バリアント型 (Variant) (バリアント型配列にのみ使用)
vbDataObject | 13 | 非オートメーション オブジェクト
vbByte | 17 | バイト型
vbArray | 8192 | 配列 (Array)
メモ これらの定数は、VBScript で指定されています。定数は、実際の値の代わりにコード内のどの部分でも使うことができます。

解説

VarType 関数は、配列を表す値 (8192) を単独では返しません。この値は常にデータ型を表す他の値と加算されて返され、指定した変数がそのデータ型の要素を持つ配列であることを示します。バリアントを表す値 (12) は、VarType 関数の引数に配列を表す値が加算されたときのみに返されます。たとえば、整数型の要素を持つ配列を指定したときは、整数型 (2) + 配列 (8192) として計算された値 8194 が返されます。オブジェクトが既定の propertyを持つとき、VarType (object) はその既定プロパティの型を返します。

次のコードは、VarType 関数を使って変数の型を判断する例です。

Dim MyCheck
MyCheck = VarType(300)         ' 2 を返します。
MyCheck = VarType(#10/19/62#)   ' 7 を返します。
MyCheck = VarType("VBScript")   ' 8 を返します。

必要条件

バージョン 1

参 照

IsArray 関数 | IsDate 関数 | IsEmpty 関数 | IsNull 関数 | IsNumeric 関数 | IsObject 関数 | TypeName 関数


Weekday 関数

何曜日であるかを表す 1 (日曜) ～ 7 (土曜) の範囲の値を返します。

Weekday(date, [firstdayofweek])

引数

date
日付を表す式を指定します。引数 date が有効な値ではない場合は、Null 値を返します。
firstdayofweek
週の第 1 日目の曜日を表す定数を指定します。この値を省略すると、1 (日曜) が使用されます。

設定値

引数 firstdayofweek の設定値は次のとおりです。

定数 | 値 | 内容
vbUseSystemDayOfWeek | 0 | 各国語対応 (NLS) API の設定値を使用します。
vbSunday | 1 | 日曜
vbMonday | 2 | 月曜
vbTuesday | 3 | 火曜
vbWednesday | 4 | 水曜
vbThursday | 5 | 木曜
vbFriday | 6 | 金曜
vbSaturday | 7 | 土曜

戻り値

Weekday 関数の戻り値は次のとおりです。

定数 | 値 | 内容
vbSunday | 1 | 日曜
vbMonday | 2 | 月曜
vbTuesday | 3 | 火曜
vbWednesday | 4 | 水曜
vbThursday | 5 | 木曜
vbFriday | 6 | 金曜
vbSaturday | 7 | 土曜

解説

次のコードは、Weekday 関数を使って指定した日が何曜日かを取得する例です。

Dim MyDate, MyWeekDay
MyDate = #October 19, 1962#   ' 日付を割り当てます。
MyWeekDay = Weekday(MyDate)    ' MyDate は金曜日なので、MyWeekDay は 6 です。

必要条件

バージョン 1

参 照

Date 関数 | Day 関数 | Month 関数 | Now 関数 | Year 関数


WeekdayName 関数

指定された曜日を表す文字列を返します。

WeekdayName(weekday, abbreviate, firstdayofweek)

引数

weekday
必ず指定します。曜日を示す数値を指定します。各曜日を表す数値は、引数 firstdayofweek の設定値によって異なります。
abbreviate
省略可能です。曜日名を省略するかどうかを示すブール値を指定します。省略すると、既定値の偽 (False) が使われ、曜日名は省略されません。
firstdayofweek
省略可能です。曜日の最初の日を示す数値を指定します。設定する値については、次の「設定値」を参照してください。

設定値

引数 firstdayofweek の設定値は次のとおりです。

定数 | 値 | 内容
vbUseSystemDayOfWeek | 0 | 各国語対応 (NLS) API の設定値を使用します。
vbSunday | 1 | 日曜 (既定値)
vbMonday | 2 | 月曜
vbTuesday | 3 | 火曜
vbWednesday | 4 | 水曜
vbThursday | 5 | 木曜
vbFriday | 6 | 金曜
vbSaturday | 7 | 土曜

解説

次のコードは、WeekDayName 関数を使って曜日を返す例です。

Dim MyDate
MyDate = WeekDayName(6, True)    ' MyDate は、Fri です。

必要条件

バージョン 2

参 照

MonthName 関数


Year 関数

年を表す整数を返します。

Year(date)

引数 date には、日付を表す式を指定します。引数 date が有効な値ではない場合は、Null 値を返します。

解説

次のコードは、Year 関数を使って指定した日付から年を取得する例です。

Dim MyDate, MyYear
MyDate = #October 19, 1962#   ' 日付を割り当てます。
MyYear = Year(MyDate)          ' MyYear は、1962 です。

必要条件

バージョン 1

参 照

Date 関数 | Day 関数 | Month 関数 | Now 関数 | Weekday 関数


VBScript のキーワード

内容 | 言語要素
変数に格納されている値が初期化されていないことを示します。 | Empty キーワード
偽 (0) の値と等しいキーワードです。 | False キーワード
オブジェクト変数とその変数が参照しているオブジェクトとの関連付けを解除するために使用します。 | Nothing キーワード
有効な値が変数に格納されていないことを示します。 | Null キーワード
真 (-1) の値と等しいキーワードです。 | True キーワード

参 照

VBScript ランゲージ リファレンス


Empty キーワード

キーワード Empty は変数に格納されている値が初期化されていないことを示します。キーワード Null とは異なります。

参 照

Null キーワード


False キーワード

False は、偽 (0) の値と等しいキーワードです。

参 照

True キーワード


Nothing キーワード

VBScript におけるキーワード Nothing は、オブジェクト変数とその変数が参照しているオブジェクトとの関連付けを解除するために使用します。Set ステートメントを使って、次のようにキーワード Nothing をオブジェクト変数に代入します。次に例を示します。

Set MyObject = Nothing

複数のオブジェクト変数が、同じオブジェクトを参照することがあります。キーワード Nothing をオブジェクト変数に代入すると、その変数は実際のオブジェクトを参照しなくなります。複数のオブジェクト変数が同じオブジェクトを参照すると、各変数が参照するオブジェクトに関連付けられたメモリとシステム リソースは、Set ステートメントを使ってすべての変数を明示的にキーワード Nothing に設定するか、またはキーワード Nothing に設定した最後のオブジェクト変数が暗黙的に適用範囲 (スコープ) 外になった後でなければ解除されません。

参 照

Dim ステートメント | Set ステートメント


Null キーワード

キーワード Null は、有効な値が変数に格納されていないことを示します。キーワード Empty とは異なります。

参 照

Empty キーワード


True キーワード

True は、真 (-1) の値と等しいキーワードです。

参 照

False キーワード


VBScript のメソッド

内容 | 言語要素
Err オブジェクトのすべてのプロパティの設定値をクリアします。 | Clear メソッド
指定された文字列を正規表現で検索します。 | Execute メソッド
実行時エラーを生成します。 | Raise メソッド
正規表現による検索で見つかったテキストを置換します。 | Replace メソッド
指定された文字列を正規表現で検索します。 | Test メソッド

参 照

VBScript ランゲージ リファレンス


Clear メソッド

Err オブジェクトのすべてのプロパティの設定値をクリアします。

object.Clear

object には、Err オブジェクトを指定します。

解説

Clear メソッドを使うと、エラーを処理した後で Err オブジェクトを明示的にクリアすることができます。この処理は On Error Resume Next ステートメントを使用した後でエラー処理を行うときなどに必要です。次のいずれかのステートメントが実行されると、Microsoft® Visual Basic® Scripting Edition (VBScript) は自動的に Clear メソッドを呼び出します。

  • On Error Resume Next
  • Exit Sub ステートメント
  • Exit 関数

次のコードは、Clear メソッドの使用例です。

On Error Resume Next
Err.Raise 6  ' オーバーフロー エラーを発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description)
Err.Clear    ' エラーのクリア。

必要条件

バージョン 1

参 照

Description プロパティ | Err オブジェクト | Number プロパティ | OnError ステートメント | Raise メソッド | Source プロパティ

対象: Err オブジェクト


Execute メソッド

指定された文字列を正規表現で検索します。

object.Execute(string)

引数

object
必ず指定します。RegExp オブジェクトの名前を指定します。
string
必ず指定します。正規表現による検索の対象となるテキスト文字列を指定します。

解説

正規表現による検索の実際のパターンは、RegExp オブジェクトの Pattern プロパティを使って設定されます。

Execute メソッドは、string 内で見つかった文字列ごとに存在する Match オブジェクトを含む、Matches コレクションを返します。一致する文字列が見つからない場合、空の Matches コレクションを返します。

次のコードは、Execute メソッドの使用例です。

Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches      ' 変数を作成します。
Set regEx = New RegExp         ' 正規表現を作成します。
regEx.Pattern = patrn         ' パターンを設定します。
regEx.IgnoreCase = True         ' 大文字と小文字を区別しないように設定します。
regEx.Global = True         ' 文字列全体を検索するように設定します。
Set Matches = regEx.Execute(strng)   ' 検索を実行します。
For Each Match in Matches      ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致する文字列が見つかった位置は、"
RetStr = RetStr & Match.FirstIndex & " です。一致した文字列は、"
RetStr = RetStr & Match.Value & " です。" & vbCRLF
  Next
  RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 5

参 照

Replace メソッド | Test メソッド

対象: RegExp オブジェクト


Raise メソッド

実行時エラーを生成します。

object.Raise(number, source, description, helpfile, helpcontext)

引数

object
Err オブジェクトを指定します。
number
必ず指定します。指定するオブジェクトの Number プロパティに対応し、エラーに割り当てられているエラー番号を示す、内部処理形式が長整数型 (Long) の整数を指定します。Microsoft® Visual Basic® Scripting Edition (以下 VBScript) のエラー (VBScript の組み込みのエラーとユーザー定義エラー) は、0 ～ 65535 の範囲の値です。
source
省略可能です。最初にエラーを発生させたオブジェクトまたはアプリケーションを指定する文字列式です。オートメーション オブジェクトにこのプロパティを設定する場合は、project.class 形式で指定します。引数 source を指定しないと、現在の VBScript プロジェクトのプログラム ID が使われます。
description
省略可能です。エラー メッセージを表す文字列式を指定します。省略すると、引数 number の値が使われます。VBScript の実行時エラー番号に対応しているときは、VBScript のエラー メッセージが使われます。引数 number に対応するエラー番号がないときは、一般的なエラーメッセージが使われます。
helpfile
省略可能です。このエラーに関するヘルプ トピックが含まれるヘルプ ファイルの絶対パスを指定します。ヘルプ ファイルの絶対パスを指定しない場合は、VBScript ヘルプ ファイルのドライブ、パス、およびファイル名が使用されます。
helpcontext
省略可能です。引数 helpfile 内の指定したエラーに関するトピックのコンテキスト番号を指定します。このコンテキスト番号を省略すると、引数 number の値が VBScript ヘルプ ファイルのコンテキスト番号に対応しているときは、その番号が使われます。

解説

引数 number を除き、すべての引数は省略可能です。ただし、いくつかの引数を指定せずに Raise メソッドを実行したときに、Err オブジェクトの各プロパティの設定値がクリアされていないと、その値がエラーを表す値として使用されます。

オートメーション オブジェクト内で独自のエラー番号を設定するときには、エラー番号を定数 vbObjectError に追加します。たとえば、エラー番号 1050 を発生させるには、引数 number に vbObjectError + 1050 を割り当てます。

次のコードは、Raise メソッドの使用例です。

On Error Resume Next
Err.Raise 6  ' オーバーフロー エラーを発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description)
Err.Clear    ' エラーのクリア。

必要条件

バージョン 1

参 照

Clear メソッド | Description プロパティ | Err オブジェクト | Number プロパティ | Source プロパティ

対象: Err オブジェクト


Replace メソッド

正規表現による検索で見つかったテキストを置換します。

object.Replace(string1, string2)

引数

object
必ず指定します。RegExp オブジェクトの名前を指定します。
string1
必ず指定します。String1 には、検索および置換の対象となるテキスト文字列を指定します。
string2
必ず指定します。String2 には、置換するテキスト文字列を指定します。

解説

置換されるテキスト文字列の実際のパターンは、RegExp オブジェクトの Pattern プロパティを使って設定されます。

Replace メソッドは、string1 のコピーと、string2 で置換された RegExp.Pattern のテキストを返します。一致する文字列が見つからない場合、string1 のコピーが変更されずに返されます。

次のコードは、Replace メソッドの使用例です。

Function ReplaceTest(patrn, replStr)
Dim regEx, str1               ' 変数を作成します。
  str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp            ' 正規表現を作成します。
regEx.Pattern = patrn            ' パターンを設定します。
regEx.IgnoreCase = True           ' 大文字と小文字を区別しないように設定します。
ReplaceTest = regEx.Replace(str1, replStr)   ' 置換します。
End Function

MsgBox(ReplaceTest("fox", "cat"))      ' 'fox' を 'cat' で置換します。

Replace メソッドを使って、パターンに一致する文字列どうしを置換することもできます。上の例に示された関数を次のように呼び出すと、元の文字列に含まれる単語の各ペアが交換されます。

MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "$3$2$1"))   ' 単語のペアを交換します。

必要条件

バージョン 5

参 照

Execute メソッド | Test メソッド

対象: RegExp オブジェクト


Test メソッド

指定された文字列を正規表現で検索し、パターンに一致する文字列が検索されたかどうかを示すブール (Boolean) 値を返します。

object.Test(string)

引数

object
必ず指定します。RegExp オブジェクトの名前を指定します。
string
必ず指定します。正規表現による検索の対象となるテキスト文字列を指定します。

解説

正規表現による検索の実際のパターンは、RegExp オブジェクトの Pattern プロパティを使って設定されます。RegExp.Global プロパティは、Test メソッドに影響しません。

Test メソッドは、パターンに一致する文字列が見つかると True、見つからないと False を返します。

次のコードは、Test メソッドの使用例です。

Function RegExpTest(patrn, strng)
Dim regEx, retVal              ' 変数を作成します。
Set regEx = New RegExp          ' 正規表現を作成します。
regEx.Pattern = patrn          ' パターンを設定します。
regEx.IgnoreCase = False        ' 大文字と小文字を区別するように設定します。
retVal = regEx.Test(strng)      ' 検索をテストします。
  If retVal Then
RegExpTest = "一致する文字列が 1 つ以上見つかりました。"
  Else
RegExpTest = "一致する文字列が見つかりません。"
  End If
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 5

参 照

Execute メソッド | Replace メソッド

対象: RegExp オブジェクト


その他

内容 | 言語要素
0 ～ 127 の ASCII 文字セットの一覧です。 | ASCII 文字セット (0 ～ 127)
128 ～ 255 の ASCII 文字セットの一覧です。 | ASCII 文字セット (128 ～ 255)
ロケール ID (LCID) の一覧です。 | ロケール ID (LCID) の一覧

参 照

VBScript ランゲージ リファレンス


ASCII 文字セット (0 ～ 127)

次の表は、0 ～ 127 の ASCII 文字セットの一覧です。

コード | 文字 | コード | 文字 | コード | 文字 | コード | 文字
0 |  | 32 | [space] | 64 | @ | 96 | `
1 |  | 33 | ! | 65 | A | 97 | a
2 |  | 34 | " | 66 | B | 98 | b
3 |  | 35 | # | 67 | C | 99 | c
4 |  | 36 | $ | 68 | D | 100 | d
5 |  | 37 | % | 69 | E | 101 | e
6 |  | 38 | & | 70 | F | 102 | f
7 |  | 39 | ' | 71 | G | 103 | g
8 | ** | 40 | ( | 72 | H | 104 | h
9 | ** | 41 | ) | 73 | I | 105 | i
10 | ** | 42 | * | 74 | J | 106 | j
11 |  | 43 | + | 75 | K | 107 | k
12 |  | 44 | , | 76 | L | 108 | l
13 | ** | 45 | - | 77 | M | 109 | m
14 |  | 46 | . | 78 | N | 110 | n
15 |  | 47 | / | 79 | O | 111 | o
16 |  | 48 | 0 | 80 | P | 112 | p
17 |  | 49 | 1 | 81 | Q | 113 | q
18 |  | 50 | 2 | 82 | R | 114 | r
19 |  | 51 | 3 | 83 | S | 115 | s
20 |  | 52 | 4 | 84 | T | 116 | t
21 |  | 53 | 5 | 85 | U | 117 | u
22 |  | 54 | 6 | 86 | V | 118 | v
23 |  | 55 | 7 | 87 | W | 119 | w
24 |  | 56 | 8 | 88 | X | 120 | x
25 |  | 57 | 9 | 89 | Y | 121 | y
26 |  | 58 | : | 90 | Z | 122 | z
27 |  | 59 | ; | 91 | [ | 123 | {
28 |  | 60 | < | 92 | \ | 124 | |
29 |  | 61 | = | 93 | ] | 125 | }
30 | - | 62 | > | 94 | ^ | 126 | ~
31 |  | 63 | ? | 95 | _ | 127 | 

** コード番号 8、9、10、13 は制御文字で、それぞれバックスペース、タブ、ライン フィード、キャリッジ リターンとして使われます。これらの制御文字は画面には表示されませんが、各アプリケーション上では、これらの制御文字によってテキストの書式が設定されます。

 現在のプラットフォームではサポートされていません。

参 照

ASCII 文字セット (128 - 255)


ASCII 文字セット (128 ～ 255)

次の表は、128 ～ 255 の ASCII 文字セットの一覧です。

コード | 文字 | コード | 文字 | コード | 文字 | コード | 文字
128 | € | 160 | [space] | 192 | À | 224 | à
129 |  | 161 | ¡ | 193 | Á | 225 | á
130 | ‚ | 162 | ¢ | 194 | Â | 226 | â
131 | ƒ | 163 | £ | 195 | Ã | 227 | ã
132 | „ | 164 | ¤ | 196 | Ä | 228 | ä
133 | … | 165 | ¥ | 197 | Å | 229 | å
134 | † | 166 | § | 198 | Æ | 230 | æ
135 | ‡ | 167 | § | 199 | Ç | 231 | ç
136 | ˆ | 168 | ¨ | 200 | È | 231 | ç
137 | ‰ | 169 | © | 201 | É | 232 | è
138 | Š | 170 | ª | 202 | Ê | 233 | é
139 | ‹ | 171 | « | 203 | Ë | 234 | ê
140 | Œ | 172 | ¬ | 204 | Ì | 235 | ë
141 |  | 173 |  | 205 | Í | 236 | ì
142 | Ž | 174 | ® | 206 | Î | 237 | í
143 |  | 175 | ¯ | 207 | Ï | 238 | î
144 |  | 176 | ° | 208 | Ð | 239 | ï
145 | ‘ | 177 | ± | 209 | Ñ | 240 | ð
146 | ’ | 178 | ² | 210 | Ò | 241 | ñ
147 | “ | 179 | ³ | 211 | Ó | 242 | ò
148 | ” | 180 | ´ | 212 | Ô | 243 | ó
149 | • | 181 | µ | 213 | Õ | 244 | Õ
150 | – | 182 | ¶ | 214 | Ö | 245 | õ
151 | — | 183 | · | 215 | × | 246 | ö
152 | ˜ | 184 | ¸ | 216 | Ø | 247 | ÷
153 | ™ | 185 | ¹ | 217 | Ù | 248 | ø
154 | š | 186 | º | 218 | Ú | 249 | ù
155 | › | 187 | » | 219 | Û | 250 | ú
156 | œ | 188 | ¼ | 220 | Ü | 251 | û
157 |  | 189 | ½ | 221 | Ý | 252 | ü
158 | ž | 190 | ¾ | 222 | Þ | 253 | ý
159 | Ÿ | 191 | ¿ | 223 | ß | 254 | þ

 現在のプラットフォームではサポートされていません。

参 照

ASCII 文字セット (0 - 127)


ロケール ID (LCID) の一覧

次の表は、ロケール ID (LCID) の一覧です。

ロケール名 | 言語コード | 16 進値 | 10 進数 | ロケール名 | 言語コード | 16 進値 | 10 進数
アフリカーンス語 | af | 0x0436 | 1078 | ヒンズー語 | hi | 0x0439 | 1081
アルバニア語 | sq | 0x041C | 1052 | ハンガリー語 | hu | 0x040E | 1038
アラビア語 (U.A.E.) | ar-ae | 0x3801 | 14337 | アイスランド語 | is | 0x040F | 1039
アラビア語 (バーレーン) | ar-bh | 0x3C01 | 15361 | インドネシア語 | in | 0x0421 | 1057
アラビア語 (アルジェリア) | ar-dz | 0x1401 | 5121 | イタリア語 (イタリア) | it | 0x0410 | 1040
アラビア語 (エジプト) | ar-eg | 0x0C01 | 3073 | イタリア語 (スイス) | it-ch | 0x0810 | 2064
アラビア語 (イラク) | ar-iq | 0x0801 | 2049 | 日本語 | ja | 0x0411 | 1041
アラビア語 (ヨルダン) | ar-jo | 0x2C01 | 11265 | 韓国語 | ko | 0x0412 | 1042
アラビア語 (クウェート) | ar-kw | 0x3401 | 13313 | ラトビア語 | lv | 0x0426 | 1062
アラビア語 (レバノン) | ar-lb | 0x3001 | 12289 | リトアニア語 | lt | 0x0427 | 1063
アラビア語 (リビア) | ar-ly | 0x1001 | 4097 | マケドニア語 (FYROM) | mk | 0x042F | 1071
アラビア語 (モロッコ) | ar-ma | 0x1801 | 6145 | マレー語 (マレーシア) | ms | 0x043E | 1086
アラビア語 (オマーン) | ar-om | 0x2001 | 8193 | マルタ語 | mt | 0x043A | 1082
アラビア語 (カタール) | ar-qa | 0x4001 | 16385 | ノルウェー語 (ブークモール) | no | 0x0414 | 1044
アラビア語 (サウジアラビア) | ar-sa | 0x0401 | 1025 | ポーランド語 | pl | 0x0415 | 1045
アラビア語 (シリア) | ar-sy | 0x2801 | 10241 | ポルトガル語 (ポルトガル) | pt | 0x0816 | 2070
アラビア語 (チュニジア) | ar-tn | 0x1C01 | 7169 | ポルトガル語 (ブラジル) | pt-br | 0x0416 | 1046
アラビア語 (イエメン) | ar-ye | 0x2401 | 9217 | レトロマン語 | rm | 0x0417 | 1047
バスク語 | eu | 0x042D | 1069 | ルーマニア語 | ro | 0x0418 | 1048
ベラルーシ語 | be | 0x0423 | 1059 | ルーマニア語 (モルドバ) | ro-mo | 0x0818 | 2072
ブルガリア語 | bg | 0x0402 | 1026 | ロシア語 | ru | 0x0419 | 1049
カタロニア語 | ca | 0x0403 | 1027 | ロシア語 (モルドバ) | ru-mo | 0x0819 | 2073
中国語 (中華人民共和国) | zh-cn | 0x0804 | 2052 | セルビア語 (キリル文字) | sr | 0x0C1A | 3098
中国語 (香港) | zh-hk | 0x0C04 | 3076 | ツワナ語 | tn | 0x0432 | 1074
中国語 (シンガポール) | zh-sg | 0x1004 | 4100 | スロベニア語 | sl | 0x0424 | 1060
中国語 (台湾) | zh-tw | 0x0404 | 1028 | スロバキア語 | sk | 0x041B | 1051
クロアチア語 | hr | 0x041A | 1050 | ソルビア語 | sb | 0x042E | 1070
チェコ語 | cs | 0x0405 | 1029 | スペイン語 (スペイン) | es | 0x040A | 1034
デンマーク語 | da | 0x0406 | 1030 | スペイン語 (アルゼンチン) | es-ar | 0x2C0A | 11274
オランダ語 | nl | 0x0413 | 1043 | スペイン語 (ボリビア) | es-bo | 0x400A | 16394
オランダ語 (ベルギー) | nl-be | 0x0813 | 2067 | スペイン語 (チリ) | es-cl | 0x340A | 13322
英語 (オーストラリア) | en-au | 0x0C09 | 3081 | スペイン語 (コロンビア) | es-co | 0x240A | 9226
英語 (ベリーズ) | en-bz | 0x2809 | 10249 | スペイン語 (コスタリカ) | es-cr | 0x140A | 5130
英語 (カナダ) | en-ca | 0x1009 | 4105 | スペイン語 (ドミニカ共和国) | es-do | 0x1C0A | 7178
英語 (アイルランド) | en-ie | 0x1809 | 6153 | スペイン語 (エクアドル) | es-ec | 0x300A | 12298
英語 (ジャマイカ) | en-jm | 0x2009 | 8201 | スペイン語 (グアテマラ) | es-gt | 0x100A | 4106
英語 (ニュージーランド) | en-nz | 0x1409 | 5129 | スペイン語 (ホンジュラス) | es-hn | 0x480A | 18442
英語 (南アフリカ) | en-za | 0x1C09 | 7177 | スペイン語 (メキシコ) | es-mx | 0x080A | 2058
英語 (トリニダード) | en-tt | 0x2C09 | 11273 | スペイン語 (ニカラグア) | es-ni | 0x4C0A | 19466
英語 (U.K.) | en-gb | 0x0809 | 2057 | スペイン語 (パナマ) | es-pa | 0x180A | 6154
英語 (U.S.) | en-us | 0x0409 | 1033 | スペイン語 (ペルー) | es-pe | 0x280A | 10250
エストニア語 | et | 0x0425 | 1061 | スペイン語 (プエルトリコ) | es-pr | 0x500A | 20490
ペルシャ語 | fa | 0x0429 | 1065 | スペイン語 (パラグアイ) | es-py | 0x3C0A | 15370
フィンランド語 | fi | 0x040B | 1035 | スペイン語 (エルサルバドル) | es-sv | 0x440A | 17418
フェロー語 | fo | 0x0438 | 1080 | スペイン語 (ウルグアイ) | es-uy | 0x380A | 14346
フランス語 (フランス) | fr | 0x040C | 1036 | スペイン語 (ベネズエラ) | es-ve | 0x200A | 8202
フランス語 (ベルギー) | fr-be | 0x080C | 2060 | ソト語 | sx | 0x0430 | 1072
フランス語 (カナダ) | fr-ca | 0x0C0C | 3084 | スウェーデン語 | sv | 0x041D | 1053
フランス語 (ルクセンブルグ) | fr-lu | 0x140C | 5132 | スウェーデン語 (フィンランド) | sv-fi | 0x081D | 2077
フランス語 (スイス) | fr-ch | 0x100C | 4108 | タイ語 | th | 0x041E | 1054
ゲール語 (スコットランド) | gd | 0x043C | 1084 | トルコ語 | tr | 0x041F | 1055
ドイツ語 (ドイツ) | de | 0x0407 | 1031 | ツォンガ語 | ts | 0x0431 | 1073
ドイツ語 (オーストリア) | de-at | 0x0C07 | 3079 | ウクライナ語 | uk | 0x0422 | 1058
ドイツ語 (リヒテンシュタイン) | de-li | 0x1407 | 5127 | ウルドゥー語 (パキスタン) | ur | 0x0420 | 1056
ドイツ語 (ルクセンブルグ) | de-lu | 0x1007 | 4103 | ベトナム語 | vi | 0x042A | 1066
ドイツ語 (スイス) | de-ch | 0x0807 | 2055 | コーサ語 | xh | 0x0434 | 1076
ギリシャ語 | el | 0x0408 | 1032 | イディッシュ語 | ji | 0x043D | 1085
ヘブライ語 | he | 0x040D | 1037 | ズールー語 | zu | 0x0435 | 1077


VBScript のオブジェクトとコレクション

内容 | 言語要素
クラスのイベントにアクセスする手段を提供します。 | Class オブジェクト
Err オブジェクトは、実行時エラーに関する情報を保有しています。 | Err オブジェクト
正規表現で一致した文字列の読み取り専用プロパティにアクセスする手段を提供します。 | Match オブジェクト
正規表現の Match オブジェクトのコレクションです。 | Matches コレクション
正規表現の機能を提供します。 | RegExp オブジェクト
正規表現のサブマッチ文字列のコレクションです。 | SubMatches コレクション

参 照

VBScript ランゲージ リファレンス


Class オブジェクト

Class ステートメントを使って作成されるオブジェクトです。クラスのイベントにアクセスする手段を提供します。

解説

変数を Class 型として明示的に宣言することはできません。VBScript では、"Class オブジェクト" という用語は VBScript の Class ステートメントを使って定義された任意のオブジェクトを示します。

Class ステートメントを使ってクラスの定義を作成しておくと、次の形式でクラスのインスタンスを作成できます。

Dim X
Set X = New classname

VBScript は実行時バインディング方式の言語なので、以下の式を実行することはできません。

Dim X as New classname

または

Dim X
X = New classname

または

Set X = New Scripting.FileSystemObject

イベント

Class オブジェクトのイベント

必要条件

バージョン 5

参 照

Class ステートメント | Dim ステートメント | Set ステートメント


Class オブジェクトのイベント

Class オブジェクトを使用すると、クラスのイベントにアクセスできます。

イベント

Initialize イベント

Terminate イベント


Matches コレクション

正規表現の Match オブジェクトのコレクションです。

解説

Matches コレクションには、個別の Match オブジェクトが格納されます。このコレクションは、RegExp オブジェクトの Execute メソッドによってのみ作成可能です。個別の Match オブジェクトのプロパティと同様、Matches コレクションのプロパティは読み取り専用です。

正規表現で検索を実行すると、Match オブジェクトが 0 個以上作成されます。それぞれの Match オブジェクトは、正規表現で検索された文字列、文字列の長さ、および文字列が検索された場所のインデックスにアクセスする手段を提供します。

次のコードは、正規表現の検索で Matches コレクションを取得し、コレクションに対して繰り返し処理を行う例です。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致する文字列が見つかった位置は、"
      RetStr = RetStr & Match.FirstIndex & " です。一致した文字列は、"
      RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 1

参 照

For Each...Next ステートメント | Match オブジェクト | RegExp オブジェクト | SubMatches コレクション


Err オブジェクト

Err オブジェクトは、実行時エラーに関する情報を保有しています。実行時エラーを生成またはクリアする場合は、Raise メソッドおよび Clear メソッドを使用できます。

解説

Err オブジェクトは、グローバルな適用範囲 (スコープ)の組み込みオブジェクトなので、コード内でそのインスタンスを作成する必要はありません。Err オブジェクトのプロパティは、エラーを発生させた Visual Basic、OLE オブジェクト、または VBScript のプログラマによって設定されます。

Err オブジェクトの既定プロパティは Number プロパティです。オートメーション オブジェクトは、Err オブジェクトの Number の整数値を参照することにより、適切な SCODE を取得します。

実行時エラーが発生すると、そのエラーを識別するための情報など、エラー処理で利用可能な情報が、Err オブジェクトに格納されます。コード内で実行時エラーを生成するには、Raise メソッドを使います。

Err オブジェクトの各プロパティは、On Error Resume Next ステートメントの後、0 または長さ 0 の文字列 ("") にリセットされます。Clear メソッドを使うと、Err を明示的にリセットすることができます。

次のコードは、Err オブジェクトの使用例です。

On Error Resume Next
Err.Raise 6   ' オーバーフロー エラーを発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description)
Err.Clear      ' エラーのクリア。

プロパティとメソッド

Err オブジェクトのプロパティとメソッド

必要条件

バージョン 1

参 照

On Error ステートメント


Err オブジェクトのプロパティとメソッド

Err オブジェクトを使用すると、ランタイム エラーに関する情報にアクセスできます。

プロパティ

Description プロパティ

HelpContext プロパティ

HelpFile プロパティ

Number プロパティ

Source プロパティ

メソッド

Clear メソッド

Raise メソッド


Match オブジェクト

正規表現で一致した文字列の読み取り専用プロパティにアクセスする手段を提供します。

解説

Match オブジェクトは、RegExp オブジェクトの Execute メソッドによってのみ作成が可能です。このメソッドが実際に返すのは、Match オブジェクトのコレクションです。Match オブジェクトのプロパティは、すべて読み取り専用です。

正規表現で検索を実行すると、Match オブジェクトが 0 個以上作成されます。それぞれの Match オブジェクトは、正規表現で検索された文字列、文字列の長さ、および文字列が検索された場所のインデックスにアクセスする手段を提供します。

次のコードは、Match オブジェクトの使用例です。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
      RetStr = RetStr & "一致 " & I & " が、"
      RetStr = RetStr & Match.FirstIndex & " で見つかりました。一致した文字列は、"
      RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

プロパティ

Match オブジェクトのプロパティ

必要条件

バージョン 5

参 照

Matches コレクション | RegExp オブジェクト | SubMatches コレクション


Match オブジェクトのプロパティ

Match オブジェクトを使用すると、正規表現で一致した文字列の読み取り専用プロパティにアクセスできます。

プロパティ

FirstIndex プロパティ

Length プロパティ

Value プロパティ


RegExp オブジェクト

正規表現の機能を提供します。

解説

次のコードは、RegExp オブジェクトの使用例です。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
      RetStr = RetStr & "一致する文字列が見つかった位置は、"
      RetStr = RetStr & Match.FirstIndex & " です。一致した文字列は、"
      RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

プロパティとメソッド

Regular Expression オブジェクトのプロパティとメソッド

必要条件

バージョン 5

参 照

Match オブジェクト | Matches コレクション


Regular Expression オブジェクトのプロパティとメソッド

Regular Expression オブジェクトは、簡単な正規表現をサポートします。

プロパティ

Global プロパティ

IgnoreCase プロパティ

Pattern プロパティ

メソッド

Execute メソッド

Replace メソッド

Test メソッド


SubMatches コレクション

正規表現のサブマッチ文字列のコレクションです。

解説

SubMatches コレクションには、個別のサブマッチ文字列が格納されます。このコレクションは、RegExp オブジェクトの Execute メソッドによってのみ作成可能です。SubMatches コレクションのプロパティは、すべて読み取り専用です。

正規表現で検索を実行すると、サブ条件が取得を示すかっこで囲まれている場合にサブマッチ文字列が 0 個以上作成されます。SubMatches コレクションの各項目は、正規表現によって検索および取得される文字列です。

次のコードは、正規表現の検索で SubMatches コレクションを取得し、各メンバにアクセスする例です。

Function SubMatchTest(inpStr)
  Dim oRe, oMatch, oMatches
  Set oRe = New RegExp
' e-mail アドレスを検索します (正確な RegExp ではありません)。
  oRe.Pattern = "(\w+)@(\w+)\.(\w+)"
' Matches コレクションを取得します。
  Set oMatches = oRe.Execute(inpStr)
' Matches コレクションの最初の項目を取得します。
  Set oMatch = oMatches(0)
' 結果の文字列を作成します。
' Match オブジェクトは、dragon@xyzzy.com 全体に一致します。
retStr = "Email アドレス : "  & oMatch & vbNewline
' アドレスのサブマッチの部分を取得します。
retStr = retStr & "Email のエイリアス : " & oMatch.SubMatches(0)  ' dragon
  retStr = retStr & vbNewline
retStr = retStr & "組織 : " " & oMatch. SubMatches(1)' xyzzy
  SubMatchTest = retStr
End Function
MsgBox(SubMatchTest("dragon@xyzzy.com.にメールを送信してください。ありがとうございました。"))

必要条件

バージョン 5.5

参 照

For Each...Next ステートメント | Match オブジェクト | Matches コレクション | RegExp オブジェクト


VBScript の演算子

内容 | 言語要素
VBScript で使用される演算子の優先順位を表す一覧です。 | 演算子の優先順位
演算子の概要です。 | 演算子の概要
VBScript で使用される算術演算子の一覧です。 | 算術演算子
式を比較します。 | 比較演算子
VBScript で使用される文字列凍結演算子の一覧です。 | 文字列凍結演算子
VBScript で使用される論理演算子の一覧です。 | 論理演算子

参 照

VBScript ランゲージ リファレンス


演算子の優先順位 (VBScript)

Visual Basic Scripting Edition

演算子の優先順位

1 つの式の中で複数の演算が実行されるとき、式の各部分の演算子は一定の順序に従って評価され、演算が実行されます。この順序を演算子の優先順位と呼びます。かっこを使用すると、演算子の優先順位と関係なく、かっこの内側の演算は、かっこの外側の演算よりも先に実行されます。ただし、かっこの内側の演算子には通常の優先順位が適用されます。ただし、かっこの内側の演算子には通常の優先順位が適用されます。

異なる種類の演算子が 1 つの式の中で使用されているとき、式の各部分の演算子が評価され、演算が実行される順序は、算術演算子、比較演算子、論理演算子の順になります。また、比較演算子では、優先順位はすべて同等の評価です。したがって、比較演算子が使用された式での評価は、左から右の順となります。次の表では、算術演算子と論理演算子を優先順位の評価の高い順に上から並べています。

算術演算子 | 比較演算子 | 論理演算子
マイナス符号 (-) | 等しい (=) | Not
指数演算 (^) | 等しくない (<>) | And
乗算と除算 (*, /) | より小さい (<) | Or
整数除算 (\) | より大きい (>) | Xor
剰余演算 (Mod) | 以下 (<=) | Eqv
加算と減算 (+, -) | 以上 (>=) | Imp
文字列連結 (&) | Is | &

1 つの式の中で乗算と除算の演算子が同時に使用されるとき、式の各部分のこれらの演算子は左から右の順で評価され、演算が実行されます。加算と減算の場合も、同様に左から右の順で評価されます。

文字列連結演算子 (&) は、算術演算子ではありませんが、優先順位はどの算術演算子よりも低く、どの比較演算子よりも高くなります。Is 演算子は参照されているオブジェクトを比較する演算子です。この演算子は、オブジェクト自体やオブジェクトの値を比較するものではありません。2 つのオブジェクト変数が同じオブジェクトを参照しているかどうかを調べるだけです。

必要条件

バージョン 1

参 照

Is 演算子 | 演算子の概要


演算子の概要 (VBScript)

Visual Basic Scripting Edition

演算子の概要

算術演算子
算術演算を行うときに使用する演算子です。

代入演算子
値をプロパティまたは変数に代入するときに使用する演算子です。

比較演算子
比較を行うときに使用する演算子です。

文字列連結演算子
文字列の連結を行うときに使用する演算子です。

論理演算子
論理演算を行うときに使用する演算子です。

参 照

演算子の優先順位


+ 演算子 (VBScript)

Visual Basic Scripting Edition

+ 演算子

2 つの数値の和を求めます。

result = expression1 + expression2

引数

result
任意の数値変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

+ 演算子は文字列の連結にも使用できますが、コードの意味があいまいになる恐れがあります。プログラムを理解しやすくするために、文字列の連結には & 演算子を使用してください。

+ 演算子を使うと、加算と文字列連結のどちらが行われるのか、事前にはわかりにくい場合があります。

式の内部処理形式により、+ 演算子の動作は次のように異なります。

条件 | 行われる演算
両方の式が数値 | 加算
両方の式が文字列 | 文字列連結
一方の式が数値、他方が文字列 | 加算

一方または両方の式が Null 値の場合、演算結果 result は Null 値になります。両方の式が Empty 値のとき、演算結果 result の内部処理形式は整数型 (Integer) になります。ただし、一方の式だけが Empty 値のときは、他方の式がそのまま演算結果 result として返されます。

必要条件

バージョン 1

参 照

& 演算子 | - 演算子 | 算術演算子 | 文字列連結演算子 | 演算子の優先順位 | 演算子の概要


And 演算子

2 つの式の論理積を求めます。

result = expression1 And expression2

引数

result
任意の数値変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

両方の式がそれぞれ真 (True) と評価されるときに限り、演算結果 result は真 (True) になります。どちらか一方の式が偽 (False) と評価されるときは、演算結果 result は偽 (False) になります。次の表は、2 つの式の値と演算結果 result の値の対応を示しています。

expression1 | expression2 | result
True | True | True
True | False | False
True | Null 値 | Null 値
False | True | False
False | False | False
False | Null 値 | False
Null 値 | True | Null 値
Null 値 | False | False
Null 値 | Null 値 | Null 値

And 演算子は、2 つの数式内の対応するビットに対するビット単位の比較も行います。次の真理値表に従って、演算結果 result 内の対応するビットがセットされます。

expression1 | expression2 | result
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1

必要条件

バージョン 1

参 照

論理演算子 | Not 演算子 | 演算子の優先順位 | 演算子の概要 | Or 演算子 | Xor 演算子


= 演算子 (VBScript)

Visual Basic Scripting Edition

= 演算子

値を変数またはプロパティに代入します。

variable = value

引数

variable
任意の変数または任意の書き込み可能なプロパティを指定します。
value
任意の数値または文字列リテラル、定数、または式を指定します。

解説

代入先 variable が変数である場合は、単純なスカラー変数または配列の要素です。代入先 variable がプロパティである場合は、ランタイムで書き込みできるプロパティです。

必要条件

バージョン 1

参 照

比較演算子 | 演算子の優先順位 | 演算子の概要 | Set ステートメント


& 演算子

2 つの式に対して文字列連結を行います。

result = expression1 & expression2

引数

result
任意の変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

式 expression が文字列でない場合は、常に内部処理形式が文字列型 (String) に変換されます。両方の式が Null 値のときは、演算結果 result も Null 値になります。ただし、一方の式だけが Null 値のときは、長さ 0 の文字列 ("") として他方の式と連結されます。Empty 値を持つ式も、長さ 0 の文字列として扱われます。

必要条件

バージョン 1

参 照

文字列連結演算子 | 演算子の優先順位 | 演算子の概要


/ 演算子 (VBScript)

Visual Basic Scripting Edition

/ 演算子

2 つの数値の商を計算し、結果を浮動小数点数で返します。

result = number1/number2

引数

result
任意の数値変数を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

解説

一方または両方の式が Null 値の場合、演算結果 result は Null 値になります。Empty 値を持つ式は、0 として処理されます。

必要条件

バージョン 1

参 照

* 演算子 | / 演算子 | 算術演算子 | 演算子の優先順位 | 演算子の概要


Eqv 演算子

2 つの式の論理等値を求めます。

result = expression1 Eqv expression2

引数

result
任意の数値変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

両方の式が真 (True) または偽 (False) の場合は、演算結果 result は真 (True) になります。どちらかの式が Null 値の場合は、演算結果 result も Null 値になります。どちらの式も Null 値でない場合、演算結果 result の値は次に示す表のようになります。

expression1 | expression2 | result
True | True | True
True | False | False
False | True | False
False | False | True

Eqv 演算子は、2 つの数式内の対応するビットに対するビット単位の比較も行います。次の真理値表に従って、演算結果 result 内の対応するビットがセットされます。

expression1 | expression2 | result
0 | 0 | 1
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1

必要条件

バージョン 1

参 照

Imp 演算子 | 論理演算子 | 演算子の優先順位 | 演算子の概要


^ 演算子

数値のべき乗を求めます。

result = number^exponent

引数

result
任意の数値変数を指定します。
number
任意の数式を指定します。
exponent
任意の数式を指定します。

解説

数式 exponent が整数のときに限り、引数 Number に負の値を指定できます。1 つの式の中で複数の指数演算が行われるとき、^ 演算子は左から右の順に評価されます。

数式 number または exponent のいずれかが Null 値に評価される式の場合は、演算結果 result も Null 値となります。

必要条件

バージョン 1

参 照

算術演算子 | 演算子の優先順位 | 演算子の概要


Imp 演算子

2 つの式の論理包含演算を行います。

result = expression1 Imp expression2

引数

result
任意の数値変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

次の表は、2 つの式の値と演算結果 result の値の対応を示しています。

expression1 | expression2 | result
True | True | True
True | False | False
True | Null 値 | Null 値
False | True | True
False | False | True
False | Null 値 | True
Null 値 | True | True
Null 値 | False | Null 値
Null 値 | Null 値 | Null 値

Imp 演算子は、2 つの数式内の対応するビットに対するビット単位の比較も行います。次の真理値表に従って、演算結果 result 内の対応するビットがセットされます。

expression1 | expression2 | result
0 | 0 | 1
0 | 1 | 1
1 | 0 | 0
1 | 1 | 1

必要条件

バージョン 1

参 照

Eqv 演算子 | 論理演算子 | 演算子の優先順位 | 演算子の概要


\ 演算子

2 つの数値の商を計算し、結果を整数で返します。

result = number1\number2

引数

result
任意の数値変数を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

解説

除算を実行する前に、数式は内部処理形式がバイト型 (Byte)、整数型 (Integer)、または長整数型 (Long) の式に丸められます。

一方または両方の式が Null 値のときは、演算結果 result も Null 値になります。Empty 値を持つ式は、0 として処理されます。

必要条件

バージョン 1

参 照

* 演算子 | / 演算子 | 算術演算子 | 演算子の優先順位 | 演算子の概要


Is 演算子

2 つのオブジェクト変数を比較します。

result = object1 Is object2

引数

result
任意の数値変数を指定します。
object1
任意のオブジェクト変数を指定します。
object2
任意のオブジェクト変数を指定します。

解説

引数 object1 と object2 に指定した変数が、どちらも同じオブジェクトを参照しているときは、演算結果 result は真 (True) になります。別のオブジェクトを参照しているときは、演算結果 result は偽 (False) になります。2 つの変数に同じオブジェクトを参照させるには、いくつかの方法があります。

次の例では、変数 A は変数 B と同じオブジェクトを参照するようになります。

Set A = B

次の例では、変数 A と変数 B は変数 C と同じオブジェクトを参照するようになります。

Set A = C
Set B = C

必要条件

バージョン 1

参 照

比較演算子 | 演算子の優先順位 | 演算子の概要


Mod 演算子

2 つの数値の除算を行い、その剰余を返します。

result = number1 Mod number2

引数

result
任意の数値変数を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

解説

剰余演算子は、数式 number1 を number2 で除算し、その余りを演算結果 result として返します。このとき浮動小数点数は整数に丸められます。たとえば、次に示す式では、変数 A (演算結果 result) の値は 5 になります。

A = 19 Mod 6.7

一方または両方の式が Null 値のときは、演算結果 result も Null 値になります。Empty 値を持つ式は、0 として処理されます。

必要条件

バージョン 1

参 照

算術演算子 | 演算子の優先順位 | 演算子の概要


* 演算子 (VBScript)

Visual Basic Scripting Edition

* 演算子

2 つの数値の積を求めます。

result = number1*number2

引数

result
任意の数値変数を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

解説

一方または両方の式が Null 値の場合、演算結果 result は Null 値になります。Empty 値を持つ式は、0 として扱われます。

必要条件

バージョン 1

参 照

\ 演算子 | 算術演算子 | 演算子の優先順位 | 演算子の概要


Not 演算子

式の論理否定を求めます。

result = Not expression

引数

result
任意の数値変数を指定します。
expression
任意の式を指定します。

解説

次の表は、2 つの式の値と演算結果 result の値の対応を示しています。

式 | 結果
True | False
False | True
Null 値 | Null 値

Not 演算子は、変数に対してビット単位の反転も行います。次に示す真理値表に従って、演算結果 result の対応するビットがセットされます。

式 | 結果
0 | 1
1 | 0

必要条件

バージョン 1

参 照

And 演算子 | 論理演算子 | 演算子の優先順位 | 演算子の概要 | Or 演算子 | Xor 演算子


Or 演算子

2 つの式の論理和を求めます。

result = expression1 Or expression2

引数

result
任意の数値変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

2 つの式のどちらか一方、または両方が真 (True) の場合、演算結果 result は真 (True) になります。次の表は、2 つの式の値と演算結果 result の値の対応を示しています。

expression1 | expression2 | result
True | True | True
True | False | True
True | Null 値 | True
False | True | True
False | False | False
False | Null 値 | Null 値
Null 値 | True | True
Null 値 | False | Null 値
Null 値 | Null 値 | Null 値

Or 演算子は、2 つの数式内の対応するビットに対するビット単位の比較も行います。次の真理値表に従って、演算結果 result 内の対応するビットがセットされます。

expression1 | expression2 | result
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1

必要条件

バージョン 1

参 照

And 演算子 | 論理演算子 | Not 演算子 | 演算子の優先順位 | 演算子の概要 | Xor 演算子


- 演算子 (VBScript)

Visual Basic Scripting Edition

- 演算子

2 つの数値の差を求めます。または、数式の符号を反転した値を指定します。

構文 1

result = number1-number2

構文 2

-number

引数

result
任意の数値変数を指定します。
number
任意の数式を指定します。
number1
任意の数式を指定します。
number2
任意の数式を指定します。

解説

構文 1 では、- 演算子は減算演算子として、2 つの数値の差を求めるために使用されます。構文 2 では、- 演算子は単項マイナス符号演算子として、式の符号を反転した値を指定するために使用されます。

一方または両方の式が Null 値の場合、演算結果 result は Null 値になります。Empty 値を持つ式は、0 として扱われます。

必要条件

バージョン 1

参 照

+ 演算子 | 算術演算子 | 演算子の優先順位 | 演算子の概要


Xor 演算子

2 つの式の排他的論理和を求めます。

result = expression1 Xor expression2

引数

result
任意の数値変数を指定します。
expression1
任意の式を指定します。
expression2
任意の式を指定します。

解説

2 つの式の一方だけが真 (True) の場合、演算結果 result は真 (True) になります。どちらかの式が Null 値の場合は、演算結果 result も Null 値になります。どちらの式も Null 値でない場合、演算結果 result の値は次に示す表のようになります。

expression1 | expression2 | result
True | True | False
True | False | True
False | True | True
False | False | False

Xor 演算子は、2 つの数式内の対応するビットに対するビット単位の比較も行います。次の真理値表に従って、演算結果 result 内の対応するビットがセットされます。

expression1 | expression2 | result
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0

必要条件

バージョン 1

参 照

And 演算子 | 論理演算子 | Not 演算子 | 演算子の優先順位 | 演算子の概要 | Or 演算子


算術演算子

^ 演算子

* 演算子

/ 演算子

\ 演算子

Mod 演算子

+ 演算子

- 演算子

文字列連結演算子


比較演算子 (VBScript)

Visual Basic Scripting Edition

比較演算子

式を比較します。

result = expression1 comparisonoperator expression2
result = object1 Is object2

指定項目

result
任意の数値変数を指定します。
expression
任意の式を指定します。
comparisonoperator
任意の比較演算子を指定します。
object
任意のオブジェクト変数を指定します。

解説

Is 演算子には比較の機能があり、次の表に示すように比較される式に使用されている演算子によってその結果が異なります。次の表は、比較演算子と条件の一覧です。この組み合わせにより、result が True、False、Nullのいずれになるかが決まります。

演算子 | 内容 | True | False | Null
< | より小さい (<) | expression1 < expression2 | expression1 >= expression2 | expression1 or expression2 = Null
<= | 以下 (<=) | expression1 <= expression2 | expression1 > expression2 | expression1 or expression2 = Null
> | より大きい (>) | expression1 > expression2 | expression1 <= expression2 | expression1 or expression2 = Null
>= | 以上 (>=) | expression1 >= expression2 | expression1 < expression2 | expression1 or expression2 = Null
= | 等しい (=) | expression1 = expression2 | expression1 <> expression2 | expression1 or expression2 = Null
<> | 等しくない (<>) | expression1 <> expression2 | expression1 = expression2 | expression1 or expression2 = Null

比較の際に、2 つの式が数値、文字列のいずれとして比較されているのかを簡単に判断できない場合があります。

次の表は、式の比較の方法または結果を、内部処理形式に応じて示したものです。

条件 | 行われる演算
両方の式が数値 | 数値モードで比較を行います。
両方の式が文字列 | 文字列モードで比較を行います。
一方の式が数値、他方が文字列 | 数式の方が文字列式より小さくなります。
一方の式が Empty、他方が数値 | 数値モードで比較を行います。Empty には 0 を使用します。
一方の式が Empty、他方が文字列 | 文字列モードで比較を行います。Empty には長さ 0 の文字列 ("") を使用します。
両方の式が Empty | 式は等しくなります。

必要条件

バージョン 1

参 照

= 演算子 | Is 演算子 | 演算子の優先順位 | 演算子の概要


文字列連結演算子

& 演算子

+ 演算子


論理演算子

And 演算子

Not 演算子

Or 演算子

Xor 演算子


VBScript のプロパティ

内容 | 言語要素
エラーと関連付ける、エラーを説明する文字列を設定します。 | Description プロパティ
検索対象の文字列内で一致が見つかった場所を返します。 | FirstIndex プロパティ
ブール値を設定するか返します。 | Global プロパティ
ヘルプ ファイルのトピックを表すコンテキスト番号を設定します。値の取得も可能です。 | HelpContext プロパティ
ヘルプ ファイルへのパスを設定します。値の取得も可能です。 | HelpFile プロパティ
パターン検索で大文字と小文字を区別するかどうかを示すブール (Boolean) 値を設定します。 | IgnoreCase プロパティ
検索対象の文字列内で一致した文字列の長さを返します。 | Length プロパティ
エラーを指定する数値を設定します。値の取得も可能です。 | Number プロパティ
検索される正規表現のパターンを設定します。値の取得も可能です。 | Pattern プロパティ
最初にエラーを発生させたオブジェクトまたはアプリケーションの名前を設定します。値の取得も可能です。 | Source プロパティ
検索対象の文字列内で一致した値またはテキストを返します。 | Value プロパティ

参 照

VBScript ランゲージ リファレンス


Description プロパティ (VBScript)

Visual Basic Scripting Edition

Description プロパティ

エラーと関連付ける、エラーを説明する文字列を設定します。

object.Description [= stringexpression]

引数

object
必ず指定します。Err オブジェクトを指定します。
stringexpression
省略可能です。エラー メッセージを表す文字列式を指定します。

解説

Description プロパティには、エラーに関する簡単な説明を定義します。このプロパティを使用して、処理できないエラーまたは処理しないエラーをユーザーに警告してください。ユーザー定義エラーを生成するときには、エラーに関する簡単な説明をこのプロパティに割り当てます。Description プロパティを設定しない場合で、Number プロパティの値が Microsoft® Visual Basic® Scripting Edition (VBScript) の実行時エラーに対応している場合にエラーが発生すると、Error 関数の戻り値 (エラー メッセージ) が Description プロパティに設定されます。

On Error Resume Next
Err.Raise 6   ' オーバーフロー エラーを発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description)
Err.Clear   ' エラーのクリア。

必要条件

バージョン 1

参 照

Err オブジェクト | HelpContext プロパティ | HelpFile プロパティ | Number プロパティ | Source プロパティ

対象: Err オブジェクト


FirstIndex プロパティ

検索対象の文字列内で一致が見つかった場所を返します。

object.FirstIndex

引数 object には、Match オブジェクトを指定します。

解説

FirstIndex プロパティは、検索文字列の始めを基点の 0 とするオフセットを使用します。つまり、文字列の最初の文字が 0 として識別されます。次のコードは、FirstIndex プロパティの使用例です。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致 " & I & " が、"
RetStr = RetStr & Match.FirstIndex & " で見つかりました。一致した文字列は、"
RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 5

参 照

Length プロパティ | Value プロパティ

対象: Match オブジェクト


Global プロパティ (VBScript)

Visual Basic Scripting Edition

Global プロパティ

検索文字列全体についてのパターンとの一致を検索するか、最初の一致だけを検索するかを示すブール (Boolean) 値を設定します。

object.Global [= True | False ]

引数 object には、RegExp オブジェクトを指定します。Global プロパティの値は、文字列全体に検索が適用されると True、適用されないと False です。既定値は False です。

解説

次のコードは、Global プロパティの使用例です。Global プロパティに代入された値を変更し、結果を確認してください。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致する文字列が見つかった位置は、"
RetStr = RetStr & Match.FirstIndex & " です。一致した文字列は、"
RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 5

参 照

IgnoreCase プロパティ | Pattern プロパティ

対象: RegExp オブジェクト


HelpContext プロパティ

ヘルプ ファイルのトピックを表すコンテキスト番号を設定します。値の取得も可能です。

object.HelpContext [= contextID]

引数

object
必ず指定します。Err オブジェクトを指定します。
contextID
省略可能です。ヘルプ ファイル内の各トピックを識別するための重複しない値を指定します。

解説

HelpFile プロパティでヘルプ ファイルを指定すると、HelpContext プロパティが使われ、このプロパティが識別するヘルプ トピックが自動的に表示されます。HelpFile プロパティと HelpContext プロパティが空の場合、Number プロパティの値がチェックされます。その値が Microsoft® Visual Basic® Scripting Edition (以下 VBScript) の実行時エラーの値に対応しているときは、そのエラーを表す VBScript ヘルプのコンテキスト番号が使われます。Number プロパティの値が VBScript エラーに対応していないときは、VBScript ヘルプ ファイルの目次画面が表示されます。

次のコードは、HelpContext プロパティの使用例です。

On Error Resume Next
Dim Msg
Err.Clear
Err.Raise 6   ' オーバーフロー エラーを発生させます。
Err.Helpfile = "yourHelp.hlp"
Err.HelpContext = yourContextID
If Err.Number <> 0 Then
   Msg = "F1 キーを押すか [Help] をクリックして、" & Err.Helpfile & " ヘルプの" & _
   "コンテキスト番号 " & Err.HelpContext & " のトピックを参照してください。
   MsgBox Msg, , "エラー: " & Err.Description, Err.Helpfile, Err.HelpContext
End If

必要条件

バージョン 2

参 照

Description プロパティ | HelpFile プロパティ | Number プロパティ | Source プロパティ

対象: Err オブジェクト


HelpFile プロパティ

ヘルプ ファイルへのパスを設定します。値の取得も可能です。

object.HelpFile [= contextID]

引数

object
必ず指定します。Err オブジェクトを指定します。
contextID
省略可能です。ヘルプ ファイルへのパスを指定します。

解説

ヘルプ ファイルを HelpFile プロパティで指定すると、エラー メッセージが表示されるダイアログ ボックスの [ヘルプ] をクリックするか、または F1 キーを押したときにヘルプ ファイルが自動的に呼び出されます。HelpContext プロパティに指定したファイルの有効なコンテキスト番号が格納されている場合、そのトピックが自動的に表示されます。HelpFile プロパティを指定していない場合は、Microsoft® Visual Basic® Scripting Edition (VBScript) のヘルプ ファイルが表示されます。

On Error Resume Next
Dim Msg
Err.Clear
Err.Raise 6   ' オーバーフロー エラーを発生させます。
Err.Helpfile = "yourHelp.hlp"
Err.HelpContext = yourContextID
If Err.Number <> 0 Then
   Msg = "F1 キーを押すか [Help] をクリックして、" & Err.Helpfile & " ヘルプの" & _
   "コンテキスト番号 " & Err.HelpContext & " のトピックを参照してください。
   MsgBox Msg, , "エラー: " & Err.Description, Err.Helpfile, Err.HelpContext
End If

必要条件

バージョン 2

参 照

Description プロパティ | HelpContext プロパティ | Number プロパティ | Source プロパティ

対象: Err オブジェクト


IgnoreCase プロパティ

パターン検索で大文字と小文字を区別するかどうかを示すブール (Boolean) 値を設定します。

object.IgnoreCase [= True | False ]

引数 object には、RegExp オブジェクトを指定します。IgnoreCase プロパティの値は、検索するときに大文字と小文字を区別すると False、区別しないと True です。既定値は False です。

解説

次のコードは、IgnoreCase プロパティの使用例です。IgnoreCase プロパティに代入する値を変更して、結果を確認してください。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致する文字列が見つかった位置は、"
RetStr = RetStr & Match.FirstIndex & " です。一致した文字列は、"
RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 5

参 照

Global プロパティ | Pattern プロパティ

対象: RegExp オブジェクト


Length プロパティ

検索対象の文字列内で一致した文字列の長さを返します。

object.Length

引数 object には、Match オブジェクトを指定します。

解説

次のコードは、Length プロパティの使用例です。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致 " & I & " が、"
RetStr = RetStr & Match.FirstIndex & " で見つかりました。一致した文字列の長さは、"
RetStr = RetStr & Match.Length
RetStr = RetStr & " 文字です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 5

参 照

FirstIndex プロパティ | Value プロパティ

対象: Match オブジェクト


Number プロパティ (VBScript)

Visual Basic Scripting Edition

Number プロパティ

エラーを指定する数値を設定します。値の取得も可能です。Number プロパティは、Err オブジェクトの既定プロパティです。

object.Number [= errornumber]

引数

object
必ず指定します。Err オブジェクトを指定します。
errornumber
省略可能です。Microsoft® Visual Basic® Scripting Edition (VBScript) のエラー番号または SCODEのエラーの値を表す整数値を指定します。

解説

オートメーション オブジェクトからユーザー定義エラーを取得する場合は、エラーとして選択した数値を定数 vbObjectError に追加して Err オブジェクトの Number プロパティに設定します。

次のコードは、Number プロパティの使用例です。

On Error Resume Next
Err.Raise vbObjectError + 1, "SomeObject"    ' エラー番号 1 を発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description)
Err.Clear   ' エラーのクリア。

必要条件

バージョン 1

参 照

Description プロパティ | HelpContext プロパティ | HelpFile プロパティ | Err オブジェクト | Source プロパティ

対象: Err オブジェクト


Pattern プロパティ

検索される正規表現のパターンを設定します。値の取得も可能です。

object.Pattern [= "searchstring"]

引数

object
必ず指定します。RegExp オブジェクト変数を指定します。
searchstring
省略可能です。検索される文字列式を指定します。Settings セクションの表で定義された正規表現の文字をどれでも使用できます。

設定値

正規表現のパターンの記述には、特別な文字およびエスケープ シーケンスが使用されます。次の表は、正規表現で使用できる文字およびエスケープ シーケンスの一覧です。この表では、簡単な使用例も含めて説明します。

文字 | 内容
\ | 次に続く文字が特別な文字またはリテラルであることを示します。たとえば、"n" は "n" という文字と一致します。"\n"は、改行文字と一致します。"\\" は、"\" と一致します。"\(" は "(" と一致します。
^ | 入力の開始と一致します。
$ | 入力の終端と一致します。
* | 直前の文字と 0 回以上一致します。たとえば、"zo*" は "z" とも "zoo" とも一致します。
+ | 直前の文字と 1 回以上一致します。たとえば、"zo+" は "zoo" とは一致しますが、"z" とは一致しません。
? | 直前の文字と 0 回または 1 回一致します。たとえば、"a?ve?" は "never" の "ve" に一致します。
. | 改行文字以外の任意の単独文字と一致します。
(pattern) | 引数 pattern に指定した文字と一致します。一致する文字列が見つかったら、記憶されます。一致した部分は、Matches コレクションの項目 [0]...[n] から取得できます。かっこ文字、() を指定するには、"\(" および "\)" を使用します。
x|y | x と y のどちらかと一致します。たとえば、"z|wood" は "z" と "wood" に一致します。"(z|w)oo" は、"zoo" と "wood" に一致します。
{n} | n には、0 以上の整数を指定します。直前の文字と正確に n 回一致します。たとえば、"o{2}" は、"Bob" の "o" とは一致しませんが、"foooood" の最初の 2 つの o とは一致します。
{n,} | n には、0 以上の整数を指定します。直前の文字と少なくとも n 回一致します。たとえば、"o{2,}" は、"Bob" の "o" とは一致しませんが、"foooood" のすべての o と一致します。"o{1,}" は、"o+" と同じ意味になります。"o{0,}" は、"o*" と同じ意味になります。
{n,m} | m および n には、0 以上の整数を指定します。直前の文字と n ～ m 回一致します。たとえば、"o{1,3}" は、"fooooood" の最初の 3 つの o と一致します。"o{0,1}" は、"o?" と同じ意味になります。
[xyz] | 文字セット。角かっこで囲まれた文字の中のいずれかと一致します。たとえば、"[abc]" は "plain" の "a" と一致します。
[^xyz] | 否定の文字セット。角かっこで囲まれた文字にはない任意の文字と一致します。"[^abc]" は、"plain" の "p" と一致します。
[a-z] | 文字の範囲。指定した範囲に含まれる任意の文字に一致します。たとえば、"[a-z]" は、"a" から "z" までの任意のアルファベットの小文字に一致します。
[^m-z] | 否定の文字の範囲。指定した範囲に含まれていない任意の文字に一致します。たとえば、"[^m-z]" は "m" から "z" までの範囲に含まれない任意の文字に一致します。
\b | 単語の境界と一致します。単語の境界とは、単語とスペースの間の位置のことです。たとえば、"er\b" は、"never" の "er" に一致します。"verb" の "er" には一致しません。
\B | 単語の境界ではない部分と一致します。たとえば、"ea*r\B" は、"never early" の "ear" と一致します。
\d | 数字と一致します。[0-9] と指定した場合と同じ意味になります。
\D | 数字以外の文字と一致します。[^0-9] と指定した場合と同じ意味になります。
\f | フォームフィード文字と一致します。
\n | 改行文字と一致します。
\r | キャリッジ リターン文字と一致します。
\s | スペース、タブ、フォームフィードなどの任意の空白文字と一致します。"[ \f\n\r\t\v]" と指定した場合と同じ意味になります。
\S | 空白文字のない部分と一致します。"[^ \f\n\r\t\v]" と指定した場合と同じ意味になります。
\t | タブ文字と一致します。
\v | 垂直タブ文字と一致します。
\w | 単語に使用される任意の文字と一致します。これには、アンダースコアも含まれます。"[A-Za-z0-9_]" と指定した場合と同じ意味になります。
\W | 単語に使用される文字以外の任意の文字と一致します。"[^A-Za-z0-9_]" と指定した場合と同じ意味になります。
\num | >num には、正の整数を指定します。既に見つかり、記憶されている部分と一致します。たとえば、"(.)\1" は、連続する 2 つの同じ文字に一致します。
\n | n に指定した 8 進数のエスケープ値と一致します。8 進数の値には、1 桁、2 桁、または 3 桁で指定します。たとえば、"\11" と "\011" は、両方ともタブ文字に一致します。"\0011" は、"\001" および "1" と同じ意味になります。8 進数のエスケープ値は、256 を超えることはできません。256 を超える数値を指定した場合、初めの 2 桁で値が評価されます。この表記により、正規表現で ASCII コードを使用できるようになります。
\xn | n に指定した 16 進数のエスケープ値と一致します。16 進数のエスケープ値は、2 桁である必要があります。たとえば、"\x41" は、"A" に一致します。"\x041" は、"\x04" および "1"と同じ意味になります。この表記により、正規表現で ASCII コードを使用できるようになります。

解説

次のコードは、Pattern プロパティの使用例です。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致する文字列が見つかった位置は、"
RetStr = RetStr & Match.FirstIndex & " です。一致した文字列は、"
RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 2

参 照

Global プロパティ | IgnoreCase プロパティ

対象: RegExp オブジェクト


Source プロパティ (VBScript)

Visual Basic Scripting Edition

Source プロパティ

最初にエラーを発生させたオブジェクトまたはアプリケーションの名前を設定します。値の取得も可能です。

object.Source [= stringexpression]

引数

object
必ず指定します。Err オブジェクトを指定します。
stringexpression
省略可能です。エラーを発生させたアプリケーションを表す文字列式を指定します。

解説

通常、Source プロパティは、エラーを発生させたオブジェクトのクラス名またはプログラム ID を指定します。操作したオブジェクトで発生したエラーを処理できないときには、Source プロパティを使ってユーザーに情報を提供してください。たとえば、Microsoft® Excel (以下 Excel) にアクセスしたときに " 0 で除算しました。" エラーが発生すると、エラーを発生させたオブジェクト Excel によって、Err オブジェクトの Number プロパティにそのエラーを表すエラー番号が設定されます。また、Source プロパティには Excel の Application オブジェクトが設定されます。Excel によって呼び出された別のオブジェクト内でエラーが発生すると、Excel はそのエラーに対して割り込みをかけ、Err オブジェクトの Number プロパティに " 0 で除算しました。" を表すエラー番号を設定するので注意してください。ただし、ほかの Err オブジェクトのプロパティ (Source プロパティを含む) は、エラーを発生させたオブジェクトによって設定されたままの状態になります。

Source プロパティには、常にエラーを最初に発生させたオブジェクトの名前が設定されます。このようなエラーに対しては、エラーを発生させたオブジェクトのマニュアルを参照してエラー処理ルーチンを作成してください。エラー処理ルーチンで対応できないときには、Err オブジェクトの情報を利用してユーザーにエラーを知らせるようにします。Source プロパティなどの Err オブジェクトのプロパティを使って、エラーを最初に引き起こしたオブジェクトや、エラーの説明などをユーザーに知らせることができます。

コードを使ってエラーを生成する場合、Source プロパティにはアプリケーションのプログラム ID が設定されます。

次のコードは、Source プロパティの使用例です。

On Error Resume Next
Err.Raise 6   ' オーバーフロー エラーを発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description & Err.Source)
Err.Clear   ' エラーのクリア。

必要条件

バージョン 1

参 照

Description プロパティ | Err オブジェクト | HelpContext プロパティ | HelpFile プロパティ | Number プロパティ | On Error ステートメント

対象: Err オブジェクト


Value プロパティ

検索対象の文字列内で一致した値またはテキストを返します。

object.Value

引数 object には、Match オブジェクトを指定します。

解説

次のコードは、Value プロパティの使用例です。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' 変数を作成します。
   Set regEx = New RegExp   ' 正規表現を作成します。
   regEx.Pattern = patrn   ' パターンを設定します。
   regEx.IgnoreCase = True   ' 大文字と小文字を区別しないように設定します。
   regEx.Global = True   ' 文字列全体を検索するように設定します。
   Set Matches = regEx.Execute(strng)   ' 検索を実行します。
   For Each Match in Matches   ' Matches コレクションに対して繰り返し処理を行います。
RetStr = RetStr & "一致 " & I & " が、"
RetStr = RetStr & Match.FirstIndex & " で見つかりました。一致した文字列は、"
RetStr = RetStr & Match.Value & " です。" & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

必要条件

バージョン 1

参 照

FirstIndex プロパティ | Length プロパティ

対象: Match オブジェクト


VBScript のステートメント

内容 | 言語要素
Sub プロシージャおよび Function プロシージャに制御を渡すフロー制御ステートメントです。 | Call ステートメント
クラスの名前を宣言します。 | Class ステートメント
リテラル値の代わりに使用する定数を宣言します。 | Const ステートメント
変数を宣言してメモリ領域を割り当てます。 | Dim ステートメント
指定された条件が真 (True) である間、または条件が真 (True) になるまで、一連のステートメントを繰り返し実行するフロー制御ステートメントです。 | Do...Loop ステートメント
静的配列の要素を再初期化したり、動的配列に割り当てたメモリを解放します。 | Erase ステートメント
指定された 1 つ以上のステートメントを実行します。 | Execute ステートメント
スクリプトのグローバル名前空間で指定された 1 つ以上のステートメントを実行します。 | ExecuteGlobal ステートメント
Do...Loop ループ、For...Next ループ、Function プロシージャまたは Sub プロシージャから抜け出すためのフロー制御ステートメントです。 | Exit ステートメント
指定された回数だけ、一連のステートメントを繰り返すフロー制御ステートメントです。 | For...Next ステートメント
配列やコレクションの各要素に対して、一連のステートメントを繰り返し実行するフロー制御ステートメントです。 | For Each...Next ステートメント
Function プロシージャの名前、引数を宣言し、Function プロシージャの始まりを示します。 | Function ステートメント
式の値に基づいて、条件付きの実行を行うフロー制御ステートメントです。 | If...Then...Else ステートメント
エラー処理を有効にします。 | On Error ステートメント
スクリプト内のすべての変数に対して、明示的な宣言を強制します。 | Option Explicit ステートメント
プライベート変数を宣言して、格納領域を割り当てます。 | Private ステートメント
プロパティの値を取得する Property プロシージャを構成する名前、引数、およびコードを宣言します。 | Property Get ステートメント
プロパティの値を代入する Property プロシージャを構成する名前、引数、およびコードを宣言します。 | Property Let ステートメント
オブジェクトへの参照を設定する Property プロシージャを構成する名前、引数、コードを宣言します。 | Property Set ステートメント
パブリック変数を宣言して、格納領域を割り当てます。 | Public ステートメント
乱数ジェネレータを初期化 (乱数系列を再設定) します。 | Randomize ステートメント
動的配列変数を宣言し、そのメモリ領域の割り当てや再割り当てを行います。 | ReDim ステートメント
プログラム内にコメントを記述するときに指定します。 | Rem ステートメント
条件式の値に従って、複数のステートメント ブロックのいずれかを実行させるフロー制御ステートメントです。 | Select Case ステートメント
オブジェクトへの参照を変数またはプロパティに代入します。 | Set ステートメント
Sub プロシージャの名前、引数を宣言し、Sub プロシージャの始まりを示します。 | Sub ステートメント
指定された条件が真 (True) である間、一連のステートメントの実行を繰り返すフロー制御ステートメントです。 | While...Wend ステートメント
1 つのオブジェクトに対して一連のステートメントを実行します。 | With ステートメント

参 照

VBScript ランゲージ リファレンス


Call ステートメント

Sub プロシージャおよび Function プロシージャに制御を渡すフロー制御ステートメントです。

[Call] name [argumentlist]

引数

Call
省略可能なキーワードです。指定する場合は、次に示すように引数リスト (argumentlist) をかっこで囲む必要があります。次にコード例を示します。

Call MyProc(0)

name
必ず指定します。呼び出すプロシージャの名前を指定します。
argumentlist
省略可能です。プロシージャに引き渡す変数リスト、配列、または式のいずれかを指定します。複数指定するときは、カンマ (,) で区切ります。

解説

プロシージャを呼び出すとき、キーワード Call は省略できます。キーワード Call を使って引数を必要とするプロシージャを呼び出す場合は、引数リスト argumentlist をかっこで囲む必要があります。キーワード Call を省略するときは、引数リスト argumentlist を囲むかっこも省略する必要があります。Call ステートメントの構文で組み込み関数またはユーザー定義型関数を呼び出す場合、その関数の戻り値を取得することはできません。

Call MyFunction("Hello World")
Function MyFunction(text)
   MsgBox text
End Function

必要条件

バージョン 1


Class ステートメント

クラスの名前のほか、クラスを構成する変数、プロパティ、メソッドの定義を宣言します。

Class name
   statements
End Class

引数

name
必ず指定します。Class の名前を指定します。変数の標準的な名前付け規則に従って付けてください。
statements
必ず指定します。Class の変数、プロパティ、およびメソッドを定義するステートメントを指定します。

解説

Class ブロックでは、メンバは該当する宣言ステートメントを使って Private または Public として宣言されます。Private として宣言されたメンバは、Class ブロックの内部でのみ参照可能です。Public として宣言されたメンバは、Class ブロックの内部だけでなく、外部のコードからも参照できます。Private と Public のどちらとしても明示的に宣言されていないメンバは、既定では Public として扱われます。クラス ブロックの内部で Public として宣言されたプロシージャ (Sub または Function) は、そのクラスのメソッドになります。Property Get、Property Let、および Property Set を使って明示的に宣言されたプロパティと同様、Public 変数はクラスのプロパティとして機能します。クラスのプロパティとメソッドは、Default キーワードを使ってそれぞれの宣言内で指定します。このキーワードの使い方については、個別の宣言ステートメントのトピックを参照してください。

必要条件

バージョン 5

参 照

Dim ステートメント | Function ステートメント | Private ステートメント | Property Get ステートメント | Property Let ステートメント | Property Set ステートメント | Public ステートメント | Set ステートメント | Sub ステートメント


Const ステートメント

リテラル値の代わりに使用する定数を宣言します。

[Public | Private] Const constname = expression

引数

Public
省略可能です。すべてのスクリプト内のすべてのプロシージャから参照できる定数を宣言するときに指定するキーワードです。スクリプト レベルで使用します。プロシージャ内では指定できません。
Private
省略可能です。宣言が行われたスクリプト内のプロシージャからのみ参照できる定数を宣言するときに指定するキーワードです。スクリプト レベルで使用します。プロシージャ内では指定できません。
constname
必ず指定します。定義する定数の名前を指定します。変数の標準的な名前付け規則に従って指定します。
expression
必ず指定します。リテラル値、その他の定数、算術演算子や論理演算子 (Is を除く) を組み合わせた式を指定します。

解説

既定では、定数はパブリック (Pubric) 定数として扱われます。プロシージャ内では、定数は常にプライベート (Private) 定数として扱われ、適用範囲 (スコープ) を変更することはできません。スクリプトでは、スクリプト レベル定数の既定の適用範囲をキーワード Private で変更することができます。

定数定義をカンマ (,) で区切ることにより、複数の定数を 1 行で定義できます。このように複数の定数定義を 1 行で定義した場合、キーワード Public やキーワード Private を指定すると、すべての定数定義に対して、指定されたキーワードが適用されます。

定数に代入する式の中に、変数、ユーザー定義関数、VBScript の組み込み関数 (Chr 関数など) を含めることはできません。定義によっては、定数とすることができません。また、演算子を含む式から定数を作成することはできません。Sub プロシージャ、Function プロシージャ内で宣言した定数は、そのプロシージャ内でのみ参照できます。プロシージャの外で宣言された定数は、宣言されたスクリプト内であれば、どこからでも参照できます。定数は、式が記述できる位置であれば、どこでも使えます。次のコードは、Const ステートメントの使用例です。

Const MyVar = 459   ' 既定により、バブリック定数。
Private Const MyString = "HELP"   ' プライベート定数として宣言。
Const MyStr = "Hello", MyNumber = 3.4567   ' 同じ行に複数の定数を宣言。
メモ 定数を使うと、スクリプトがわかりやすく、修正も容易になります。定数は変数とは異なり、スクリプトの実行中に値を変更することはできません。

必要条件

バージョン 5

参 照

Dim ステートメント | Function ステートメント | Private ステートメント | Public ステートメント | Sub ステートメント


Dim ステートメント

変数を宣言してメモリ領域を割り当てます。

Dim varname[([subscripts])][, varname[([subscripts])]] . . .

引数

varname
宣言する変数の名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。
subscripts
配列変数の次元を指定します。指定できる次元数の最大値は 60 です。subscripts の構文は次のとおりです。

upperbound [,upperbound] . . . . .

配列のインデックス番号の最小値は、常に 0 になります。

解説

Dim ステートメントを使ってスクリプト レベルで宣言した変数は、宣言したスクリプト内のすべてのプロシージャから参照できます。プロシージャ レベルで宣言した変数は、宣言したプロシージャ内でのみ参照できます。

Dim ステートメントを空のかっこと組み合わせて使うと、動的配列を宣言することができます。宣言した動的配列の次元と要素の数をプロシージャ内で定義するには、ReDim ステートメントを使います。ただし、Dim ステートメントで明示的にサイズを指定した配列変数の次元を再び宣言しようとすると、エラーが発生します。

メモ プロシージャ内に Dim ステートメントを記述する場合は、プロシージャの先頭に記述した方がコードが読みやすくなります。

次のコードは、Dim ステートメントの使用例です。

Dim Names(9)       ' 10 個の要素を持つ配列を宣言します。
Dim Names()        ' 動的配列を宣言します。
Dim MyVar, MyNum   ' 2 個の変数を宣言します。

必要条件

バージョン 1

参 照

Private ステートメント | Public ステートメント | ReDim ステートメント | Set ステートメント


Do...Loop ステートメント

指定された条件が真 (True) である間、または条件が真 (True) になるまで、一連のステートメントを繰り返し実行するフロー制御ステートメントです。

Do [{While | Until} condition]
   [statements]
   [Exit Do]
   [statements]
Loop

または、次の構文を使用できます。

Do
   [statements]
   [Exit Do]
   [statements]
Loop [{While | Until} condition]

引数

condition
真 (True) または偽 (False) を評価する数式または文字列式を指定します。condition の値が Null 値の場合、condition は偽 (False) が使われます。
statements
condition が真 (True) である間、または真 (True) になるまで繰り返し実行される任意の行数のステートメントを記述します。

解説

Exit Do ステートメントは、制御構造 Do...Loop 内でだけ使用され、condition で指定した以外の条件で Do...Loop ステートメントを終了させることができます。Exit Do ステートメントは、Do...Loop ステートメント内の任意の場所で何回でも使用できます。Exit Do ステートメントは条件の評価 (たとえば If...Then ステートメントなど) と共に使用されることが多く、Loop ステートメントの直後のステートメントに制御を渡します。

Do...Loop ステートメントは、ネスト (入れ子) 構造にすることができます。つまり、Do...Loop ステートメントの内部に別の Do...Loop ステートメントを含めることができます。ネスト (入れ子) 構造にしている場合に Exit Do ステートメントが実行されると、その Exit Do ステートメントを囲んでいる 1 番内側のループから抜け出します。

次のコードは、Do...Loop ステートメントの使用例です。

Do Until DefResp = vbNo
   MyNum = Int (6 * Rnd + 1)   ' 1 ～ 6 の整数をランダムに生成します。
   DefResp = MsgBox (MyNum & " 他の番号を生成しますか ?", vbYesNo)
Loop

Dim Check, Counter
Check = True:Counter = 0   ' 変数を初期化します。
Do                            ' 外側のループ。
   Do While Counter < 20      ' 内側のループ
      Counter = Counter + 1   ' カウンタの数を増やします。
      If Counter = 10 Then    ' 条件が真 (True) の場合...
         Check = False        ' フラグの値を偽 (False) に設定します。
         Exit Do              ' 内側のループから抜け出します。
      End If
   Loop
Loop Until Check = False      ' 直ちに外側のループから抜け出します。

必要条件

バージョン 1

参 照

Exit ステートメント | For...Next ステートメント | While...Wend ステートメント


Erase ステートメント

静的配列の要素を再初期化したり、動的配列に割り当てたメモリを解放します。

Erase array

array には削除する配列変数の名前を指定します。

解説

ステートメントの動作は配列の種類によって異なるので、実行する前に配列が静的配列 (通常の配列) または動的配列のいずれかを確認しておく必要があります。静的配列の場合、Erase ステートメントはメモリを解放しません。静的配列の要素は、配列の種類に応じて次のように設定されます。

配列の種類 | Erase ステートメントの実行結果
静的数値配列 | 要素はすべて 0 に設定されます。
静的文字列配列 | 要素はすべて長さ 0 の文字列 ("") に設定されます。
オブジェクト配列 | 要素はすべて特別な値 Nothingに設定されます。

Erase ステートメントは動的配列が使っていたメモリを解放します。この配列を再度参照するには、ReDim ステートメントを使って再びこの配列変数の次元を宣言する必要があります。

次のコードは、Erase ステートメントの使用例です。

Dim NumArray(9)
Dim DynamicArray()
ReDim DynamicArray(9)   ' メモリを割り当てます。
Erase NumArray   ' 各要素を再初期化します。
Erase DynamicArray   ' 配列が使っていたメモリを解放します。

必要条件

バージョン 1

参 照

Dim ステートメント | Nothing キーワード | ReDim ステートメント


Execute ステートメント

指定された 1 つ以上のステートメントを実行します。

Execute statement

引数 statement は、必ず指定します。statement には、実行するためのステートメントが 1 つ以上含まれた文字列式を指定します。statement に複数のステートメントを指定する場合は、コロンまたは埋め込み改行で区切ります。

解説

VBScript では、x = y の解釈が 2 とおりあります。1 つ目は代入ステートメントとして解釈され、y の値が x に代入されます。2 つ目は x と y の値が等しいかどうかをテストする式として解釈されます。等しい場合、result は True です。それ以外の場合、result は False です。Execute ステートメントは常に 1 つ目の解釈を適用し、Eval メソッドは常に 2 つ目の解釈を適用します。

メモ Microsoft® JScript™ では、代入と比較を混同することはありません。代入演算子 (=) は比較演算子 (==)と異なるからです。

Execute ステートメントが呼び出されるときのコンテキストによって、実行中のコードで使用できるオブジェクトと変数が決まります。Execute ステートメントで実行されるコードの中では、スコープ内のオブジェクトと変数を使用できます。ただし、プロシージャを作成するコードを実行する場合、作成されたプロシージャは、作成元のプロシージャのスコープを継承しないことに注意してください。

新しいプロシージャのスコープは、他のプロシージャと同様にグローバルであり、グローバル スコープに含まれるすべてを継承します。一方コンテキストは、他のプロシージャとは異なりグローバルでないので、Execute ステートメントを実行したプロシージャのコンテキストでしか実行できません。ただし、プロシージャの外部 (グローバル スコープの内部) で呼び出された場合、Execute ステートメントはグローバル スコープに含まれるすべてを継承し、コンテキストがグローバルなので、どこからでも呼び出せます。次のコードは、この機能の使用例です。

Dim X   ' グローバル スコープで X を宣言します。
X = "Global"   ' グローバルな X に値を代入します。
Sub Proc1   ' プロシージャを宣言します。
   Dim X   ' ローカル スコープで X を宣言します。
   X = "Local"    ' ローカルな X に値を代入します。
            ' 呼び出されると X を出力するプロシージャを、
            ' Execute ステートメントで作成します。
            ' グローバル スコープに含まれるすべてを Proc2 が
            ' 継承するため、グローバルな X が出力されます。
   Execute "Sub Proc2: Print X: End Sub"
   Print Eval("X")   ' ローカルな X を出力します。
   Proc2   ' Proc1 のスコープで Proc2 を呼び出します。
End Sub
Proc2   ' Proc1 の外部で Proc2 を使用できないため、
        ' この行でエラーが発生します。
Proc1   ' Proc1 を呼び出します。
   Execute "Sub Proc2: Print X: End Sub"
Proc2   ' Proc2 をグローバルに使用できるように
        ' なったので、この呼び出しは成功します。

次のコードは、プロシージャ全体をダブル クォーテーションで囲まなくて済むように Execute ステートメントを書き換えた例です。

S = "Sub Proc2" & vbCrLf
S = S & "   Print X" & vbCrLf
S = S & "End Sub"
Execute S

必要条件

バージョン 1

参 照

Eval 関数 | ExecuteGlobal ステートメント


ExecuteGlobal ステートメント

スクリプトのグローバル名前空間で指定された 1 つ以上のステートメントを実行します。

ExecuteGlobal statement

statement には、実行するためのステートメントが 1 つ以上含まれた文字列式を指定します。statement に複数のステートメントを指定する場合は、コロンまたは埋め込み改行で区切ります。

解説

VBScript では、x = y の解釈が 2 とおりあります。1 つ目は代入ステートメントとして解釈され、y の値が x に代入されます。2 つ目は x と y の値が等しいかどうかをテストする式として解釈されます。等しい場合、result は True です。それ以外の場合、result は False です。ExecuteGlobal ステートメントは常に 1 つ目の解釈を適用し、Eval メソッドは常に 2 つ目の解釈を適用します。

メモ Microsoft® JScript™ では、代入と比較を混同することはありません。代入演算子 (=) は比較演算子 (==)と異なるからです。

ExecuteGlobal で指定されたすべてのステートメントは、スクリプトのグローバル名前空間で実行されます。この処理により、プログラムにコードを追加し、任意のプロシージャからアクセスできるようになります。たとえば、VBScript の Class ステートメントをランタイムで実行し、関数でクラスの新しいインスタンスを作成できます。

ランタイムでプロシージャおよびクラスを追加する方法は便利ですが、その際、既存のグローバル変数および関数が上書きされる可能性もあります。これによりプログラムに重大な問題が発生する場合があるため、ExecuteGlobal ステートメントは十分に理解してから使用してください。プロシージャにない変数または関数にアクセスする必要がない場合は、呼び出し関数の名前空間の処理のみを行う Execute ステートメントを使用してください。

次のコードは、ExecuteGlobal ステートメントの使用例です。

Dim X         ' グローバル スコープで X を宣言します。
X = "Global"      ' グローバルな X に値を代入します。
Sub Proc1   ' プロシージャを宣言します。
Dim X      ' ローカル スコープで X を宣言します。
X = "Local"   ' ローカルな X に値を代入します。
         ' 呼び出されると X を出力するプロシージャを、
         ' Execute ステートメントで作成します。
         ' グローバル スコープに含まれるすべてを Proc2 が
         ' 継承するため、グローバルな X が出力されます。
  ExecuteGlobal "Sub Proc2: Print X: End Sub"
Print Eval("X")   ' ローカルな X を出力します。
Proc2      ' グローバル スコープで Proc2 を呼び出すと、
         ' "Global" が印刷されます。
End Sub
Proc2         ' Proc1 の外部で Proc2 を使用できないため、
         ' この行でエラーが発生します。
Proc1         ' Proc1 を呼び出します。
  Execute "Sub Proc2: Print X: End Sub"
Proc2         ' Proc2 をグローバルに使用できるように
         ' なったので、この呼び出しは成功します。

次のコードは、プロシージャ全体をダブル クォーテーションで囲まなくて済むように ExecuteGlobal ステートメントを書き換えた例です。

S = "Sub Proc2" & vbCrLf
S = S & "  Print X" & vbCrLf
S = S & "End Sub"
ExecuteGlobal S

必要条件

バージョン 1


Exit ステートメント

Do...Loop ループ、For...Next ループ、Function プロシージャまたは Sub プロシージャから抜け出すためのフロー制御ステートメントです。

Exit Do
Exit For
Exit Function
Exit Property
Exit Sub

各 Exit ステートメントは次のとおりです。

ステートメント | 内容
Exit Do | Do...Loop ループを抜け出し、Loop ステートメントの次のステートメントに制御を移します。Do...Loop ステートメントの中でのみ使用できます。Do...Loop ステートメントがネスト (入れ子) 構造になっている場合は、Exit Do のあるループの 1 つ外側のループに制御を移します。
Exit For | For ループを抜け出します。For Each...Next ループまたは For...Next ループの中でのみ使用できます。For Each...Next ループまたは For...Next ループがネスト (入れ子) 構造になっている場合は、Exit For ステートメントが含まれているループの 1 つ外側のループに制御を移します。
Exit 関数 | このステートメントのある Function プロシージャを直ちに抜け出ます。制御は Function プロシージャを呼び出したステートメントの次のステートメントに移ります。
Exit Property | このステートメントのある Property プロシージャを直ちに抜け出ます。制御は Property プロシージャを呼び出したステートメントの次のステートメントに移ります。
Exit Sub ステートメント | このステートメントのある Sub プロシージャを直ちに抜け出ます。制御は Sub プロシージャを呼び出したステートメントの次のステートメントに移ります。

次のコードは、Exit ステートメントの使用例です。

Sub RandomLoop
   Dim I, MyNum
   Do   ' 無限のループを設定します。
      For I = 1 To 1000   ' ループを 1000 回繰り返します。
         MyNum = Int(Rnd * 100)   ' ランダムな数字を生成します。
         Select Case MyNum   ' ランダムな数値を求めます。
            Case 17: MsgBox "Case 17"
               Exit For   ' 17 の場合、For...Next を抜け出ます。
            Case 29: MsgBox "Case 29"
               Exit Do   ' 29 の場合、Do...Loop を抜け出ます。
            Case 54: MsgBox "Case 54"
               Exit Sub   ' 54 の場合、Sub プロシージャを抜け出ます。
            End Select
      Next
   Loop
End Sub

必要条件

バージョン 1

参 照

Do...Loop ステートメント | For Each...Next ステートメント | For...Next ステートメント | Function ステートメント | Sub ステートメント


For Each...Next ステートメント

配列やコレクションの各要素に対して、一連のステートメントを繰り返し実行するフロー制御ステートメントです。

For Each element In group
   [statements]
   [Exit For]
   [statements]
Next [element]

引数

element
コレクションや配列の各要素を繰り返す変数を指定します。コレクションの場合、element にはバリアント型 (Variant) 変数、総称オブジェクト型変数、または固有オブジェクト型のオートメーション オブジェクトの変数を指定できます。また、配列の場合は、element にはバリアント型のみ指定できます。
group
オブジェクト コレクションまたは配列の名前を指定します。
statements
group の各メンバに対して実行するステートメントを指定します。

解説

group に要素が 1 つでも存在する場合、For Each ブロックが始まります。ループがいったん開始されると、group の最初の要素に対してループ内のすべてのステートメントが実行されます。group の中に要素がある限り、ループ内のステートメントは各要素に対して実行を続けます。group の中に要素がなくなったとき、ループを終了し、Next ステートメントの次のステートメントに実行が移ります。

Exit For ステートメントは、制御構造 For Each...Next ループまたは For...Next ループ内でのみ使用できるステートメントで、ループから抜け出すためのフロー制御ステートメントです。Exit For ステートメントは、For Each...Next ループまたは For...Next ループ内の任意の位置で何回でも使用できます。Exit For ステートメントは、条件の評価 (たとえば If...Then ステートメント) と共に使用されることが多く、Next の直後のステートメントに制御を渡します。

For Each...Next ループは、ネスト (入れ子) 構造にすることができます。つまり、For Each...Next ループの内部に別の For Each...Next ループを入れることができます。ループをネスト (入れ子) 構造にするときは、それぞれの element に別の変数名を指定してください。

メモ Next ステートメントの element を省略すると、element が指定されている場合と同様に実行を継続します。Next ステートメントを対応する For ステートメントよりも前に記述すると、エラーが発生します。

次のコードは、For Each...Next ステートメントの使用例です。

Function ShowFolderList(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   For Each f1 in fc
      s = s & f1.name
      s = s & "<BR>"
   Next
   ShowFolderList = s
End Function

必要条件

バージョン 2

参 照

Do...Loop ステートメント | Exit ステートメント | For...Next ステートメント | While...Wend ステートメント


For...Next ステートメント

指定された回数だけ、一連のステートメントを繰り返すフロー制御ステートメントです。

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next

引数

counter
ループ カウンタに使う数値変数を指定します。この変数には、配列やユーザー定義型の要素は指定できません。
start
counter の初期値を指定します。
end
counter の最終値を指定します。
step
ループを繰り返すごとに counter に加算される値を指定します。step を省略すると、ループを繰り返すごとに counter に 1 が加算されます。
statements
ループ内で実行される一連のステートメントを指定します。For と Next の間にこれらのステートメントを記述します。ここに記述したステートメントは、For...Next で指定した回数だけ実行されます。

解説

step には正の数または負の数を指定できます。step で指定した値によりループの実行は次のように制御されます。

値 | 実行条件
正の数または 0 | counter <= end
負の数 | counter >= end

プログラムの実行がループに移り、ループ内の一連のステートメントがすべて実行されると、step の値が counter に加算されます。この時点で終了条件が満たされていない場合は、ループ内のステートメントが再び実行されます。終了条件が満たされている場合は、ループから抜け出して Next ステートメントの次のステートメントに制御が移ります。

メモ ループ内で counter の値を変えると、プログラムの処理内容の理解やデバッグが困難になるため注意してください。

Exit For ステートメントは、制御構造 For Each...Next または For...Next ループ内でのみ使用できます。Exit For ステートメントを使用すると、指定した回数以外の条件で For...Next ループを終了させることができます。Exit For ステートメントは、For Each...Next ループまたは For...Next ループ内の任意の位置で何回でも使用できます。Exit For ステートメントは、条件の評価 (たとえば If...Then ステートメントなど) と共に使用されることが多く、Next の直後のステートメントに制御を渡します。

For...Next ループはネスト (入れ子) 構造にすることができます。つまり、For...Next ループの内部に別の For...Next ループを入れることができます。ループをネスト (入れ子) させる場合は、それぞれの counter に別の変数名を指定してください。正しいステートメントの例を次に示します。

For I = 1 To 10
      For J = 1 To 10
            For K = 1 To 10
            . . .
            Next
      Next
Next

必要条件

バージョン 1

参 照

Do...Loop ステートメント | Exit ステートメント | For Each...Next ステートメント | While...Wend ステートメント


Function ステートメント

Function プロシージャの名前、引数を宣言し、Function プロシージャの始まりを示します。

[Public [Default] | Private] Function name [(arglist)]
   [statements]
   [name = expression]
   [Exit Function]
   [statements]
   [name = expression]
End Function

引数

Public
すべてのスクリプトのすべてのプロシージャから参照できる Function プロシージャを宣言するときに指定します。
Default
Class のキーワード Public と共にのみ使用し、Function プロシージャをクラスの既定のメソッドに指定します。1 つのクラスで複数の Default プロシージャを指定するとエラーとなります。
Private
Function プロシージャを記述したスクリプト内のプロシージャ内からのみ参照できるプロシージャを宣言するときに指定します。関数がクラスのメンバの場合、その Function プロシージャは、そのクラスの中の他のプロシージャからのみ参照が可能になります。
name
定義する Function プロシージャの名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。
arglist
Function プロシージャを呼び出すときに、Function プロシージャに渡す引数を表す変数のリストを指定します。複数の変数を指定するときは、カンマ (,) で区切ります。
statements
Function プロシージャ内で実行される一連のステートメントを指定します。
expression
関数の戻り値を指定します。

arglist の構文と指定項目は次のとおりです。

[ByVal | ByRef] varname[( )]

引数

ByVal
その引数が、値渡しで渡されることを示します。
ByRef
その引数が、参照渡しで渡されることを示します。
varname
引数として渡す変数名を指定します。変数の標準的な名前付け規則に従って名前を付けます。

解説

キーワード Publicまたはキーワード Privateを指定しない場合、Function プロシージャは既定のパブリック プロシージャとなり、スクリプト内の他のすべてのプロシージャから参照できます。Function プロシージャ内のローカル変数の値は、プロシージャの実行が終了すると破棄されます。

Function プロシージャを Sub プロシージャや Property Get プロシージャなど、他のプロシージャの中で定義することはできません。

Exit Function ステートメントは、Function プロシージャを直ちに終了します。プログラムの実行は、その Function プロシージャを呼び出したステートメントの次のステートメントから継続されます。Exit Function ステートメントは、Function プロシージャ内の任意の位置で何回でも指定できます。

Function プロシージャと Sub プロシージャには、似た点と異なる点があります。引数を受け取って一連のステートメントを実行し、引数の値を変える点は似ています。しかし、Function プロシージャは Sub プロシージャと異なり、Sqr 関数、Cos 関数、Chr 関数などの組み込みの関数のように式の右辺に記述することで、戻り値を使用することができます。

Function プロシージャを式の中から呼び出すには、引数リストをかっこで囲んで指定します。Function プロシージャの呼び出し方法については、Call ステートメントを参照してください。

注意 Function プロシージャは、再帰的にプロシージャ自体を呼び出すことができます。ただし、再帰呼び出しを行うと、スタックがオーバーフローする可能性があります。

Function プロシージャから値を返すには、値を Function プロシージャ名 name に代入してください。name への代入は、Function プロシージャ内の任意の場所で必要に応じて何回でも行うことができます。name に値を代入しない場合は、既定の戻り値が返されます。既定の戻り値は、Function プロシージャが数値型の場合は 0、文字列型の場合は長さ 0 の文字列 ("") です。Set ステートメントを使っている Function プロシージャ内で、name にオブジェクトへの参照を代入しない場合、オブジェクトへの参照を返す Function プロシージャには、Nothingが返されます。

次のコードは、Function プロシージャ名 BinarySearch に戻り値を代入する例です。このコード例では、値が見つからなかったことを示すため、Function プロシージャ名に False を代入しています。

Function BinarySearch(. . .)
      . . .
      ' 値が見つかりません。値として False を返します。
      If lower > upper Then
            BinarySearch = False
            Exit Function
      End If
      . . .
End Function

Function プロシージャで使用する変数には、Function プロシージャ内で明示的に宣言される変数と、それ以外の変数の 2 種類があります。プロシージャ内で Dim ステートメントなどを使って明示的に宣言された変数は、そのプロシージャの中だけで有効なローカル変数になります。プロシージャ内で明示的に宣言せずに使われている変数も、そのプロシージャの外部のさらに上のレベルで明示的に宣言されていない限りは、ローカル変数となります。

注意 プロシージャ内で明示的に宣言されていない変数をプロシージャ内で使うことはできますが、その変数と同じ名前の変数などがスクリプト レベルで定義されている場合、名前の競合が発生します。あるプロシージャが、他のプロシージャ、定数または変数と同じ名前を持つ未宣言の変数を参照した場合、そのプロシージャはスクリプト レベルの名前を参照しているものと見なされます。このような名前の競合を避けるために、Option Explicit ステートメントを使い、変数を明示的に宣言してください。
注意 Microsoft Visual Basic Scripting Edition (VBScript) では、演算効率を高めるために数式が自動的に並べ替えられることがあります。このため、変数の値を変えてしまうような Function プロシージャを数式の中で実行しないようにしてください。

必要条件

バージョン 1

参 照

Call ステートメント | Dim ステートメント | Exit ステートメント | Nothing キーワード | Set ステートメント | Sub ステートメント


If...Then...Else ステートメント

式の値に基づいて、条件付きの実行を行うフロー制御ステートメントです。

If condition Then statements [Else elsestatements ]

または、次に示すブロック形式の構文を使用することもできます。

If condition Then
   [statements]
[ElseIf condition-n Then
   [elseifstatements]] . . .
[Else
   [elsestatements]]
End If

引数

condition
次の 2 種類の式のいずれかを指定します。

真 (True) か偽 (False) を評価する数式または文字列式。condition の値が Null 値の場合、condition は偽 (False) が使われます。

TypeOf objectname Is objecttype 形式の式。objectname は任意のオブジェクトの参照であり、objecttype は任意の有効なオブジェクト型です。この式は、objectname が objecttype で指定されたオブジェクト型であれば真 (True) を返し、それ以外の場合には偽 (False) を返します。

statements
condition が真 (True) の場合、実行されます。コロン (:) で区切られた一連のステートメントを指定します。
condition-n
condition に同じ。
elseifstatements
condition-n が真 (True) の場合に実行される一連のステートメントを指定します。
elsestatements
Else 以前に定義されている条件 (condition または condition-n) がどれも真 (True) でない場合に実行される一連のステートメントを指定します。

解説

1 行の If...Then...Else ステートメント (第 1 の構文) は、短く簡単な条件判断を行うときに使用します。ブロック形式の If...Then...Else ステートメント (第 2 の構文) は、1 行の構文に比べ、より構造化された柔軟な記述ができます。また、コードの読みやすさや保守性が向上し、デバッグもしやすくなります。

メモ 第 1 の構文でも 1 つの条件に対して、複数のステートメントを記述することができますが、その場合は次のようにコロンで区切って 1 行に記述する必要があります。
If A > 10 Then A = A + 1 : B = B + A : C = C + B

ブロック形式の If (第 2 の構文) が実行されると、最初に引数 condition が評価されます。condition が真 (True) の場合、Then に続くステートメントが実行されます。condition が偽 (False) の場合、代わりに ElseIf で指定した条件 (condition-n) が評価されます。いずれかの条件が真 (True) の場合、対応する Then に続くステートメントが実行されます。ElseIf で指定された条件式がいずれも偽 (False) の場合 (または、ElseIf 節がないとき) は、Else に続くステートメントが実行されます。Then または Else に続くステートメントの実行が終わると、End If の次のステートメントからプログラムの実行が続けられます。

Else 節と ElseIf 節はどちらも必要に応じて定義します。また、ブロック形式の If では、ElseIf 節はいくつでも指定できます。ただし、Else 節の後ろに ElseIf 節を指定することはできません。また、ブロック形式の If はネスト (入れ子) 構造にすることができます。

If ステートメントがブロック形式であるかどうかは、Then キーワードの後ろに記述があるかどうかによって判断します。Then キーワードの後ろにコメント以外の記述があると、1 行の If ステートメントと判断されます。

ブロック形式の If ステートメントは、行の先頭に記述する必要があります。ブロック形式の If の最後には、必ず End If ステートメントを記述してください。

必要条件

バージョン 1


On Error ステートメント

エラー処理を有効または無効にします。

On Error Resume Next
On Error GoTo 0

解説

コード内で On Error Resume Next ステートメントを使用していない場合に実行時エラーが発生すると、エラー メッセージが表示され、コードの実行が停止されます。ただし、エラー処理の正確な機能はコードを実行するホストによって決まります。ホストは、場合に応じてさまざまなエラー処理を選択できます。エラー発生時にスクリプト デバッガを呼び出すようにしたり、エラー メッセージを表示せずユーザーにエラーの発生を通知しないようにすることもできます。これらは、ホストによるエラー処理の方法に過ぎません。

プロシージャの中には、呼び出し適用範囲内でエラー処理が行われている限り、エラーの発生が致命的でないものもあります。プロシージャ内でローカルのエラー処理が無効な場合にエラーが発生すると、エラー処理が有効なプロシージャが見つかるまで呼び出し適用範囲内で制御が戻され、その時点でエラーが処理されます。呼び出し適用範囲内でエラー処理が有効なプロシージャが見つからない場合は、エラー メッセージが表示されて実行停止となるか、ホストによって適切な処理が行われます。

On Error Resume Next ステートメントは、実行時エラーを発生させたステートメントの直後にあるステートメント、または、On Error Resume Next ステートメントが入っているプロシージャから最後に呼び出しを行ったステートメントの直後のステートメントを使用して、実行を継続させます。これにより、実行時エラーが発生しても処理を続けることができます。したがって、エラー処理ルーチンをプロシージャ内にインラインで構築することができます。

On Error Resume Next ステートメントは、別のプロシージャが呼び出されると非アクティブとなるため、実行時にインライン エラー処理が必要な場合は、呼び出しルーチンごとに On Error Resume Next ステートメントを実行する必要があります。プロシージャが終了すると、エラー処理機能は、そのプロシージャを入力する前に戻ります。

On Error Resume Next を使用して有効にしたエラー処理を無効にするには、On Error GoTo 0 を使用します。

次のコードは、On Error Resume Next ステートメントの使用例です。

On Error Resume Next
Err.Raise 6   ' オーバーフロー エラーを発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' エラーのクリア。

必要条件

バージョン 1

参 照

Err オブジェクト | Exit ステートメント


Option Explicit ステートメント

スクリプト内のすべての変数に対して、明示的な宣言を強制します。

Option Explicit

解説

Option Explicit ステートメントを使用する場合は、スクリプト内の他のステートメントより前に記述する必要があります。

Option Explicit ステートメントを記述した場合、変数は、Dim、Private、Public、ReDim などの各ステートメントで明示的に宣言する必要があります。宣言されていない変数名を使うと、エラーが発生します。

ヒント Option Explicit ステートメントを利用することにより、既存の変数名の入力ミスや、変数の適用範囲 (スコープ) がわかりづらいコード内で変数名の競合を避けることができます。

次のコードは、Option Explicit ステートメントの使用例です。

Option Explicit   ' 変数に対して、明示的な宣言を強制します。
Dim MyVar   ' 変数の宣言。
MyInt = 10   ' 宣言されていない変数名によりエラーが発生します。
MyVar = 10   ' 宣言済みの変数は、エラーを発生させません。

必要条件

バージョン 1


Private ステートメント

プライベート変数を宣言して、格納領域を割り当てます。Class ブロックで宣言します。

Private varname[([subscripts])][, varname[([subscripts])]] . . .

引数

varname
変数の名前を指定します。宣言する変数の標準的な名前付け規則に従って指定します。
subscripts
配列変数の次元を指定します。指定できる次元数の最大値は 60 です。subscripts の構文は次のとおりです。

upper [,upper] . . . . .

配列のインデックス番号の最小値は、常に 0 になります。

解説

Privateステートメントの変数は、宣言されたスクリプト内でのみ参照できます。

オブジェクトを参照する変数には、あらかじめ Set ステートメントで既存のオブジェクトを代入しておく必要があります。オブジェクトが代入されるまで、宣言されたオブジェクトの変数は、Empty 値として初期化されます。

Private ステートメントを空のかっこと組み合わせて使うと、動的配列を宣言することができます。宣言した動的配列の次元と要素の数をプロシージャ内で定義するには、ReDim ステートメントを使用します。ただし、Private ステートメント、Publicステートメント、または Dim ステートメントで明示的にサイズを指定した配列変数の次元を再び宣言しようとすると、エラーが発生します。

メモ プロシージャ内で Private ステートメントを使用する場合は、通常、Private ステートメントをプロシージャの最初に記述します。

次のコードは、Private ステートメントの使用例です。

Private MyNumber   ' プライベートのバリアント型変数。
Private MyArray(9)   ' プライベートの配列変数。
   ' バリアント型変数の複数のプライベート宣言。
Private MyNumber, MyVar, YourNumber

必要条件

バージョン 1

参 照

Dim ステートメント | Public ステートメント | ReDim ステートメント | Set ステートメント


Property Get ステートメント

プロパティの値を取得する Property プロシージャを構成する名前、引数、およびコードを、Class ブロックの中で宣言します。

[Public [Default] | Private] Property Get name [(arglist)]
   [statements]
   [[Set] name = expression]
   [Exit Property]
   [statements]
   [[Set] name = expression]
End Property

引数

Public
Property Get プロシージャが、すべてのスクリプトのすべてのプロシージャから参照できることを示します。
Default
Public キーワードを指定した場合のみ、指定可能です。Property Get プロシージャで定義されたプロパティがクラスの既定のプロパティであることを示します。
Private
Property Get プロシージャが、Class ブロック内で宣言されているほかのプロシージャからのみ参照できることを示します。
name
変数の標準的な名前付け規則に従って名前を付けます。この場合、同じ Class ブロック内の Property Let および Property Set プロシージャの名前と同じでもかまいません。
arglist
Property Get プロシージャを呼び出すときに、Property Let プロシージャに渡される引数を表す変数のリストを指定します。複数の変数を指定する場合はカンマ (,) で区切ります。Property Get プロシージャの引数の名前は、それぞれ Property Let プロシージャの対応する引数の名前と同じでなければなりません。
statements
Property Get プロシージャ内で実行される一連のステートメントを指定します。
Set
Property Get プロシージャの戻り値としてオブジェクトを割り当てるときに使われるキーワードを指定します。
expression
Property Get プロシージャの戻り値を指定します。

解説

Publicまたは Privateを指定しない場合、Property Get プロシージャは既定でパブリックなプロシージャになり、スクリプト内のすべてのプロシージャから参照できます。Property Get プロシージャ内のローカル変数の値は、プロシージャの実行が終了すると破棄されます。

Property Get プロシージャを、Function、Property Let などのほかのプロシージャの中で定義することはできません。

Exit Property ステートメントは、Property Get プロシージャを直ちに終了します。プログラムの実行は、その Property Get プロシージャを呼び出したステートメントの次のステートメントから継続されます。Exit Property ステートメントは、Property Get プロシージャ内の任意の位置で何回でも指定できます。

Property Get プロシージャは、Sub プロシージャおよび Property Let プロシージャと同様に、引数を受け取って一連のステートメントを実行し、引数の値を変更します。しかし、Sub プロシージャや Property Let プロシージャとは異なり、Property Get プロシージャを式の右側で使用できます。これは、プロパティの値を返すときに Function プロシージャまたはプロパティの名前を使うのと同じです。

必要条件

バージョン 5

参 照

Class ステートメント | Dim ステートメント | Exit ステートメント | Function ステートメント | Private ステートメント | Property Let ステートメント | Property Set ステートメント | Public ステートメント | Set ステートメント | Sub ステートメント


Property Let ステートメント

プロパティの値を代入 (設定) する Property プロシージャを構成する名前、引数、およびコードを、Class ブロックの中で宣言します。

[Public | Private] Property Let name ([arglist,] value)
   [statements]
   [Exit Property]
   [statements]
End Property

引数

Public
Property Let プロシージャが、すべてのスクリプトのすべてのプロシージャから参照できることを示します。
Private
Property Let プロシージャが、Class ブロック内で宣言されているほかのプロシージャからのみ参照できることを示します。
name
定義する Property Let プロシージャの名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。この場合、同じ Class ブロック内の Property Get および Property Set プロシージャの名前と同じでもかまいません。
arglist
Property Let プロシージャを呼び出すときに、Property Let プロシージャに渡される引数を表す変数のリストを指定します。複数の変数を指定する場合はカンマ (,) で区切ります。Property Let プロシージャの引数の名前は、それぞれ Property Get プロシージャの対応する引数の名前と同じでなければなりません。また、Property Let プロシージャは、対応する Property Get プロシージャよりも引数が常に 1 つ多くなります。その引数は、プロパティに割り当てられている値です。
value
プロパティに割り当てる値を格納する変数を指定します。プロシージャを呼び出すと、呼び出し元の式の右辺にこの引数が表示されます。
statements
Property Let プロシージャ内で実行される一連のステートメントを指定します。

解説

Publicまたは Privateを指定しない場合、Property Let プロシージャは既定でパブリックなプロシージャになり、スクリプト内のすべてのプロシージャから参照できます。Property Let プロシージャ内のローカル変数の値は、プロシージャの実行が終了すると破棄されます。

Property Let プロシージャを Function や Property Get などのほかのプロシージャの中で定義することはできません。

Exit Property ステートメントは、Property Let プロシージャを直ちに終了します。プログラムの実行は、その Property Let プロシージャを呼び出したステートメントの次のステートメントから継続されます。Exit Property ステートメントは、Property Let プロシージャ内の任意の位置で何回でも指定できます。

メモ Property Let ステートメントは、定義するプロシージャの引数を 1 つ以上定義する必要があります。引数 (複数ある場合は最後の引数) には、Property Let ステートメントで定義されたプロシージャが呼び出されたときに、プロパティに代入される実際の値が格納されます。この引数は、前述の構文では value として参照されます。

Property Let プロシージャは、Function プロシージャや Property Get プロシージャと同様に、引数を受け取って一連のステートメントを実行し、引数の値を変更します。しかし、値を返す Function プロシージャや Property Get プロシージャとは異なり、Property Let プロシージャは、プロパティに値を代入する式の左辺でしか使用できません。

必要条件

バージョン 5

参 照

Class ステートメント | Dim ステートメント | Exit ステートメント | Function ステートメント | Private ステートメント | Property Get ステートメント | Property Set ステートメント | Public ステートメント | Set ステートメント | Sub ステートメント


Property Set ステートメント

オブジェクトへの参照を設定する Property プロシージャを構成する名前、引数、コードを、Class ブロックの中で宣言します。

[Public | Private] Property Set name([arglist,] reference)
   [statements]
   [Exit Property]
   [statements]
End Property

引数

Public
Property Set プロシージャが、すべてのスクリプトのすべてのプロシージャから参照できることを示します。
Private
Property Set プロシージャが、Class ブロック内で宣言されているほかのプロシージャからのみ参照できることを示します。
name
定義する Property Set プロシージャの名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。この場合、同じ Class ブロック内の Property Get および Property Let プロシージャの名前と同じでもかまいません。
arglist
Property Set プロシージャを呼び出すときに、Property Set プロシージャに渡される引数を表す変数のリストを指定します。複数の変数を指定する場合はカンマ (,) で区切ります。また、Property Set プロシージャは、対応する Property Get プロシージャよりも引数が常に 1 つ多くなります。その引数は、プロパティに割り当てられているオブジェクトです。
reference
オブジェクト参照を割り当てる式の右辺で使われる、オブジェクト参照を格納する変数を指定します。
statements
Property Set プロシージャ内で実行される一連のステートメントを指定します。

解説

Publicまたは Privateを指定しない場合、Property Set プロシージャは既定でパブリックなプロシージャになり、スクリプト内のすべてのプロシージャから参照できます。Property Set プロシージャ内のローカル変数の値は、プロシージャの実行が終了すると破棄されます。

Property Set プロシージャを Function や Property Let などのほかのプロシージャの中で定義することはできません。

Exit Property ステートメントは、Property Set プロシージャを直ちに終了します。プログラムの実行は、その Property Set プロシージャを呼び出したステートメントの次のステートメントから継続されます。Exit Property ステートメントは、Property Set プロシージャ内の任意の位置で何回でも指定できます。

メモ Property Set ステートメントは、定義するプロシージャの引数を 1 つ以上定義する必要があります。この引数 (複数ある場合は最後の引数) には、Property Set ステートメントで定義されたプロシージャが呼び出されたときに、プロパティに割り当てられる実際のオブジェクト参照が格納されます。この引数は、前述の構文では reference として参照されます。

Property Set プロシージャは、Function プロシージャや Property Get プロシージャと同様に、引数を受け取って一連のステートメントを実行し、引数の値を変更します。しかし、値を返す Function プロシージャや Property Get プロシージャとは異なり、オブジェクト参照を割り当てる式の左辺 (Set ステートメント) でしか使用できません。

必要条件

バージョン 5

参 照

Class ステートメント | Dim ステートメント | Exit ステートメント | Function ステートメント | Private ステートメント | Property Get ステートメント | Property Let ステートメント | Public ステートメント | Set ステートメント | Sub ステートメント


Public ステートメント

パブリック変数を宣言して、格納領域を割り当てます。Class ブロックで宣言します。

Public varname[([subscripts])][, varname[([subscripts])]] . . .

引数

varname
変数の名前を指定します。宣言する変数の標準的な名前付け規則に従って指定します。
subscripts
配列変数の次元を指定します。指定できる次元数の最大値は 60 です。subscripts の構文は次のとおりです。

upper [,upper] . . . . .

配列のインデックス番号の最小値は、常に 0 になります。

解説

Publicステートメントの変数は、すべてのスクリプトのすべてのプロシージャから参照できます。

オブジェクトを参照する変数には、あらかじめ Set ステートメントで既存のオブジェクトを代入しておく必要があります。オブジェクトが代入されるまで、宣言されたオブジェクトの変数は、Empty 値として初期化されます。

Public ステートメントを空のかっこと組み合わせて使用すると、動的配列を宣言できます。宣言した動的配列の次元と要素の数をプロシージャ内で定義するには、ReDim ステートメントを使用します。ただし、Privateステートメント、Public ステートメント、または Dim ステートメントで明示的にサイズを指定した配列変数の次元を再び宣言しようとすると、エラーが発生します。

次のコードは、Public ステートメントの使用例です。

Public MyNumber   ' パブリックのバリアント型変数。
Public MyArray(9)   ' パブリックの配列変数。
   ' バリアント型変数の複数のパブリック宣言。
Public MyNumber, MyVar, YourNumber

必要条件

バージョン 1

参 照

Dim ステートメント | Private ステートメント | ReDim ステートメント | Set ステートメント


Randomize ステートメント

乱数ジェネレータを初期化 (乱数系列を再設定) します。

Randomize [number]

引数 number には、任意の有効な数式を指定します。

解説

number には、Rnd 関数の乱数ジェネレータに引き渡す新しいシード値を指定します。number を省略すると、システム タイマーから取得した値が新しいシード値として使われます。

Randomize ステートメントを使用しない場合、引数を指定しないで Rnd 関数を呼び出すと、最初に Rnd 関数を呼び出したときのシード値と同じ値が使用されます。それ以降は、直前に生成された数がシード値として使用されます。

メモ 乱数系列を繰り返すには、数値を指定して Randomize ステートメントを実行する直前に、負の引数を指定して Rnd 関数を呼び出します。引数 number に同じ値を指定して Randomize ステートメントを使用しても、前の乱数系列を繰り返すことはできません。

次のコードは、Randomize ステートメントの使用例です。

Dim MyValue, Response
Randomize   ' 乱数ジェネレータを初期化します。
Do Until Response = vbNo
   MyValue = Int((6 * Rnd) + 1)   ' 1 ～ 6 のランダムな値を生成します。
   MsgBox MyValue
   Response = MsgBox ("繰り返しますか ? ", vbYesNo)
Loop

必要条件

バージョン 1

参 照

Rnd 関数 | Timer 関数


ReDim ステートメント

動的配列変数を宣言し、そのメモリ領域の割り当てや再割り当てを行います。

ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .

引数

Preserve
次元の大きさを変更しても、その配列に既に格納されている値をそのまま保持しておく必要がある場合に指定します。
varname
宣言する変数の名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。
subscripts
配列変数の次元を指定します。最大 60 次元まで宣言することができます。subscripts の構文は次のとおりです。

upper [,upper] . . . . .

配列のインデックス番号の最小値は、常に 0 になります。

解説

ReDim ステートメントは、Private、Public、または Dim の各ステートメントで、インデックス番号を省略してかっこだけを指定し、明示的に宣言された動的配列の大きさの指定や変更に使用します。ReDim ステートメントは、配列の要素数や次元数を変更するために何回でも使用できます。

キーワード Preserve を指定した場合、配列の最後の次元のサイズだけを変更できます。たとえば、次元が 1 つしかない配列の場合、その次元はただ 1 つの次元なので、その次元のサイズを変更できます。しかし、次元が 2 つ以上ある配列の場合、最後の次元のサイズだけを変更して、その配列の内容をそのまま残すことは可能ですが、他の次元の大きさを変更することはできません。

次のコードは、既に格納されている値を削除せずに動的配列の最後の次元のサイズを増やす例です。

ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
注意 配列のサイズを変更して小さくすると、削除された要素に格納されていたデータは失われます。

変数の初期化時には、数値変数は 0 に、文字列変数は長さ 0 の文字列 ("") に初期化されます。オブジェクトを参照する変数には、あらかじめ Set ステートメントで既存のオブジェクトを代入しておく必要があります。オブジェクト変数は、既存のオブジェクトが代入されるまで、特殊な値 Nothing が格納されています。

必要条件

バージョン 1

参 照

Dim ステートメント | Set ステートメント


Rem ステートメント

プログラム内にコメントを記述するときに指定します。

Rem comment

または

' comment

comment には、プログラムをわかりやすくするための説明文 (コメント) を記述します。キーワード Rem と comment の間には、スペースを入力する必要があります。

解説

構文に示したように、キーワード Rem の代わりにシングル クォーテーション (') を使用できます。同じ行の他のステートメントの後にキーワード Rem を記述する場合は、他のステートメントとキーワード Rem をコロン (:) で区切る必要があります。ただし、キーワード Rem の代わりにシングル クォーテーション (') を使用する場合は、コロンは必要ありません。

次のコードは、Rem ステートメントの使用例です。

Dim MyStr1, MyStr2
MyStr1 = "Hello" :Rem 文の後のコメントは、コロンで区切ります。
MyStr2 = "Goodbye" ' これもコメントですが、コロンは不要です。
Rem コードがない行のコメントは、コロンは不要です。

必要条件

バージョン 1


Select Case ステートメント

条件式の値に従って、複数のステートメント ブロックのいずれかを実行させるフロー制御ステートメントです。

Select Case testexpression
   [Case expressionlist-n
      [statements-n]] . . .
   [Case Else expressionlist-n
      [elsestatements-n]]
End Select

引数

testexpression
任意の数式または文字列式を指定します。
expressionlist-n
Case 節を記述する場合は必ず指定します。1 つ以上の式をカンマ (,) で区切って指定します。
statements-n
testexpression が expressionlist-n のいずれかと一致するとき、一致した statements-n のステートメントが実行されます。
elsestatements-n
testexpression が Case 節のいずれとも一致しないとき、elsestatements-n のステートメントが実行されます。

解説

testexpression が Case 節のいずれかの式 expressionlist に一致すると、次の Case 節または End Select ステートメントまでの引数 statements が実行されます。ブロックの実行が終わると、制御は End Select ステートメントの次のステートメントに移ります。testexpression が複数の Case 節に一致するときは、最初に一致した Case 節に続くステートメントだけが実行されます。

Case Else 節は、testexpression がどの Case 節の expressionlist にも一致しなかったときに実行するステートメント elsestatements を指定します。Case Else ステートメントは必ずしも必要ではありませんが、予測できない testexpression の値を処理するために、Select Case ブロックに Case Else ステートメントを記述することをお勧めします。Case 節の式 expressionlist が testexpression と一致しない場合で Case Else ステートメントが指定されていないときは、End Select ステートメントの次のステートメントから実行が続けられます。

Select Case ステートメントは、ネスト (入れ子) 構造にすることができます。このとき、各 Select Case ステートメントには、それぞれ対応する End Select ステートメントが必要です。

次のコードは、Select Case ステートメントの使用例です。

Dim Color, MyVar
Sub ChangeBackground (Color)
   MyVar = lcase (Color)
   Select Case MyVar
      Case "red"     document.bgColor = "red"
      Case "green"   document.bgColor = "green"
      Case "blue"    document.bgColor = "blue"
      Case Else      MsgBox "他の色を選んでください。
   End Select
End Sub

必要条件

バージョン 1

参 照

If...Then...Else ステートメント


Set ステートメント

オブジェクトへの参照を変数またはプロパティに代入するか、プロシージャへの参照をイベントに関連付けます。

Set objectvar = {objectexpression | New classname | Nothing}

または

Set object.eventname = GetRef(procname)

パラメータ

objectvar
必ず指定します。変数またはプロパティの名前を指定します。宣言する変数の標準的な名前付け規則に従います。
objectexpression
省略可能です。オブジェクト名、同じオブジェクト型の宣言済み変数、または同じオブジェクト型を返す関数かメソッドで構成された式を指定します。
New
クラスの新しいインスタンスを作成するキーワードを指定します。objectvar にオブジェクトへの参照が含まれている場合、この参照は新たにオブジェクトへの参照が代入されたときに開放されます。New キーワードは、クラスのインスタンスを作成する場合にのみ使用されます。
classname
省略可能です。作成するクラス名を指定します。クラスおよびメンバは、Class ステートメントを使って定義します。
Nothing
省略可能です。objectvar と任意のオブジェクトまたはクラスとの関連付けを解除します。objectvar に Nothing を代入すると、以前に参照されたオブジェクトに関連するすべてのシステムおよびメモリ リソースが開放されます。ただし、他の変数によって参照されている場合を除きます。
object
必ず指定します。event が関連付けられるオブジェクトの名前を指定します。
event
必ず指定します。関数がバインドされるイベントの名前を指定します。
procname
必ず指定します。event に関連付けられる Sub または Function の名前を含む文字列を指定します。

解説

objectvar を有効にするには、代入するオブジェクトに一致するオブジェクト型を指定する必要があります。

Dim ステートメント、Private ステートメント、Public ステートメント、または ReDim ステートメントは、オブジェクトを参照する変数の宣言のみを行います。Set ステートメントを使用して特定のオブジェクトを代入するまでは、実際のオブジェクトは参照されません。

通常、Set ステートメントを使用して変数にオブジェクト参照を代入した場合、その変数用にオブジェクトのコピーが作成されるわけではなく、オブジェクトそのものへの参照が作成されます。複数のオブジェクト変数が、同じオブジェクトを参照することがあります。複数の変数によって参照されているのはコピーではなくオブジェクトそのものなので、オブジェクトになんらかの変更が生じた場合は、そのオブジェクトを参照するすべての変数に反映されます。

Function ShowFreeSpace(drvPath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "ドライブ " & UCase(drvPath) & " - "
   s = s & d.VolumeName  & "<BR>"
   s = s & "空き領域: " & FormatNumber(d.FreeSpace/1024, 0)
   s = s & " KB"
   ShowFreeSpace = s
End Function

New キーワードを使用すると、クラスのインスタンスを作成すると同時に、それをオブジェクト参照の変数に代入できます。クラスのインスタンスを代入する変数は、Dim ステートメントまたは同様のステートメントで定義済みである必要があります。

Set ステートメントを使用したプロシージャとイベントの関連付けについては、GetRef 関数のマニュアルを参照してください。

必要条件

バージョン 1

参 照

= 演算子 | Dim ステートメント | GetRef 関数 | ReDim ステートメント


Sub ステートメント

Sub プロシージャの名前、引数を宣言し、Sub プロシージャの始まりを示します。

[Public [Default] | Private] Sub name [(arglist)]
   [statements]
   [Exit Sub]
   [statements]
End Sub

引数

Public
すべてのスクリプトのすべてのプロシージャから参照できる Sub プロシージャを宣言するときに指定します。
Default
Class のキーワード Public と共にのみ使用し、Sub プロシージャをクラスの既定のメソッドに指定します。1 つのクラスで複数の Default プロシージャを指定するとエラーとなります。
Private
Sub プロシージャを記述したスクリプト内のプロシージャ内からのみ参照できるプロシージャを宣言するときに指定します。
name
定義する Sub プロシージャの名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。
arglist
Sub プロシージャを呼び出すときに、Sub プロシージャに渡す引数を表す変数のリストを指定します。複数の変数を指定するときは、カンマ (,) で区切ります。
statements
Sub プロシージャ内で実行される、一連のステートメントを指定します。

arglist の構文と指定項目は次のとおりです。

[ByVal | ByRef] varname[( )]

引数

ByVal
その引数が、値渡しで渡されることを示します。
ByRef
その引数が、参照渡しで渡されることを示します。
varname
引数として渡す変数名を指定します。変数の標準的な名前付け規則に従って名前を付けます。

解説

キーワード Publicまたはキーワード Privateを指定しない場合、Sub プロシージャは既定のパブリック プロシージャとなり、スクリプト内の他のすべてのプロシージャから参照できます。Sub プロシージャ内のローカル変数の値は、プロシージャの実行が終了すると破棄されます。

Sub プロシージャを Function プロシージャや Property Get プロシージャなど、他のプロシージャの中で定義することはできません。

Exit Sub ステートメントは、Sub プロシージャを直ちに終了します。プログラムの実行は、その Sub プロシージャを呼び出したステートメントの次のステートメントから継続されます。Exit Sub ステートメントは、Sub プロシージャ内の任意の場所に必要に応じていくつでも指定できます。

Sub プロシージャと Function プロシージャには、似た点と異なる点があります。引数を受け取って一連のステートメントを実行し、引数の値を変えることができる点は似ています。しかし、Sub プロシージャは、値を返す Function プロシージャと異なり値を返さないため、式の中に記述することはできません。

Sub プロシージャを呼び出すには、プロシージャ名の後ろに引数リストを付けて指定します。Sub プロシージャの呼び出し方法については、Call ステートメントを参照してください。

注意 Sub プロシージャは、再帰的にプロシージャ自体を呼び出すことができます。ただし、再帰呼び出しを行うと、スタックがオーバーフローする可能性があります。

Sub プロシージャで使用する変数には、Sub プロシージャ内で明示的に宣言される変数と、それ以外の変数の 2 種類があります。プロシージャ内で Dim ステートメントなどを使って明示的に宣言された変数は、そのプロシージャの中だけで有効なローカル変数になります。プロシージャ内で明示的に宣言されていない変数も、そのプロシージャの外部のさらに上のレベルで明示的に宣言されていない限りは、ローカル変数となります。

注意 プロシージャ内で明示的に宣言されていない変数をプロシージャ内で使うことはできますが、その変数と同じ名前の変数などがスクリプト レベルで定義されている場合、名前の競合が発生します。あるプロシージャが、他のプロシージャ、定数または変数と同じ名前を持つ未宣言の変数を参照した場合、そのプロシージャはスクリプト レベルの名前を参照しているものと見なされます。このような名前の競合を避けるために、Option Explicit ステートメントを使い、変数を明示的に宣言してください。

必要条件

バージョン 1

参 照

Call ステートメント | Dim ステートメント | Exit ステートメント | Function ステートメント


While...Wend ステートメント

指定された条件が真 (True) である間、一連のステートメントの実行を繰り返すフロー制御ステートメントです。

While condition
   Version [statements]
Wend

引数

condition
真 (True) または偽 (False) を評価する数式、または文字列式を指定します。condition の値が Null 値の場合、condition は偽 (False) が使われます。
statements
condition が真 (True) の間に実行する 1 つ以上のステートメントを指定します。

解説

condition が真 (True) の場合は、Wend ステートメントに達するまで、statements 内のすべてのステートメントが実行されます。実行が Wend ステートメントに達すると、制御は再び While ステートメントに戻り、condition が評価されます。condition が真 (True) の間、この処理が繰り返されます。真 (True) でない場合は、Wend ステートメントの次のステートメントに制御が移ります。

While...Wend ループは、任意のレベルでネスト (入れ子) 構造にすることができます。Wend ステートメントは最後に実行された While ステートメントに対応します。

メモ Do...Loop ステートメントを使用すると、より構造化された柔軟なループを記述することができます。

次のコードは、While...Wend ステートメントの使用例です。

Dim Counter
Counter = 0   ' 変数を初期化します。
While Counter < 20   ' カウンタの数を調べます。
   Counter = Counter + 1   ' カウンタの数を増やします。
   Alert Counter
Wend   ' カウンタが 20 以上になると While ループを終了します。

必要条件

バージョン 1

参 照

Do...Loop ステートメント


With ステートメント (VBScript)

Visual Basic Scripting Edition

With ステートメント

1 つのオブジェクトに対して一連のステートメントを実行します。

With object
   statements
End With

引数

object
必ず指定します。オブジェクトの名前またはオブジェクトを返す関数の名前を指定します。
statements
必ず指定します。object で実行する 1 つ以上のステートメントを指定します。

解説

With ステートメントを使用すると、特定のオブジェクトの名前を再定義することなく、そのオブジェクトに対して一連のステートメントを実行できます。たとえば、単一のオブジェクトに対して多数のプロパティを変更するには、プロパティを割り当てるたびにオブジェクトを参照する代わりに、オブジェクトを 1 回だけ参照し、With の制御構造内に、プロパティを割り当てるステートメントを記述します。次のコードは、With ステートメントを使って同じオブジェクトの複数のプロパティに値を割り当てる例です。

With MyLabel
   .Height = 2000
   .Width = 2000
   .Caption = "This is MyLabel"
End With

プロパティの操作は With ステートメントの重要な機能ですが、With ステートメントには他の用途も考えられます。有効なコードであれば、すべて With ブロック内で使用できます。

メモ With ブロックでの処理が始まると、object を変更することはできません。したがって、1 つの With ステートメントで多数の異なるオブジェクトを処理することはできません。

With ブロックの中に別の With ブロックを配置すると、With ステートメントをネストできます。ただし、外側の With ブロックのメンバは内側の With ブロックに対してはマスクされているので、内側の With ブロックのオブジェクト参照を外側の With ブロックに含まれているオブジェクトのメンバに渡すときは、完全に修飾しなければなりません。

重要 With ブロックへのジャンプも With ブロックからのジャンプも行わないでください。With ブロックのステートメントは実行されますが、With ステートメントまたは End With ステートメントが実行されません。その結果、エラーや予想外の動作が発生することがあります。

必要条件

バージョン 1

参 照

Set ステートメント


Dictionary オブジェクト

キーと項目を対で格納するオブジェクトです。

解説

Dictionary オブジェクトは、PERL 関連の配列と同じです。項目はデータの任意の形式で配列に保存されます。各項目には、項目を一意に識別するためのキーが関連付けられます。キーは、それぞれの項目を取り出すときに使用されます。キーは、配列以外の値を使用します。通常では整数値または文字列を使用します。

次のコードは、Dictionary オブジェクトを作成する例です。

[JScript]
var y = new ActiveXObject("Scripting.Dictionary");
y.add ("a", "test");
if (y.Exists("a"))
   document.write("true");
...
[VBScript]
Dim d   ' Create a variable.
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "アテネ"   ' キーと項目を追加します。
d.Add "b", "ベオグラード"
d.Add "c", "カイロ"
...

メソッド

Add メソッド (Dictionary オブジェクト) | Exists メソッド | Items メソッド | Keys メソッド | Remove メソッド | RemoveAll メソッド

プロパティ

Count プロパティ | Item プロパティ | Key プロパティ

参 照

FileSystemObject オブジェクト | TextStream オブジェクト


Count プロパティ

コレクションの中のオブジェクト数、または Dictionary オブジェクトに格納される項目の数を返します。値の取得のみ可能です。

object.Count

object には、[対象] 一覧内のいずれかの項目の名前を指定します。

解説

次のコードは、Count プロパティの使用例です。

[JScript]
function CountDemo()
{
   var a, d, i, s;                 // 変数を作成します。
   d = new ActiveXObject("Scripting.Dictionary");
   d.Add ("a", "アテネ");          // キーと項目を追加します。
   d.Add ("b", "ベオグラード");
   d.Add ("c", "カイロ");
   a = (new VBArray(d.Keys()));    // キーを取得します。
   s = "";
   for (i = 0; i < d.Count; i++)   // 取得した配列に繰り返し処理を行います。
   {
      s += a.getItem(i) + " - " + d(a.getItem(i)) + "<BR>";
   }
   return(s);                      // 結果を返します。
}
[VBScript]
Function ShowKeys
   Dim a, d, i, s   ' 変数を作成します。
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "a", "アテネ"   ' キーと項目を追加します。
   d.Add "b", "ベオグラード"
   d.Add "c", "カイロ"
   a = d.Keys   ' キーを取得します。
   For i = 0 To d.Count -1 ' 配列に繰り返し処理を行います。
      s = s & a(i) & "<BR>" ' 結果を返します。
   Next
   ShowKeys = s
End Function

参 照

CompareMode プロパティ | Item プロパティ | Key プロパティ

対象: Dictionary オブジェクト | Drives コレクション | Files コレクション | Folders コレクション


Item プロパティ (FileSystemObject)

Scripting ランタイム ライブラリ

Item プロパティ

Dictionary オブジェクトにある指定されたキーと関連付ける項目を設定します。コレクションの場合は、指定されたキーに対応するオブジェクトを返します。値の取得も可能です。

object.Item(key)[ = newitem]

引数

object
必ず指定します。コレクションまたは Dictionary オブジェクトの名前を指定します。
key
必ず指定します。取得または設定する項目に関連付けられているキーを指定します。
newitem
省略可能です。Dictionary オブジェクトの場合のみ指定可能で、コレクションには使用できません。引数 key で指定したキーに関連付ける新しい値を指定します。

解説

項目を変更するときに引数 key で指定したキーが見つからない場合、newitem で指定した項目と関連付けられた、引数 key で指定した新しいキーが作成されます。また、既存の項目を取得するときに引数 key で指定したキーが見つからない場合は、空の項目と関連付けられた、引数 key で指定した新しいキーが作成されます。

次のコードは、Item プロパティの使用例です。

[JScript]
function DicTest(keyword)
{
   var a, d;
   d = new ActiveXObject("Scripting.Dictionary");
   d.Add("a", "アテネ");
   d.Add("b", "ベオグラード");
   d.Add("c", "カイロ");
   a = d.Item(keyword);
   return(a);
}
[VBScript]
Function ItemDemo
   Dim d   ' Create some variables.
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "a", "アテネ"   ' キーと項目を追加します。
   d.Add "b", "ベオグラード"
   d.Add "c", "カイロ"
   ItemDemo = d.Item("c")   ' 項目を取得します。
End Function

参 照

CompareMode プロパティ | Count プロパティ | Key プロパティ

対象: Dictionary オブジェクト | Drives コレクション | Files コレクション | Folders コレクション


Key プロパティ

Dictionary オブジェクトにキーを設定します。

object.Key(key) = newkey

引数

object
必ず指定します。Dictionary オブジェクトの名前を指定します。
key
必ず指定します。変更するキーの値を指定します。
newkey
必ず指定します。引数 key で指定したキーと置き換える新しいキーを指定します。

解説

キーを変更するときに引数 key で指定したキーが見つからなかった場合は、引数 key の指定を使って、空の項目を持つ新しいキーが作成されます。

次のコードは、Key プロパティの使用例です。

[JScript]
var d;
d = new ActiveXObject("Scripting.Dictionary");

function AddStuff()
{
   var a;
   d.Add("a", "アテネ");
   d.Add("b", "ベオグラード");
   d.Add("c", "カイロ");
}

function ChangeKey(oldkey, newkey)
{
   var s;
   d.Key("c") = "Ca";
   s = "キー " + oldkey + " を " + newkey + " に変更しました。";
   return(s);
}
[VBScript]
Function DicDemo
   Dim d   ' 変数を作成します。
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "a", "アテネ"   ' キーと項目を追加します。
   d.Add "b", "ベオグラード"
   d.Add "c", "カイロ"
   d.Key("c") = "d"   ' "c" のキーを "d" にセットします。
   DicDemo = d.Item("d")   ' 関連した項目を返します。
End Function

参 照

CompareMode プロパティ | Count プロパティ | Item プロパティ

対象: Dictionary オブジェクト


Add メソッド (Dictionary オブジェクト)

Dictionary オブジェクトに 1 組のキーと項目を追加します。

object.Add (key, item)

引数

object
必ず指定します。Dictionary オブジェクトの名前を指定します。
key
必ず指定します。引数 item で指定した項目と関連付けるキーを指定します。
item
必ず指定します。引数 key で指定したキーと関連付ける項目を指定します。

解説

引数 key で指定したキーが既に存在していた場合は、エラーが発生します。

次のコードは、Add メソッドの使用例です。

[JScript]
var d;
d = new ActiveXObject("Scripting.Dictionary");
d.Add("a", "アテネ");
d.Add("b", "ベオグラード");
d.Add("c", "カイロ");
[VBScript]
Dim d   ' 変数を作成します。
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "アテネ"   ' キーと項目を追加します。
d.Add "b", "ベオグラード"
d.Add "c", "カイロ"

参 照

Add メソッド (Folders コレクション) | Exists メソッド | Items メソッド | Keys メソッド | Remove メソッド | RemoveAll メソッド

対象: Dictionary オブジェクト


Exists メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

Exists メソッド

指定したキーが Dictionary オブジェクト内に存在する場合は、真 (true) を返します。存在しない場合は、偽 (false) を返します。

object.Exists(key)

引数

object
必ず指定します。Dictionary オブジェクトの名前を指定します。
key
必ず指定します。Dictionary オブジェクト内で検索するキーの値を指定します。

解説

次のコードは、Exists メソッドの使用例です。

[JScript]
function keyExists(k)
{
   var fso, s = "";
   d = new ActiveXObject("Scripting.Dictionary");
   d.Add("a", "アテネ");
   d.Add("b", "ベオグラード");
   d.Add("c", "カイロ");
   if (d.Exists(k))
      s += "指定したキーは存在します。";
   else
      s += "指定したキーはありません。";
   return(s);
}
[VBScript]
Function KeyExistsDemo
   Dim d, msg   ' 変数を作成します。
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "a", "アテネ"   ' キーと項目を追加します。
   d.Add "b", "ベオグラード"
   d.Add "c", "カイロ"
   If d.Exists("c") Then
      msg = "指定したキーは存在します。"
   Else
      msg = "指定したキーはありません。"
   End If
   KeyExistsDemo = msg
End Function

参 照

Add メソッド (Dictionary オブジェクト) | Items メソッド | Keys メソッド | Remove メソッド | RemoveAll メソッド

対象: Dictionary オブジェクト


Items メソッド

Dictionary オブジェクト内のすべての項目を格納した配列を返します。

object.Items( )

object には、Dictionary オブジェクトの名前を指定します。

解説

次のコードは、Items メソッドの使用例です。

[JScript]
function ItemsDemo()
{
   var a, d, i, s;                  // 変数を作成します。
   d = new ActiveXObject("Scripting.Dictionary");
   d.Add ("a", "アテネ");              // キーと項目を追加します。
   d.Add ("b", "ベオグラード");
   d.Add ("c", "カイロ");
   a = (new VBArray(d.Items())).toArray();   // 項目を取得します。
   s = "";
   for (i in a)                  // 取得した配列に繰り返し処理を行います。
   {
      s += a[i] + "<br>";
   }
   return(s);                     // 結果を返します。
}
[VBScript]
Function DicDemo
   Dim a, d, i, s   ' 変数を作成します。
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "a", "アテネ"   ' キーと項目を追加します。
   d.Add "b", "ベオグラード"
   d.Add "c", "カイロ"
   a = d.Items   ' 項目を取得します。
   For i = 0 To d.Count -1 ' 取得した配列に繰り返し処理を行います。
      s = s & a(i) & "<BR>" ' 結果を返します。
   Next
   DicDemo = s
End Function

参 照

Add メソッド (Dictionary オブジェクト) | Exists メソッド | Keys メソッド | Remove メソッド | RemoveAll メソッド

対象: Dictionary オブジェクト


Keys メソッド

Dictionary オブジェクト内のすべての既存キーを格納した配列を返します。

object.Keys( )

object には、Dictionary オブジェクトの名前を指定します。

解説

次のコードは、Keys メソッドの使用例です。

[JScript]
function KeysDemo()
{
   var a, d, i, s;                  // 変数を作成します。
   d = new ActiveXObject("Scripting.Dictionary");
   d.Add ("a", "Athens");              // キーと項目を追加します。
   d.Add ("b", "ベオグラード");
   d.Add ("c", "カイロ");
   a = (new VBArray(d.Keys())).toArray();   // キーを取得します。
   s = "";
   for (i in a)               // 取得した配列に繰り返し処理を行います。
   {
      s += a[i] + " - " + d(a[i]) + "<BR>";
   }
   return(s);                     // 結果を返します。
}
[VBScript]
Function DicDemo
   Dim a, d, i   ' 変数を作成します。
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "a", "アテネ"   ' キーと項目を追加します。
   d.Add "b", "ベオグラード"
   d.Add "c", "カイロ"
   a = d.Keys   ' キーを取得します。
   For i = 0 To d.Count -1 ' 取得した配列に繰り返し処理を行います。
      s = s & a(i) & "<BR>" ' 結果を返します。
   Next
   DicDemo = s
End Function

参 照

Add メソッド (Dictionary オブジェクト) | Exists メソッド | Items メソッド | Remove メソッド | RemoveAll メソッド

対象: Dictionary オブジェクト


Remove メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

Remove メソッド

Dictionary オブジェクトからキーと項目の組みを削除します。

object.Remove(key)

引数

object
必ず指定します。Dictionary オブジェクトの名前を指定します。
key
必ず指定します。Dictionary オブジェクトから削除するキーと項目の組みと関連付けられた引数 key を指定します。

解説

存在しないキーを指定した場合は、エラーが発生します。

次のコードは、Remove メソッドの使用例です。

[JScript]
var a, d, i, s;              // 変数を作成します。
d = new ActiveXObject("Scripting.Dictionary");
d.Add ("a", "Athens");       // キーと項目を追加します。
d.Add ("b", "ベオグラード");
d.Add ("c", "カイロ");
...
d.Remove("b");               // 2 つ目の組を削除します。
[VBScript]
Dim a, d   ' 変数を作成します。
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "アテネ"   ' キーと項目を追加します。
d.Add "b", "ベオグラード"
d.Add "c", "カイロ"
...
d.Remove("b")   '  2 つ目の組を削除します。

参 照

Add メソッド (Dictionary オブジェクト) | Exists メソッド | Items メソッド | Keys メソッド | RemoveAll メソッド

対象: Dictionary オブジェクト


RemoveAll メソッド

Dictionary オブジェクトからすべてのキーと項目を削除します。

object.RemoveAll( )

object には、Dictionary オブジェクトの名前を指定します。

解説

次のコードは、RemoveAll メソッドの使用例です。

[JScript]
var a, d, i;              // 変数を作成します。
d = new ActiveXObject("Scripting.Dictionary");
d.Add ("a", "Athens");   // キーと項目を追加します。
d.Add ("b", "ベオグラード");
d.Add ("c", "カイロ");
...
d.RemoveAll( );       // 辞書をクリアします。
[VBScript]
Dim a, d, i   ' 変数を作成します。
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "アテネ"   ' キーと項目を追加します。
d.Add "b", "ベオグラード"
d.Add "c", "カイロ"
...
a = d.RemoveAll   ' // 辞書をクリアします。

参 照

Add メソッド (Dictionary オブジェクト) | Exists メソッド | Items メソッド | Keys メソッド | Remove メソッド

対象: Dictionary オブジェクト


FileSystemObject

トピック

スクリプト ランタイム リファレンス
スクリプト ランタイム リファレンスを構成する要素の一覧です。
FileSystemObject の基本
FileSystemObject の基本的なことがらを紹介するガイドです。


FileSystemObject の概要

Active Server Pages、Windows Script Host、またはその他のスクリプト対応アプリケーションでスクリプトを記述する場合、Web サーバー上のファイルやフォルダを追加、移動、変更、作成または削除する必要がしばし発生します。また、Web サーバーに接続されたドライブの情報を取得したり、操作する必要もあります。

Scripting では、FileSystemObject (FSO) を使用してドライブ、ファイルおよびフォルダの操作を行うことができます。FSO について、次のセクションで説明します。

FileSystemObject オブジェクト モデル

FileSystemObject オブジェクト モデルは、使い慣れた object.method 形式の構文と豊富なプロパティ、メソッド、およびイベントのセットによってフォルダとファイルを処理できます。

FileSystemObject のオブジェクト

FileSystemObject オブジェクト モデルのオブジェクトおよびコレクションの一覧を示します。

FileSystemObject のプログラミング

FileSystemObject を使用したプログラミングについて説明します。

ドライブとフォルダの操作

FileSystemObject を使用して、フォルダのコピーおよび移動について説明します。また、ドライブやフォルダ情報の取得方法について説明します。

ファイルの操作

FileSystemObject を使用して、ファイル操作を行う方法について説明します。

FileSystemObject のサンプル コード

FileSystemObject オブジェクト モデルで利用可能な機能を取り扱った具体的な例を示します。


FileSystemObject オブジェクト モデル

FileSystemObject (FSO) オブジェクト モデルでは、使い慣れた object.method 形式の構文と豊富なプロパティ、メソッド、およびイベントのセットによってフォルダとファイルを処理できます。

オブジェクト ベースのこのツールは、次の処理に使います。

  • HTML による Web ページの作成
  • Windows Scripting Host による Microsoft Windows 用バッチ ファイルの作成
  • スクリプト コントロールによる、他の言語で開発されたアプリケーションへのスクリプト機能の提供

クライアント側で FSO を使用すると、クライアント側のローカル ファイル システムに望ましくないアクセスを受ける可能性があります。このようなセキュリティ上の重大な問題があるため、このドキュメントでは、サーバー側の Web ページで実行されるスクリプトの作成に、FSO オブジェクト モデルを使用します。サーバー側で使用されるため、Internet Explorer の既定の設定では FileSystemObject オブジェクトをクライアント側で使用することができません。これらの既定値を無効にすると、ローカル システムのファイル システムに望ましくないアクセスを受け、ファイル システムの整合性やデータそのものが失われたり、さらに重大な障害が発生する恐れがあります。

FSO オブジェクト モデルを使用することにより、サーバー側のアプリケーションでは、フォルダの作成、変更、移動、および削除を行ったり、特定のフォルダがあるかどうかを確認し、場合によってはその位置を探し当てることができるようになります。名前、作成日、最終更新日など、フォルダに関する情報も検索できます。

FSO オブジェクト モデルでは、ファイルの処理も簡単になっています。ファイル処理の主要な目標は、データをアクセスしやすい形式に変換し、容量とリソースの両面において効率的に保存することです。ユーザーは、ファイルの作成、データの挿入および変更、データの出力 (読み込み) を実行できなければなりません。Microsoft Access や Microsoft SQL Server などのデータベースにデータを保存するとアプリケーションのオーバーヘッドが大幅に増加するため、バイナリ ファイルまたはテキスト ファイルにデータを保存するのが最も効率的です。ユーザー自身がオーバーヘッドの増大を望まないこともあれば、フル装備のデータベースに関連した特別な機能が、データへのアクセスに必要ないこともあります。

FSO オブジェクト モデルは、スクリプティング タイプ ライブラリ (Scrrun.dll) に格納されており、TextStream オブジェクトによってテキスト ファイルの作成および操作をサポートします。バイナリ ファイルの作成および操作については、まだサポートしていませんが、将来サポートする予定です。


FileSystemObject のオブジェクト

FileSystemObject (FSO) オブジェクトのモデルには、次のオブジェクトとコレクションが含まれています。

オブジェクトまたはコレクション | 内容
FileSystemObject | メイン オブジェクト。ドライブ、フォルダ、およびファイルに関して、作成、削除、情報の取得などの一般的な操作を行うためのメソッドとプロパティが格納されています。このオブジェクトに関連付けられたメソッドの多くは、他の FSO オブジェクトのメソッドを複製します。これらの複製されたメソッドは、便宜的に用意されています。
Drive | オブジェクト。共有名や空き容量など、システムに接続されたドライブについての情報を収集するためのメソッドとプロパティが格納されています。"ドライブ" は、ハード・ディスクだけでなく、CD-ROM ドライブや RAM ディスクも対象になります。また、ドライブは、必ずしもシステムに物理的に接続されている必要はなく、ネットワークを介して論理的に接続されている場合も対象になります。
Drives | コレクション。システムに物理的または論理的に接続されたドライブの一覧を提供します。Drives コレクションには、種類に関係なくあらゆるドライブが含まれます。リムーバブル メディアは、ドライブにメディアがセットされていなくても Drives コレクションに追加されます。
File | オブジェクト。ファイルの作成、削除、または移動に使用するためのメソッドとプロパティが格納されています。ファイル名、パス、およびその他のプロパティをシステムから取得することもできます。
Files | コレクション。フォルダに格納されたすべてのファイルの一覧を提供します。
Folder | オブジェクト。フォルダの作成、削除、または移動に使用するためのメソッドとプロパティが格納されています。フォルダ名、パス、およびその他のプロパティをシステムから取得することもできます。
Folders | コレクション。Folder オブジェクトに格納されたすべてのフォルダの一覧を提供します。
TextStream | オブジェクト。テキスト ファイルを読み書きできます。


FileSystemObject のプログラミング

FileSystemObject (FSO) オブジェクト モデルでプログラミングする手順は次のとおりです。

  • CreateObject メソッドを使用して FileSystemObject オブジェクトを作成します。
  • 作成したオブジェクトの適切なメソッドを使用します。
  • オブジェクトのプロパティにアクセスします。

FSO オブジェクト モデルは、Scrrun.dll ファイルの中のスクリプティング タイプ ライブラリに格納されています。したがって、Web サーバー上の適切なシステム ディレクトリに Scrrun.dll を配置して FSO オブジェクト モデルを使用する必要があります。

FileSystemObject オブジェクトを作成する

まず、CreateObject メソッドで FileSystemObject オブジェクトを作成します。VBScript では、次のコードを使って FileSystemObject のインスタンスを作成します。

[VBScript]
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
[JScript]
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");

これらの例で、Scripting はタイプ ライブラリの名前、FileSystemObject は作成するオブジェクトの名前です。FileSystemObject のインスタンスは、ほかのインスタンスを何回作成しても 1 つしか作成されません。

適切なメソッドを使用する

次に、FileSystemObject オブジェクトの適切なメソッドを使用します。たとえば、オブジェクトを作成するには、CreateTextFile メソッドまたは CreateFolder メソッドを使用します (FSO オブジェクト モデルでは、ドライブの作成と削除はサポートしていません)。

オブジェクトを削除するには、FileSystemObject オブジェクトの DeleteFile メソッドおよび DeleteFolder メソッド、または File オブジェクトおよび Folder オブジェクトの Delete メソッドを使用します。適切なメソッドを使用して、ファイルおよびフォルダをコピーしたり移動したりすることもできます。

メモ FileSystemObject オブジェクト モデルには、重複した機能があります。たとえば、ファイルをコピーするには、FileSystemObject オブジェクトの CopyFile メソッドかまたは File オブジェクトの Copy メソッドを使用できます。2 つのメソッドは機能的に同じであり、柔軟にプログラミングできるように用意されています。

既存のドライブ、ファイル、およびフォルダにアクセスする

既存のドライブ、ファイル、またはフォルダにアクセスするには、FileSystemObject オブジェクトに用意された次の "get" メソッドから、適切なものを選んで使用します。

  • GetDrive
  • GetFolder
  • GetFile

既存のファイルにアクセスするには、次のコードを使用します。

[VBScript]
Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile("c:\test.txt")
[JScript]
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.GetFile("c:\\test.txt");

作成されたオブジェクトには、"create" 関数によって既にハンドルが返されているので、"get" メソッドを使用しないでください。たとえば、CreateFolder メソッドでフォルダを作成する場合、GetFolder メソッドで Name、Path、Size などのプロパティにはアクセスしないようにします。CreateFolder 関数に変数を設定し、作成されたフォルダへのハンドルを取得した後、そのフォルダのプロパティ、メソッド、およびイベントにアクセスしてください。この処理を VBScript で行うには、次のコードを使用します。

To set a variable to the CreateFolder function, use this syntax:

[VBScript]
Sub CreateFolder
   Dim fso, fldr
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set fldr = fso.CreateFolder("C:\MyTest")
   Response.Write "作成されたフォルダ: " & fldr.Name
End Sub
[JScript]
function CreateFolder()
{
   var fso, fldr;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   fldr = fso.CreateFolder("C:\\MyTest");
   Response.Write("作成されたフォルダ: " + fldr.Name);
}

オブジェクトのプロパティにアクセスする

オブジェクトのハンドルを取得すれば、そのオブジェクトのプロパティにアクセスできます。たとえば、特定のフォルダの名前を取得するには、まずオブジェクトのインスタンスを作成してから、そのオブジェクトのハンドルを特定のメソッドによって取得します (この場合、フォルダは既に存在するので、GetFolder メソッドを使用します)。

GetFolder へのハンドルを取得するには、次のコードを使用します。

[VBScript]
Set fldr = fso.GetFolder("c:\")
[JScript]
var fldr = fso.GetFolder("c:\\");

Folder オブジェクトのハンドルを取得したので、Name プロパティを確認できます。

[VBScript]
Response.Write "フォルダ名: " & fldr.Name
[JScript]
Response.Write("フォルダ名: " + fldr.Name);

ファイルの最終変更日時を確認するには、次の構文を使用します。

[VBScript]
Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
' 照会する File オブジェクトを取得します。
Set f1 = fso.GetFile("c:\detlog.txt")
' 情報を表示します。
Response.Write "最終変更日時: " & f1.DateLastModified
[JScript]
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 照会する File オブジェクトを取得します。
f1 = fso.GetFile("c:\\detlog.txt");
// 情報を表示します。
Response.Write("最終変更日時: " + f1.DateLastModified);


ドライブとフォルダの操作

FileSystemObject (FSO) オブジェクト モデルでは、ドライブとフォルダをプログラムから操作できます。Windows エクスプローラで対話的に処理するのと同じように、フォルダのコピーおよび移動、ドライブおよびフォルダの情報の取得などを実行できます。

ドライブの情報を取得する

Drive オブジェクトでは、ドライブが物理的に接続されているかネットワーク経由であるかに関係なく、システムに接続された各種のドライブについての情報を取得することができます。Drive オブジェクトのプロパティによって、次の情報を取得できます。

  • バイト単位によるドライブの合計サイズ (TotalSize プロパティ)
  • バイト単位によるドライブの空き容量 (AvailableSpace プロパティまたは FreeSpace プロパティ)
  • 割り当てられているドライブ文字 (DriveLetter プロパティ)
  • ドライブの種類。リムーバブル、固定式、ネットワーク、CD-ROM、RAM ディスクなど (DriveType プロパティ)
  • ドライブのシリアル番号 (SerialNumber プロパティ)
  • ドライブが使用するファイル システム。FAT、FAT32、NTFS など (FileSystem プロパティ)
  • ドライブを使用できるかどうか (IsReady プロパティ)
  • 共有名とボリューム名の一方または両方 (ShareName プロパティと VolumeName プロパティ)
  • ドライブのパスまたはルート フォルダ (Path プロパティと RootFolder プロパティ)

サンプル コードを参照すれば、これらのプロパティが FileSystemObject でどのように使用されているかを確認できます。

Drive オブジェクトの使用例

Drive オブジェクトを使用して、ドライブの情報を収集します。次のコードでは、実際の Drive オブジェクトを参照していません。代わりに GetDrive メソッドを使って既存の Drive オブジェクト (ここでは drv) に対する参照を取得しています。

次の例は、Drive オブジェクトを使用する方法を示します。

[VBScript]
Sub ShowDriveInfo(drvPath)
   Dim fso, drv, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set drv = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "ドライブ " & UCase(drvPath) & " - "
   s = s & drv.VolumeName & "<BR>"
   s = s & "合計サイズ: " & FormatNumber(drv.TotalSize / 1024, 0)
   s = s & " KB" & "<BR>"
   s = s & "空き領域: " & FormatNumber(drv.FreeSpace / 1024, 0)
   s = s & " KB" & "<<BR>"
   Response.Write s
End Sub
[JScript]
function ShowDriveInfo1(drvPath)
{
   var fso, drv, s ="";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   drv = fso.GetDrive(fso.GetDriveName(drvPath));
   s += "ドライブ " + drvPath.toUpperCase()+ " - ";
   s += drv.VolumeName + "<br>";
   s += "合計サイズ: " + drv.TotalSize / 1024;
   s += " KB" + "<BR>";
   s += "空き領域: " + drv.FreeSpace / 1024;
   s += " KB" + "<BR>";
   Response.Write(s);
}

フォルダを操作する

フォルダの一般的な処理とそれを実行するメソッドを、次の表に示します。

処理 | メソッド
フォルダを作成する | FileSystemObject.CreateFolder
フォルダを削除する | Folder.Delete または FileSystemObject.DeleteFolder
フォルダを移動する | Folder.Move または FileSystemObject.MoveFolder
フォルダをコピーする | Folder.Copy または FileSystemObject.CopyFolder
フォルダ名を取得する | Folder.Name
ドライブに存在するフォルダを検出する | FileSystemObject.FolderExists
既存の Folder オブジェクトのインスタンスを取得する | FileSystemObject.GetFolder
フォルダの親フォルダの名前を検索する | FileSystemObject.GetParentFolderName
システム フォルダのパスを検索する | FileSystemObject.GetSpecialFolder

サンプル コードを参照すれば、これらのメソッドおよびプロパティが FileSystemObject でどのように使用されているかを確認できます。

次の例では、Folder オブジェクトおよび FileSystemObject オブジェクトを使ってフォルダを操作し、フォルダの情報を取得する方法を示します。

[VBScript]
Sub ShowFolderInfo()
   Dim fso, fldr, s
   ' FileSystemObject オブジェクトのインスタンスを取得します。
   Set fso = CreateObject("Scripting.FileSystemObject")
   ' Drive オブジェクトを取得します。
   Set fldr = fso.GetFolder("c:")
   ' 親フォルダの名前を表示します。
   Response.Write "親フォルダの名前:" & fldr & "<BR>"
   ' ドライブの名前を表示します。
   Response.Write "格納されているドライブ " & fldr.Drive & "<BR>"
   ' ルート ファイルの名前を表示します。
   If fldr.IsRootFolder = True Then
      Response.Write "これはルート フォルダです。"& ""<BR>"<BR>"
   Else
      Response.Write "これはルート フォルダではありません。"& "<BR><BR>"
   End If
   ' FileSystemObject オブジェクトでフォルダを作成します。
   fso.CreateFolder ("C:\Bogus")
   Response.Write "作成したフォルダは C:\Bogus です。" & "<BR>"
   ' フォルダのベース名を表示します。
   Response.Write "ベース名 = " & fso.GetBaseName("c:\bogus") & "<BR>"
   ' 作成されたフォルダを削除します。
   fso.DeleteFolder ("C:\Bogus")
   Response.Write "削除したフォルダは C:\Bogus です。" & "<BR>"
End Sub
[JScript]
function ShowFolderInfo()
{
   var fso, fldr, s = "";
   // FileSystemObject オブジェクトのインスタンスを取得します。
   fso = new ActiveXObject("Scripting.FileSystemObject");
   // Drive オブジェクトを取得します。
   fldr = fso.GetFolder("c:");
   // 親フォルダの名前を表示します。
   Response.Write("親フォルダの名前:" + fldr + "<BR>");
   // ドライブの名前を表示します。
   Response.Write("格納されているドライブ " + fldr.Drive + "<BR>");
   // ルート ファイルの名前を表示します。
   if (fldr.IsRootFolder)
     Response.Write("これはルート フォルダです。");
   else
     Response.Write("これはルート フォルダではありません。");
   Response.Write("<BR><BR>");
   // FileSystemObject オブジェクトでフォルダを作成します。
   fso.CreateFolder ("C:\\Bogus");
   Response.Write("作成したフォルダは C:\\Bogus です。" + "<BR>");
   // フォルダのベース名を表示します。
   Response.Write("ベース名 = " + fso.GetBaseName("c:\\bogus") + "<BR>");
   // 作成されたフォルダを削除します。
   fso.DeleteFolder ("C:\\Bogus");
   Response.Write("削除したフォルダは C:\\Bogus です。" + "<BR>");
}


ファイルの操作

ファイルの操作には、次の 2 つの主要なカテゴリがあります。

  • データの作成、追加、または削除、およびファイルの読み取り
  • ファイルの移動、コピー、および削除

ファイルを作成する

空のテキスト ファイル ("テキスト ストリーム" とも呼ばれます) を作成する方法は 3 つあります。

第一の方法では、CreateTextFile メソッドを使います。次の例は、このCreateTextFileMethodメソッドを使ってテキスト ファイルを作成する方法を示します。

[VBScript]
Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
[JScript]
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);

第二の方法では、ForWriting フラグを設定した状態で FileSystemObject オブジェクトの OpenTextFile メソッドを使用します。

[VBScript]
Dim fso, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting. FileSystemObject")
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True)
[JScript]
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);

第三の方法では、ForWriting フラグを設定した状態で OpenAsTextStream メソッドを使用します。

[VBScript]
Dim fso, f1, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("c:\test1.txt")
Set f1 = fso.GetFile("c:\test1.txt")
Set ts = f1.OpenAsTextStream(ForWriting, True)
[JScript]
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);

ファイルにデータを追加する

テキスト ファイルが作成されたら、次の手順でファイルにデータを追加してください。

テキスト ファイルを開きます。

データを書き込みます。

テキスト ファイルを閉じます。

既存のファイルを開くには、FileSystemObject オブジェクトの OpenTextFile メソッドか、または File オブジェクトの OpenAsTextStream メソッドを使用します。

開いたテキスト ファイルにデータを書き込むには、次の表に示された処理に基づき、TextStream オブジェクトの Write、WriteLine、WriteBlankLines メソッドのいずれかを使用します。

処理 | メソッド
改行文字を末尾に付けないで、テキスト ファイルにデータを書き込む | Write
改行文字を末尾に付けて、テキスト ファイルにデータを書き込む | WriteLine
1 行以上の空白行をテキスト ファイルに書き込む | WriteBlankLines

ファイルを閉じるには、TextStream オブジェクトの Close メソッドを使用します。

メモ 改行文字は、次の行頭にカーソルを進める (キャリッジ リターンまたは行送り) ための文字です。改行文字の個数は、オペレーティング システムによって異なります。このような印刷されない文字が、既に文字列に含まれていることもあります。

次の例は、ファイルを開き、3 つの write メソッドをすべて使用してデータを追加し、ファイルを閉じる方法を示します。

[VBScript]
Sub CreateFile()
   Dim fso, tf
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set tf = fso.CreateTextFile("c:\testfile.txt", True)
   '改行文字を付けて 1 行書き込みます。
   tf.WriteLine("1、2、3 をテストしています。")
   ' ファイルに改行文字を 3 つ書き込みます。
   tf.WriteBlankLines(3)
   '1 行書き込みます。
   tf.Write ("これはテストです。")
   tf.Close
End Sub
[JScript]
function CreateFile()
{
   var fso, tf;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   tf = fso.CreateTextFile("c:\\testfile.txt", true);
   // 改行文字を付けて 1 行書き込みます。
   tf.WriteLine("1、2、3 をテストしています。") ;
   /// ファイルに改行文字を 3 つ書き込みます。
   tf.WriteBlankLines(3) ;
   // 1 行書き込みます。
   tf.Write ("これはテストです。");
   tf.Close();
}

ファイルを読み取る

テキスト ファイルからデータを読み取るには、TextStream オブジェクトの Read、ReadLine、ReadAll メソッドのいずれかを使用します。次の表は、各種の処理に使用されるメソッドを示します。

処理 | メソッド
指定された個数の文字をファイルから読み取る | Read
改行文字直前まで 1 行全体を読み取る | ReadLine
テキスト ファイルの内容をすべて読み取る | ReadAll

Read メソッドまたは ReadLine メソッドを使用する場合、データの特定個所をスキップするには、Skip メソッドまたは SkipLine メソッドを使用します。"read" メソッドで読み取ったテキストは、コントロールに表示できる文字列として保存され、Left、Right、Mid などの文字列関数によって解析され、連結されたり、その他の処理が行われます。

次の例は、ファイルを開き、データを書き込んで読み出す方法を示します。

[VBScript]
Sub ReadFiles
   Dim fso, f1, ts, s
   Const ForReading = 1
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
   '1 行書き込みます。
   Response.Write "ファイルを書き込んでいます。<BR>"
   f1.WriteLine "Hello World"
   f1.WriteBlankLines(1)
   f1.Close
   ' ファイルの内容を読み取ります。
   Response.Write "ファイルを読み取っています。<BR>"
   Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading)
   s = ts.ReadLine
   Response.Write "ファイルの内容 = '" & s & "'"
   ts.Close
End Sub
[JScript]
function ReadFiles()
{
   var fso, f1, ts, s;
   var ForReading = 1;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f1 = fso.CreateTextFile("c:\\testfile.txt", true);
   // 1 行書き込みます。
   Response.Write("ファイルに書き込んでいます。<BR>");
   f1.WriteLine("Hello World");
   f1.WriteBlankLines(1);
   f1.Close();
   // ファイルの内容を読み取ります。
   Response.Write("ファイルを読み取っています。<BR>");
   ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   s = ts.ReadLine();
   Response.Write("ファイルの内容 = '" + s + "'");
   ts.Close();
}

ファイルを移動、コピー、および削除する

次の表のように、FSO オブジェクト モデルには、ファイルを移動、コピー、および削除する方法が 2 つずつあります。

処理 | メソッド
ファイルを移動する | File.Move または FileSystemObject.MoveFile
ファイルをコピーする | File.Copy または FileSystemObject.CopyFile
ファイルを削除する | File.Delete または FileSystemObject.DeleteFile

次の VBScript の例では、ドライブ C のルート ディレクトリに作成したテキスト ファイルに情報を書き込み、そのファイルを \tmp ディレクトリに移動し、ファイルのコピーを \temp ディレクトリに作成した後、両方のディレクトリからコピーを削除しています。

次の例を実行するには、\tmp ディレクトリおよび \temp ディレクトリをドライブ C: のルート ディレクトリに作成します。

[VBScript]
Sub ManipFiles
   Dim fso, f1, f2, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
   Response.Write "ファイルを書き込んでいます。<BR>"
   '1 行書き込みます。
   f1.Write ("これはテストです。")
   ' ファイルを閉じます。
   f1.Close
   Response.Write "c:\tmp にファイルを移動しています。<BR>"
   ' C:\ のルートにあるファイルへのハンドルを取得します。
   Set f2 = fso.GetFile("c:\testfile.txt")
   ' \tmp ディレクトリにファイルを移動します。
   f2.Move ("c:\tmp\testfile.txt")
   Response.Write "c:\temp にファイルをコピーしています。<BR>"
   ' \temp にファイルをコピーします。
   f2.Copy ("c:\temp\testfile.txt")
   Response.Write "ファイルを削除しています。<BR>"
   ' ファイルの現在の位置へのハンドルを取得します。
   Set f2 = fso.GetFile("c:\tmp\testfile.txt")
   Set f3 = fso.GetFile("c:\temp\testfile.txt")
   ' ファイルを削除します。
   f2.Delete
   f3.Delete
   Response.Write "完了しました !"
End Sub
[JScript]
function ManipFiles()
{
   var fso, f1, f2, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f1 = fso.CreateTextFile("c:\\testfile.txt", true);
   Response.Write("ファイルに書き込んでいます。<BR>");
   // 1 行書き込みます。
   f1.Write("これはテストです。");
   / ファイルを閉じます。
   f1.Close();
   Response.Write("c:\\tmp にファイルを移動しています。<BR> ");
   // C:\ のルートにあるファイルへのハンドルを取得します。
   f2 = fso.GetFile("c:\\testfile.txt");
   // \tmp ディレクトリにファイルを移動します。
   f2.Move ("c:\\tmp\\testfile.txt");
   Response.Write("c:\\temp にファイルをコピーしています。<BR>");
   // \temp にファイルをコピーします。
   f2.Copy ("c:\\temp\\testfile.txt");
   Response.Write("ファイルを削除しています。<BR>");
   // ファイルの現在の位置へのハンドルを取得します。
   f2 = fso.GetFile("c:\\tmp\\testfile.txt");
   f3 = fso.GetFile("c:\\temp\\testfile.txt");
   // ファイルを削除します。
   f2.Delete();
   f3.Delete();
   Response.Write("完了しました !");
}


FileSystemObject のサンプル コード

ここで解説するサンプル コードは、FileSystemObject オブジェクト モデルで使用できる多くの機能を示す実例です。このコードは、オブジェクト モデルのすべての機能が連携する方法と、ユーザーが作成したコードで各機能を効果的に使用する方法を示します。

このコードはきわめて一般的なので、使用しているコンピュータで実行するには、いくつかのコードの追加と変更が必要となります。これは、Active Server Page と Windows Scripting Host で、ユーザーに対する入出力の処理が異なるためです。

Active Server Page でこのコードを実行するには、次の手順に従ってください。

拡張子 .asp の付いた標準的な Web ページを作成します。

ファイルの <BODY>...</BODY> タグの間にサンプル コードをコピーします。

すべてのコードを <%...%> タグで囲みます。

Option Explicit ステートメントをコードの現在位置から HTML ページの最上部に移動します。つまり、冒頭の <HTML> タグの前に移動します。

Option Explicit ステートメントを <%...%> タグで囲み、サーバー側で実行されることを確認します。

サンプル コードの末尾に次のコードを追加します。

Sub Print(x)
   Response.Write "<PRE>&ltFONT FACE=""Courier New"" SIZE=""1"">"
   Response.Write x
   Response.Write "</FONT></PRE>"
End Sub
Main

上のコードでは、表示のプロシージャがサーバー側で実行され、結果がクライアント側に表示されます。このコードを Windows Scripting Host で実行するには、サンプル コードの末尾に次のコードを追加します。

Sub Print(x)
   WScript.Echo x
End Sub
Main

コードは次のセクションにあります。

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' FileSystemObject Sample Code
' Copyright 1998 Microsoft Corporation.   All Rights Reserved.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Option Explicit

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' コードの質について
' 1) 次のコードでは、短い文字列を "&" 演算子で連結して、大量の文字列操作を行っています。
'    文字列の連結は煩雑なので、コーディングは効率的でないものの、コードのメンテナンスは容易です。
'    そのような方法をサンプルに採用するのは、このプログラムでは大量のディスク操作が実行され、
'    文字列の連結に必要なメモリの操作よりもディスクの動作の方がずっと低速だからです。
'    これはデモ用のコードであって本番用のコードではないということに注意してください。
'
' 2) "Option Explicit" が指定されているのは、宣言されている変数は宣言されていない変数
'    よりもアクセス速度が少し速いからです。このように指定すると、DriveTypeCDROM を
'    DriveTypeCDORM と打ち間違えてコードにバグを作ってしまうようなこともなくなります。
'
' 3) コードを読みやすくするため、エラー処理は外してあります。
'    一般的な場合にエラーが発生しないように予防措置は講じてありますが、ファイル システム
'    では予想外の問題が起きることもあります。本番用のコードでは、エラーが発生した場合に
'    トラップできるように、On Error Resume Next と Err object を指定してください。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 便利なグローバル変数
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim TabStop
Dim NewLine

Const TestDrive = "C"
Const TestFilePath = "C:\Test"

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Drive.DriveType から返る定数
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const DriveTypeRemovable = 1
Const DriveTypeFixed = 2
Const DriveTypeNetwork = 3
Const DriveTypeCDROM = 4
Const DriveTypeRAMDisk = 5

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' File.Attributes から返る定数
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const FileAttrNormal   = 0
Const FileAttrReadOnly = 1
Const FileAttrHidden = 2
Const FileAttrSystem = 4
Const FileAttrVolume = 8
Const FileAttrDirectory = 16
Const FileAttrArchive = 32
Const FileAttrAlias = 64
Const FileAttrCompressed = 128

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ファイルを開くための定数
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const OpenFileForReading = 1
Const OpenFileForWriting = 2
Const OpenFileForAppending = 8

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShowDriveType
' 用途:
'    指定された Drive オブジェクトのドライブの種類を記述する文字列を生成します。
' 次の要素を表示します。
'  - Drive.DriveType
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function ShowDriveType(Drive)

   Dim S

   Select Case Drive.DriveType
   Case DriveTypeRemovable
      S = "Removable"
   Case DriveTypeFixed
      S = "Fixed"
   Case DriveTypeNetwork
      S = "Network"
   Case DriveTypeCDROM
      S = "CD-ROM"
   Case DriveTypeRAMDisk
      S = "RAM Disk"
   Case Else
      S = "Unknown"
   End Select

   ShowDriveType = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShowFileAttr
' 用途:
'    ファイルまたはフォルダの属性を記述する文字列を生成します。
' 次の要素を表示します。
'  - File.Attributes
'  - Folder.Attributes
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function ShowFileAttr(File) ' File はファイルまたはフォルダ

   Dim S
   Dim Attr

   Attr = File.Attributes

   If Attr = 0 Then
      ShowFileAttr = "Normal"
      Exit Function
   End If

   If Attr And FileAttrDirectory Then S = S & "Directory "
   If Attr And FileAttrReadOnly Then S = S & "Read-Only "
   If Attr And FileAttrHidden Then S = S & "Hidden "
   If Attr And FileAttrSystem Then S = S & "System "
   If Attr And FileAttrVolume Then S = S & "Volume "
   If Attr And FileAttrArchive Then S = S & "Archive "
   If Attr And FileAttrAlias Then S = S & "Alias "
   If Attr And FileAttrCompressed Then S = S & "Compressed "

   ShowFileAttr = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateDriveInformation
' 用途:
'    使用可能なドライブの現在の状態を記述する
'    文字列を生成します。
' 次の要素を表示します。
'  - FileSystemObject.Drives
'  - Iterating the Drives collection
'  - Drives.Count
'  - Drive.AvailableSpace
'  - Drive.DriveLetter
'  - Drive.DriveType
'  - Drive.FileSystem
'  - Drive.FreeSpace
'  - Drive.IsReady
'  - Drive.Path
'  - Drive.SerialNumber
'  - Drive.ShareName
'  - Drive.TotalSize
'  - Drive.VolumeName
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateDriveInformation(FSO)

   Dim Drives
   Dim Drive
   Dim S

   Set Drives = FSO.Drives
   S = "Number of drives:" & TabStop & Drives.Count & NewLine & NewLine

   ' レポートの第 1 行を作成します。
   S = S & String(2, TabStop) & "Drive"
   S = S & String(3, TabStop) & "File"
   S = S & TabStop & "Total"
   S = S & TabStop & "Free"
   S = S & TabStop & "Available"
   S = S & TabStop & "Serial" & NewLine

   ' レポートの第 2 行を作成します。
   S = S & "Letter"
   S = S & TabStop & "Path"
   S = S & TabStop & "Type"
   S = S & TabStop & "Ready?"
   S = S & TabStop & "Name"
   S = S & TabStop & "System"
   S = S & TabStop & "Space"
   S = S & TabStop & "Space"
   S = S & TabStop & "Space"
   S = S & TabStop & "Number" & NewLine

   ' セパレータ
   S = S & String(105, "-") & NewLine

   For Each Drive In Drives
      S = S & Drive.DriveLetter
      S = S & TabStop & Drive.Path
      S = S & TabStop & ShowDriveType(Drive)
      S = S & TabStop & Drive.IsReady

      If Drive.IsReady Then
         If DriveTypeNetwork = Drive.DriveType Then
            S = S & TabStop & Drive.ShareName
         Else
            S = S & TabStop & Drive.VolumeName
         End If
         S = S & TabStop & Drive.FileSystem
         S = S & TabStop & Drive.TotalSize
         S = S & TabStop & Drive.FreeSpace
         S = S & TabStop & Drive.AvailableSpace
         S = S & TabStop & Hex(Drive.SerialNumber)
      End If

      S = S & NewLine

   Next

   GenerateDriveInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateFileInformation
' 用途:
'    ファイルの現在の状態を記述する文字列を生成します。
' 次の要素を表示します。
'  - File.Path
'  - File.Name
'  - File.Type
'  - File.DateCreated
'  - File.DateLastAccessed
'  - File.DateLastModified
'  - File.Size
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateFileInformation(File)

   Dim S

   S = NewLine & "Path:" & TabStop & File.Path
   S = S & NewLine & "Name:" & TabStop & File.Name
   S = S & NewLine & "Type:" & TabStop & File.Type
   S = S & NewLine & "Attribs:" & TabStop & ShowFileAttr(File)
   S = S & NewLine & "Created:" & TabStop & File.DateCreated
   S = S & NewLine & "Accessed:" & TabStop & File.DateLastAccessed
   S = S & NewLine & "Modified:" & TabStop & File.DateLastModified
   S = S & NewLine & "Size" & TabStop & File.Size & NewLine

   GenerateFileInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateFolderInformation
' 用途:
'    フォルダの現在の状態を記述する文字列を生成します。
' 次の要素を表示します。
'  - Folder.Path
'  - Folder.Name
'  - Folder.DateCreated
'  - Folder.DateLastAccessed
'  - Folder.DateLastModified
'  - Folder.Size
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateFolderInformation(Folder)

   Dim S

   S = "Path:" & TabStop & Folder.Path
   S = S & NewLine & "Name:" & TabStop & Folder.Name
   S = S & NewLine & "Attribs:" & TabStop & ShowFileAttr(Folder)
   S = S & NewLine & "Created:" & TabStop & Folder.DateCreated
   S = S & NewLine & "Accessed:" & TabStop & Folder.DateLastAccessed
   S = S & NewLine & "Modified:" & TabStop & Folder.DateLastModified
   S = S & NewLine & "Size:" & TabStop & Folder.Size & NewLine

   GenerateFolderInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateAllFolderInformation
' 用途:
'    フォルダおよびすべてのファイルおよびサブフォルダの現在の状態を
'    記述する文字列を生成します。
' 次の要素を表示します。
'  - Folder.Path
'  - Folder.SubFolders
'  - Folders.Count
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateAllFolderInformation(Folder)

   Dim S
   Dim SubFolders
   Dim SubFolder
   Dim Files
   Dim File

   S = "Folder:" & TabStop & Folder.Path & NewLine & NewLine
   Set Files = Folder.Files

   If 1 = Files.Count Then
      S = S & "There is 1 file" & NewLine
   Else
      S = S & "There are " & Files.Count & " files" & NewLine
   End If

   If Files.Count <> 0 Then
      For Each File In Files
         S = S & GenerateFileInformation(File)
      Next
   End If

   Set SubFolders = Folder.SubFolders

   If 1 = SubFolders.Count Then
      S = S & NewLine & "There is 1 sub folder" & NewLine & NewLine
   Else
      S = S & NewLine & "There are " & SubFolders.Count & " sub folders" _
      NewLine & NewLine
   End If

   If SubFolders.Count <> 0 Then
      For Each SubFolder In SubFolders
         S = S & GenerateFolderInformation(SubFolder)
      Next
      S = S & NewLine
      For Each SubFolder In SubFolders
         S = S & GenerateAllFolderInformation(SubFolder)
      Next
   End If

   GenerateAllFolderInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateTestInformation
' 用途:
'    C:\Test フォルダおよびすべてのファイルおよびサブフォルダの現在の状態を
'    記述する文字列を生成します。
' 次の要素を表示します。
'  - FileSystemObject.DriveExists
'  - FileSystemObject.FolderExists
'  - FileSystemObject.GetFolder
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateTestInformation(FSO)

   Dim TestFolder
   Dim S

   If Not FSO.DriveExists(TestDrive) Then Exit Function
   If Not FSO.FolderExists(TestFilePath) Then Exit Function

   Set TestFolder = FSO.GetFolder(TestFilePath)

   GenerateTestInformation = GenerateAllFolderInformation(TestFolder)

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' DeleteTestDirectory
' 用途:
'    テスト ディレクトリを整理します。
' 次の要素を表示します。
'  - FileSystemObject.GetFolder
'  - FileSystemObject.DeleteFile
'  - FileSystemObject.DeleteFolder
'  - Folder.Delete
'  - File.Delete
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub DeleteTestDirectory(FSO)

   Dim TestFolder
   Dim SubFolder
   Dim File

   ' ファイルを削除するには、次の 2 つの方法があります。

   FSO.DeleteFile(TestFilePath & "\Beatles\OctopusGarden.txt")

   Set File = FSO.GetFile(TestFilePath & "\Beatles\BathroomWindow.txt")
   File.Delete

   ' フォルダを削除するには、次の 2 つの方法があります。
   FSO.DeleteFolder(TestFilePath & "\Beatles")
   FSO.DeleteFile(TestFilePath & "\ReadMe.txt")
   Set TestFolder = FSO.GetFolder(TestFilePath)
   TestFolder.Delete

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' CreateLyrics
' 用途:
'    フォルダ内にいくつかのテキスト ファイルを作成します。
' 次の要素を表示します。
'  - FileSystemObject.CreateTextFile
'  - TextStream.WriteLine
'  - TextStream.Write
'  - TextStream.WriteBlankLines
'  - TextStream.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub CreateLyrics(Folder)

   Dim TextStream

   Set TextStream = Folder.CreateTextFile("OctopusGarden.txt")

   ' この処理によって行送りの文字がファイルに追加されることはありません。
   TextStream.Write("Octopus' Garden ")
   TextStream.WriteLine("(by Ringo Starr)")
   TextStream.WriteBlankLines(1)
   TextStream.WriteLine("I'd like to be under the sea in an octopus' garden in the shade,")
   TextStream.WriteLine("He'd let us in, knows where we've been -- in his octopus' garden in the shade.")
   TextStream.WriteBlankLines(2)

   TextStream.Close

   Set TextStream = Folder.CreateTextFile("BathroomWindow.txt")
   TextStream.WriteLine("She Came In Through The Bathroom Window (by Lennon/McCartney)")
   TextStream.WriteLine("")
   TextStream.WriteLine("She came in through the bathroom window protected by a silver spoon")
   TextStream.WriteLine("But now she sucks her thumb and wanders by the banks of her own lagoon")
   TextStream.WriteBlankLines(2)
   TextStream.Close

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GetLyrics
' 用途:
'    歌詞ファイルの内容を表示します。
' 次の要素を表示します。
'  - FileSystemObject.OpenTextFile
'  - FileSystemObject.GetFile
'  - TextStream.ReadAll
'  - TextStream.Close
'  - File.OpenAsTextStream
'  - TextStream.AtEndOfStream
'  - TextStream.ReadLine
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GetLyrics(FSO)

   Dim TextStream
   Dim S
   Dim File

   ' テキスト ファイルを開く方法とそこからデータを取り出す方法はいくつかあります。
   ' それぞれの方法は次のとおりです。

   Set TextStream = FSO.OpenTextFile(TestFilePath & "\Beatles\OctopusGarden.txt", OpenFileForReading)

   S = TextStream.ReadAll & NewLine & NewLine
   TextStream.Close

   Set File = FSO.GetFile(TestFilePath & "\Beatles\BathroomWindow.txt")
   Set TextStream = File.OpenAsTextStream(OpenFileForReading)
   Do    While Not TextStream.AtEndOfStream
      S = S & TextStream.ReadLine & NewLine
   Loop
   TextStream.Close

   GetLyrics = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' BuildTestDirectory
' 用途:
'    ディレクトリを 1 階層作成して、FileSystemObject を表示します。
'    次の順序で階層を作成します。
'       C:\Test
'       C:\Test\ReadMe.txt
'       C:\Test\Beatles
'       C:\Test\Beatles\OctopusGarden.txt
'       C:\Test\Beatles\BathroomWindow.txt
' 次の要素を表示します。
'  - FileSystemObject.DriveExists
'  - FileSystemObject.FolderExists
'  - FileSystemObject.CreateFolder
'  - FileSystemObject.CreateTextFile
'  - Folders.Add
'  - Folder.CreateTextFile
'  - TextStream.WriteLine
'  - TextStream.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function BuildTestDirectory(FSO)

   Dim TestFolder
   Dim SubFolders
   Dim SubFolder
   Dim TextStream

   ' (a) ドライブが存在しない場合、または (b) 作成されるディレクトリが既に存在する場合に
   ' 処理を終了します。

   If Not FSO.DriveExists(TestDrive) Then
      BuildTestDirectory = False
      Exit Function
   End If

   If FSO.FolderExists(TestFilePath) Then
      BuildTestDirectory = False
      Exit Function
   End If

   Set TestFolder = FSO.CreateFolder(TestFilePath)

   Set TextStream = FSO.CreateTextFile(TestFilePath & "\ReadMe.txt")
   TextStream.WriteLine("My song lyrics collection")
   TextStream.Close

   Set SubFolders = TestFolder.SubFolders
   Set SubFolder = SubFolders.Add("Beatles")
   CreateLyrics SubFolder
   BuildTestDirectory = True

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' メイン ルーチン
' 初めに、テスト ディレクトリといくつかのサブフォルダおよびファイルを作成します。
' 次に、使用可能なディスク ドライブとテスト ディレクトリに関する情報をダンプしてから、
' すべてをもう一度整理します。
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Main

   Dim FSO

   ' グローバル データをを設定します。
   TabStop = Chr(9)
   NewLine = Chr(10)

   Set FSO = CreateObject("Scripting.FileSystemObject")

   If Not BuildTestDirectory(FSO) Then
      Print "テスト フォルダはすでに存在するか、作成することができません。   続行できません。"
      Exit Sub
   End If

   Print GenerateDriveInformation(FSO) & NewLine & NewLine
   Print GenerateTestInformation(FSO) & NewLine & NewLine
   Print GetLyrics(FSO) & NewLine & NewLine
   DeleteTestDirectory(FSO)

End Sub


スクリプト ラインタイム リファレンス

トピック

FileSystemObject のプロパティ
FileSystemObject オブジェクト モデルで使用できるプロパティの一覧です。
FileSystemObject のメソッド
FileSystemObject オブジェクト モデルで使用できるメソッドの一覧です。
FileSystemObject のオブジェクト
FileSystemObject オブジェクト モデルで使用できるオブジェクトの一覧です。
FileSystemObject のコレクション
FileSystemObject オブジェクト モデルで使用できるコレクションの一覧です。

参 照

FileSystemObject の基本
FileSystemObject の基本的なことがらを紹介するガイドです。


FileSystemObject のプロパティ

トピック

AtEndOfLine プロパティ
ファイル ポインタが TextStream ファイル内で行末マーカーの直前にあれば true を返し、直前になければ false を返します。
AtEndOfStream プロパティ
ファイル ポインタが TextStream ファイルの末尾にあれば true を返し、末尾になければ false を返します。
Attributes プロパティ
ファイルまたはフォルダの属性を設定または参照します。
AvailableSpace プロパティ
指定したドライブ上またはネットワーク共有上でユーザーが利用可能な領域の量を返します。
Column プロパティ
TextStream ファイル内での現在の文字位置の列番号を返します。
CompareMode プロパティ
Dictionary オブジェクト内の文字列キーを比較する際の比較モードを設定または参照します。
Count プロパティ
コレクション内または Dictionary オブジェクト内にある項目の数を返します。
DateCreated プロパティ
指定したファイルまたはフォルダが作成された日付と時刻を返します。読み取り専用です。
DateLastAccessed プロパティ
指定したファイルまたはフォルダが最後にアクセスされた日付と時刻を返します。
DateLastModified プロパティ
指定したファイルまたはフォルダが最後に変更された日付と時刻を返します。
Drive プロパティ
指定したファイルまたはフォルダのあるドライブのドライブ名を返します。
DriveLetter プロパティ
物理ローカル ドライブまたはネットワーク共有のドライブ名を返します。
Drives プロパティ
ローカル コンピュータ上で利用可能なすべての Drive オブジェクトからなる Drives コレクションを返します。
DriveType プロパティ
指定したドライブの種類を示す値を返します。
Files プロパティ
指定したフォルダ内にあるすべての File オブジェクトからなる Files コレクションを返します。隠しファイル属性やシステム ファイル属性が設定されたものも含まれます。
FileSystemProperty
指定したドライブで使用されているファイル システムの種類を返します。
FreeSpace プロパティ
指定したドライブ上またはネットワーク共有上でユーザーが利用可能な空き領域の量を返します。
IsReady プロパティ
指定したドライブがレディ状態であれば true を返し、レディ状態でなければ false を返します。
IsRootFolder プロパティ
指定したフォルダがルート フォルダであれば true を返し、ルート フォルダでなければ false を返します。
Item プロパティ
Dictionary オブジェクト内において指定したキーに対応する項目を設定または参照します。コレクションの場合は、指定したに基づくを返します。
Key プロパティ
Dictionary オブジェクト内でキーを設定します。
Line プロパティ
TextStream ファイルにおける現在の行番号を返します。
Name プロパティ
指定したファイルまたはフォルダの名前を設定または参照します。
ParentFolder プロパティ
指定したファイルまたはフォルダの親にあたるフォルダ オブジェクトを返します。
Path プロパティ
指定したファイル、フォルダ、またはドライブのパスを返します。
RootFolder プロパティ
指定したドライブのルート フォルダを表す Folder オブジェクトを返します。
SerialNumber プロパティ
ディスク ボリュームを一意に識別するために使用する 10 進シリアル番号を返します。
ShareName プロパティ
指定したドライブのネットワーク共有名を返します。
ShortName プロパティ
従来の 8.3 命名規則を必要とするプログラムで使用する短い名前を返します。
ShortPath プロパティ
従来の 8.3 命名規則を必要とするプログラムで使用する短いパスを返します。
Size プロパティ
ファイルの場合は、指定したファイルのサイズをバイト単位で返します。フォルダの場合は、フォルダに含まれているすべてのファイルおよびサブフォルダの合計サイズをバイト単位で返します。
SubFolders プロパティ
指定したフォルダ内にあるすべてのフォルダからなる Folders コレクションを返します。隠しファイル属性やシステム ファイル属性が設定されたものも含まれます。
TotalSize プロパティ
ドライブまたはネットワーク共有の総容量をバイト単位で返します。
Type プロパティ
ファイルまたはフォルダの種類に関する情報を返します。
VolumeName プロパティ
指定したドライブのボリューム名を設定または参照します。

参 照

スクリプト ランタイム リファレンス
スクリプト ランタイム リファレンスを構成する要素の一覧です。
FileSystemObject の基本
FileSystemObject の基本的なことがらを紹介するガイドです。


AtEndOfLine プロパティ (FileSystemObject)

Scripting ランタイム ライブラリ

AtEndOfLine プロパティ

TextStream ファイル内でファイル ポインタが行末 (EOL) の直前に置かれている場合に真 (true) を返します。それ以外の場合は、偽 (false) を返します。値の取得のみ可能です。

object.AtEndOfLine

object には、TextStream オブジェクトの名前を指定します。

解説

AtEndOfLine プロパティを使用できるのは、読み取りを行えるように開いた TextStream ファイルに対してだけです。それ以外の場合は、エラーが発生します。

次のコードは、AtEndOfLine プロパティの使用例です。

[JScript]
function GetALine(filespec)
{
   var fso, a, s, ForReading;
   ForReading = 1, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   a = fso.OpenTextFile(filespec, ForReading, false);
   while (!a.AtEndOfLine)
   {
      s += a.Read(1);
   }
   a.Close( );
   return(s);
}
[VBScript]
Function ReadEntireFile(filespec)
   Const ForReading = 1
   Dim fso, theFile, retstring
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set theFile = fso.OpenTextFile(filespec, ForReading, False)
   Do While theFile.AtEndOfLine <> True
      retstring = theFile.Read(1)
   Loop
   theFile.Close
   ReadEntireFile = retstring
End Function

参 照

AtEndOfStream プロパティ

対象: TextStream オブジェクト


AtEndOfStream プロパティ (FileSystemObject)

Scripting ランタイム ライブラリ

AtEndOfStream プロパティ

TextStream ファイル内でファイル ポインタがファイルの最後に置かれている場合に真 (true) を返します。それ以外の場合は、偽 (false) を返します。値の取得のみ可能です。

object.AtEndOfStream

object には、TextStream オブジェクトの名前を指定します。

解説

AtEndOfStream プロパティが使用できるのは、読み取りを行うように開いた TextStream ファイルに対してだけです。それ以外の場合は、エラーが発生します。

次のコードは、AtEndOfStream プロパティの使用例です。

[JScript]
function GetALine(filespec)
{
   var fso, f, s, ForReading;
   ForReading = 1, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.OpenTextFile(filespec, ForReading, false);
   while (!f.AtEndOfStream)
      s += f.ReadLine( );
   f.Close( );
   return(s);
}
[VBScript]
Function ReadEntireFile(filespec)
   Const ForReading = 1
   Dim fso, theFile, retstring
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set theFile = fso.OpenTextFile(filespec, ForReading, False)
   Do While theFile.AtEndOfStream <> True
      retstring = theFile.ReadLine
   Loop
   theFile.Close
   ReadEntireFile = retstring
End Function

参 照

AtEndOfLine プロパティ

対象: TextStream オブジェクト


Attributes プロパティ

ファイルまたはフォルダの属性を設定します。値の取得も可能です。属性によっては、値の取得のみ可能な場合もあります。

object.Attributes [= newattributes]

引数

object
必ず指定します。File オブジェクトまたは Folder オブジェクトの名前を指定します。
newattributes
省略可能です。object に指定したファイルまたはフォルダに与える新しい属性値を指定します。

設定値

newattributes には、次に示す値を指定できます。また、複数の定数を組み合わせて、値の和を指定することもできます。

定数 | 値 | 内容
Normal | 0 | 標準ファイル。どの属性も設定されません。
ReadOnly | 1 | 読み取り専用ファイル。この属性は、値の取得も設定も可能です。
Hidden | 2 | 隠しファイル。この属性は、値の取得も設定も可能です。
System | 4 | システム ファイル。この属性は、値の取得も設定も可能です。
Volume | 8 | ディスク ドライブ ボリューム ラベル。この属性は、値の取得のみ可能です。
Directory | 16 | フォルダまたはディレクトリ。この属性は、値の取得のみ可能です。
Archive | 32 | ファイルが前回のバックアップ以降に変更されているかどうか。この属性は、値の取得も設定も可能です。
Alias | 64 | リンクまたはショートカット。この属性は、値の取得のみ可能です。
Compressed | 128 | 圧縮ファイル。この属性は、値の取得のみ可能です。

解説

次のコードは、ファイルの Attributes プロパティの使用例です。

[JScript]
function ToggleArchiveBit(filespec)
{
   var fso, f, r, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec)
   if (f.attributes && 32)
   {
      f.attributes = f.attributes - 32;
      s = "アーカイブ ビットをオフにしました。";
   }
   else
   {
      f.attributes = f.attributes + 32;
      s =   "アーカイブ ビットをオンにしました。";
   }
   return(s);
}
[VBScript]
Function ToggleArchiveBit(filespec)
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   If f.attributes and 32 Then
      f.attributes = f.attributes - 32
      ToggleArchiveBit = "アーカイブ ビットをオフにしました。"
   Else
      f.attributes = f.attributes + 32
      ToggleArchiveBit = "アーカイブ ビットをオンにしました。"
   End If
End Function

参 照

DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


AvailableSpace プロパティ

指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク容量を返します。

object.AvailableSpace

object には、Drive オブジェクトの名前を指定します。

解説

通常、AvailableSpace プロパティは FreeSpace プロパティと同じ値を返します。これらの 2 つの値が異なる可能性があるのは、コンピュータ システムがディスク クォータ機能をサポートしている場合だけです。

次のコードは、AvailableSpace プロパティの使用例です。

[JScript]
function ShowAvailableSpace(drvPath)
{
   var fso, d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(drvPath));
   s = "ドライブ " + drvPath.toUpperCase() + " - ";
   s += d.VolumeName + "<BR>";
   s += "使用可能な領域 :" + d.AvailableSpace/1024 + " KB";
   return(s);
}
[VBScript]
Function ShowAvailableSpace(drvPath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "Drive " & UCase(drvPath) & " - "
   s = s & d.VolumeName   & "<BR>"
   s = s & "使用可能な領域 : " & FormatNumber(d.AvailableSpace/1024, 0)
   s = s & " KB"
   ShowAvailableSpace = s
End Function

参 照

DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


Column プロパティ (FileSystemObject)

Scripting ランタイム ライブラリ

Column プロパティ

TextStream ファイル内での現在の文字位置のカラム番号を返します。値の取得のみ可能です。

object.Column

object には、TextStream オブジェクトの名前を指定します。

解説

改行を書き込んだ後、ほかの文字を一切書き込んでいない状態での Column プロパティの値は 1 です。

次のコードは、Column プロパティの使用例です。

[JScript]
function GetColumn()
{
   var fso, f, m;
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
   f.Write("Hello World!");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   m = f.ReadLine();
   return(f.Column);
}
[VBScript]
Function GetColumn
   Const ForReading = 1, ForWriting = 2
   Dim fso, f, m
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!"
   f.Close
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   m =   f.ReadLine
   GetColumn = f.Column
End Function

参 照

Line プロパティ

対象: TextStream オブジェクト


CompareMode プロパティ

Dictionary オブジェクトに格納されている文字列キーを比較するときに使用する比較モードを設定して返します。

object.CompareMode[ = compare]

引数

object
必ず指定します。Dictionary オブジェクトの名前を指定します。
compare
省略可能です。比較モードを表す値を指定します。比較モードには、0 (バイナリ)、1 (テキスト)、2 (データベース) を設定できます。特定のロケール ID (LCID) を使って比較を行う場合は、2 より大きい値を指定することになります。

解説

既にデータが格納されている Dictionary オブジェクトの比較モードを変更しようとすると、エラーが発生します。

次のコードは、CompareMode プロパティの使用例です。

[JScript]
function TestCompareMode(key)
{
   // 変数を作成します。
   var a, d;
   var BinaryCompare = 0, TextCompare = 1;
   d = new ActiveXObject("Scripting.Dictionary");
   // 比較モードをテキストに設定します。
   d.CompareMode = TextCompare;
   // キーと項目を追加します。
   d.Add("a", "アテネ");
   d.Add("b", "ベオグラード");
   d.Add("c", "カイロ");
   return(d.Item(key));
}
[VBScript]
Dim d
Set d = CreateObject("Scripting.Dictionary")

d.CompareMode = vbTextCompare
d.Add "a", "アテネ"   ' キーと項目を追加します。
d.Add "b", "ベオグラード"
d.Add "c", "カイロ"
d.Add "B", "バルチモア"  ' Add メソッドは、この行で失敗します。
                         ' これは、Dictionary にすでに b が存在するためです。

参 照

Key プロパティ

対象: Dictionary オブジェクト


DateLastAccessed プロパティ

指定されたファイルまたはフォルダが最後にアクセスされたときの日付と時刻を返します。値の取得のみ可能です。

object.DateLastAccessed

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、ファイルの DateLastAccessed プロパティの使用例です。

[JScript]
function ShowFileAccessInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = filespec.toUpperCase() + "<BR>";
   s += "作成日時 :" + f.DateCreated + "<BR>";
   s += "最終アクセス日時 :" + f.DateLastAccessed + "<BR>";
   s += "最終更新日時 : " + f.DateLastModified;
   return(s);
}
[VBScript]
Function ShowFileAccessInfo(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = UCase(filespec) & "<BR>"
   s = s & "作成日時 : " & f.DateCreated & "<BR>"
   s = s & "最終アクセス日時 : " & f.DateLastAccessed & "<BR>"
   s = s & "最終更新日時 : " & f.DateLastModified
   ShowFileAccessInfo = s
End Function
メモ このプロパティの動作は、使用しているオペレーティング システムに依存します。オペレーティング システムがこの時刻情報の提供をサポートしていない場合は、何も取得されません。

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


DateLastModified プロパティ

指定されたファイルまたはフォルダが最後に更新されたときの日付と時刻を返します。値の取得のみ可能です。

object.DateLastModified

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、ファイルの DateLastModified プロパティの使用例です。

[JScript]
function ShowFileAccessInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = filespec.toUpperCase() + "<BR>";
   s += "作成日時 : " + f.DateCreated + "<BR>";
   s += "最終アクセス日時 : " + f.DateLastAccessed + "<BR>";
   s += "最終更新日時 : " + f.DateLastModified;
   return(s);
}
[VBScript]
Function ShowFileAccessInfo(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = UCase(filespec) & "<BR>"
   s = s & "作成日時 : " & f.DateCreated & "<BR>"
   s = s & "最終アクセス日時 : " & f.DateLastAccessed & "<BR>"
   s = s & "最終更新日時 : " & f.DateLastModified
   ShowFileAccessInfo = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


Drive プロパティ

指定されたファイルまたはフォルダが格納されているドライブの名前を返します。値の取得のみ可能です。

object.Drive

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、Drive プロパティの使用例です。

[JScript]
function ShowFileAccessInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = f.Name + " は、ドライブ " + f.Drive + " にあります。<BR>";
   s += "作成日時 : " + f.DateCreated + "<BR>";
   s += "最終アクセス日時 : " + f.DateLastAccessed + "<BR>";
   s += "最終更新日時 : " + f.DateLastModified;
   return(s);
}
[VBScript]
Function ShowFileAccessInfo(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = f.Name & " は、ドライブ " & UCase(f.Drive) & " にあります。<BR>"
   s = s & "作成日時 : " & f.DateCreated & "<BR>"
   s = s & "最終アクセス日時 : " & f.DateLastAccessed & "<BR>"
   s = s & "最終更新日時 : " & f.DateLastModified
   ShowFileAccessInfo = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


DriveLetter プロパティ

物理ローカル ドライブまたはネットワーク共有のドライブ名を返します。値の取得のみ可能です。

object.DriveLetter

object には、Drive オブジェクトの名前を指定します。

解説

指定したドライブにドライブ名が関連付けられていなかった場合、DriveLetter プロパティの値は長さ 0 の文字列 ("") になります。たとえば、ドライブ名の割り当てられていないネットワークの共有などが該当します。

次のコードは、DriveLetter プロパティの使用例です。

[JScript]
function ShowDriveLetter(drvPath)
{
   var fso, d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(drvPath));
   s = "ドライブ " + d.DriveLetter.toUpperCase( ) + ": - ";
   s += d.VolumeName + "<BR>";
   s += "使用可能な領域 :" + d.AvailableSpace/1024 + " KB";
   return(s);
}
[VBScript]
Function ShowDriveLetter(drvPath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "ドライブ " & d.DriveLetter & ": - "
   s = s & d.VolumeName & "<BR>"
   s = s & "使用可能な領域 : " & FormatNumber(d.FreeSpace/1024, 0)
   s = s & " KB"
   ShowDriveLetter = s
End Function

参 照

AvailableSpace プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


Drives プロパティ

ローカル マシンで利用できるすべての Drive オブジェクトが入った Drives コレクションを返します。

object.Drives

object には、FileSystemObject オブジェクトの名前を指定します。

解説

リムーバブル メディア ドライブは、ドライブにメディアが挿入されていなくても Drives コレクションに含まれます。

[JScript]

次のコードは、Enumerator オブジェクトと for ステートメントを使って Drives コレクション内の各メンバに繰り返し処理を行う例です。

[JScript]

function ShowDriveList()
{
   var fso, s, n, e, x;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);
   s = "";
   for (; !e.atEnd(); e.moveNext())
   {
      x = e.item();
      s = s + x.DriveLetter;
      s += " - ";
      if (x.DriveType == 3)
         n = x.ShareName;
      else if (x.IsReady)
         n = x.VolumeName;
      else
         n = "[ドライブの準備ができていません。]";
      s +=   n + "<BR>";
   }
   return(s);
}

[VBScript]

次のコードは、For Each...Next コンストラクトを使って Drives コレクション内の各メンバに繰り返し処理を行う例です。

[VBScript]
Function ShowDriveList
   Dim fso, d, dc, s, n
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set dc = fso.Drives
   For Each d in dc
      n = ""
      s = s & d.DriveLetter & " - "
      If d.DriveType = 3 Then
         n = d.ShareName
      ElseIf d.IsReady Then
         n = d.VolumeName
      End If
      s = s & n & "<BR>"
   Next
   ShowDriveList = s
End Function

参 照

Drives コレクション | Files プロパティ | SubFolders プロパティ

対象: FileSystemObject オブジェクト


DriveType プロパティ

指定されたドライブの種類を示す値を返します。

object.DriveType

object には、Drive オブジェクトの名前を指定します。

解説

次のコードは、DriveType プロパティの使用例です。

[JScript]
function ShowDriveType(drvpath)
{
   var fso, d, s, t;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(drvpath);
   switch (d.DriveType)
   {
      case 0:t = "不明"; break;
      case 1:t = "リムーバブル ディスク"; break;
      case 2:t = "ハード ディスク"; break;
      case 3:t = "ネットワーク ドライブ"; break;
      case 4: t = "CD-ROM"; break;
      case 5:t = "RAM ディスク"; break;
   }
   s = "ドライブ " + d.DriveLetter + ": - " + t;
   return(s);
}
[VBScript]
Function ShowDriveType(drvpath)
   Dim fso, d, t
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(drvpath)
   Select Case d.DriveType
      Case 0: t = "不明"
      Case 1: t = "リムーバブル ディスク"
      Case 2: t = "ハード ディスク"
      Case 3: t = "ネットワーク ドライブ"
      Case 4: t = "CD-ROM"
      Case 5: t = "RAM ディスク"
   End Select
   ShowDriveType = "ドライブ " & d.DriveLetter & ": - " & t
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


FileSystem プロパティ

指定されたドライブに使用されているファイル システムの種類を返します。

object.FileSystem

object には、Drive オブジェクトの名前を指定します。

解説

取得される可能性のある種類には、FAT、NTFS、CDFS があります。

次のコードは、FileSystem プロパティの使用例です。

[JScript]
function ShowFileSystemType(drvPath)
{
   var fso,d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(drvPath);
   s = d.FileSystem;
   return(s);
}
[VBScript]
Function ShowFileSystemType(drvspec)
   Dim fso,d
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(drvspec)
   ShowFileSystemType = d.FileSystem
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


FreeSpace プロパティ

指定されたドライブまたはネットワーク共有でユーザーが使用できるディスクの空き境域を返します。値の取得のみ可能です。

object.FreeSpace

object には、Drive オブジェクトの名前を指定します。

解説

通常、FreeSpace プロパティは AvailableSpace プロパティと同じ値を返します。これらの 2 つの値が異なる可能性があるのは、コンピュータ システムがディスク クォータ機能をサポートしている場合だけです。

次のコードは、FreeSpace プロパティの使用例です。

[JScript]
function ShowFreeSpace(drvPath)
{
   var fso, d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(drvPath));
   s = "ドライブ " + drvPath.toUpperCase( ) + " - ";
   s += d.VolumeName + "<BR>";
   s += "使用可能な領域 :" + d.FreeSpace/1024 + " KB";
   return(s);
}
[VBScript]
Function ShowFreeSpace(drvPath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "Drive " & UCase(drvPath) & " - "
   s = s & d.VolumeName   & "<BR>"
   s = s & "使用可能な領域 : " & FormatNumber(d.FreeSpace/1024, 0)
   s = s & " KB"
   ShowFreeSpace = s
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


IsReady プロパティ

指定されたドライブの準備ができている場合は真 (true) を返します。準備ができてない場合は偽 (false) を返します。

object.IsReady

object には、Drive オブジェクトの名前を指定します。

解説

リムーバブル ディスク ドライブおよび CD-ROM ドライブの場合は、ドライブにメディアがセットされており、アクセスできる状態にある場合にだけ真 (true) になります。

次のコードは、IsReady プロパティの使用例です。

[JScript]
function ShowDriveInfo(drvpath)
{
   var fso, d, s, t;
   fso = new ActiveXObject("Scripting.FileSystemObject")
   d = fso.GetDrive(drvpath)
   switch (d.DriveType)
   {
      case 0:t = "不明"; break;
      case 1:t = "リムーバブル ディスク"; break;
      case 2:t = "ハード ディスク"; break;
      case 3:t = "ネットワーク ドライブ"; break;
      case 4:t = "CD-ROM"; break;
      case 5:t = "RAM ディスク"; break;
   }
   s = "ドライブ " + d.DriveLetter + ": - " + t;
   if (d.IsReady)
      s += "<BR>" + "ドライブの準備ができています。";
   else
      s += "<BR>" + "ドライブの準備ができていません。";
   return(s);
}
[VBScript]
Function ShowDriveInfo(drvpath)
   Dim fso, d, s, t
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(drvpath)
   Select Case d.DriveType
      Case 0: t = "不明"
      Case 1: t = "リムーバブル ディスク"
      Case 2: t = "ハード ディスク"
      Case 3: t = "ネットワーク ドライブ"
      Case 4: t = "CD-ROM"
      Case 5: t = "RAM ディスク"
   End Select
   s = "Drive " & d.DriveLetter & ": - " & t
   If d.IsReady Then
      s = s & "<BR>" & "ドライブの準備ができています。"
   Else
      s = s & "<BR>" & "ドライブの準備ができていません。"
   End If
   ShowDriveInfo = s
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


IsRootFolder プロパティ

指定されたフォルダがルート フォルダの場合は、真 (true) を返します。ルート フォルダでなければ、偽 (false) を返します。

object.IsRootFolder

object には、Folder オブジェクトの名前を指定します。

解説

次のコードは、IsRootFolder プロパティの使用例です。

[JScript]
function DisplayLevelDepth(pathspec)
{
   var fso, f, n, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(pathspec);
   n = 0;
   if (f.IsRootFolder)
      s = "指定されたフォルダは、ルート フォルダです。"
   else
   {
      do
      {
         f = f.ParentFolder;
         n++;
      }
      while (!f.IsRootFolder)
      s = "指定されたフォルダは、" + n + " レベルだけネストされています。"
   }
   return(s);
}
[VBScript]
Function DisplayLevelDepth(pathspec)
   Dim fso, f, n
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(pathspec)
   If f.IsRootFolder Then
      DisplayLevelDepth = "指定されたフォルダは、ルート フォルダです。"
   Else
      Do Until f.IsRootFolder
         Set f = f.ParentFolder
         n = n + 1
      Loop
      DisplayLevelDepth = "指定されたフォルダは、" & n & " レベルだけネストされています。"
   End If
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: Folder オブジェクト


Line プロパティ

TextStream ファイル内での現在の行番号を返します。値の取得のみ可能です。

object.Line

object には、TextStream オブジェクトの名前を指定します。

解説

ファイルを開いた後、何も書き込んでいない状態での Line プロパティの値は 1 です。

次のコードは、Line プロパティの使用例です。

[JScript]
function GetLine()
{
   var fso, f, r
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject")
   f = fso.OpenTextFile("c:\\textfile.txt", ForWriting, true)
   f.WriteLine("Hello world!");
   f.WriteLine("JScript is fun");
   f.Close();
   f = fso.OpenTextFile("c:\\textfile.txt", ForReading);
   r =   f.ReadAll();
   return(f.Line);
}
[VBScript]
Function GetLine
   Const ForReading = 1, ForWriting = 2
   Dim fso, f, ra
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!" & vbCrLf & "VB Script is fun!" & vbCrLf
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   ra =   f.ReadAll
   GetLine = f.Line
End Function

参 照

Column プロパティ

対象: TextStream オブジェクト


Name プロパティ

指定されたファイルまたはフォルダの名前を設定します。値の取得も可能です。

object.Name [= newname]

引数

object
必ず指定します。File オブジェクトまたは Folder オブジェクトの名前を指定します。
newname
省略可能です。object に指定したドライブの新しい名前を指定します。

解説

次のコードは、Name プロパティの使用例です。

[JScript]
function ShowFileAccessInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = f.Name + " は、ドライブ " + f.Drive + " にあります。<BR>";
   s += "作成日時 : " + f.DateCreated + "<BR>";
   s += "最終アクセス日時 : " + f.DateLastAccessed + "<BR>";
   s += "最終更新日時 : " + f.DateLastModified;
   return(s);
}
[VBScript]
Function ShowFileAccessInfo(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = f.Name & " は、ドライブ " & UCase(f.Drive) & " にあります。<BR>"
   s = s & "作成日時 : " & f.DateCreated & "<BR>"
   s = s & "最終アクセス日時 : " & f.DateLastAccessed & "<BR>"
   s = s & "最終更新日時 : " & f.DateLastModified
   ShowFileAccessInfo = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


ParentFolder プロパティ

指定されたファイルまたはフォルダが格納されているフォルダを表す Folder オブジェクトを返します。値の取得のみ可能です。

object.ParentFolder

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、ファイルの ParentFolder プロパティの使用例です。

[JScript]
function ShowFileAccessInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = f.Name + " + f.ParentFolder + " に格納されています。<BR>";
   s += "作成日時 : " + f.DateCreated + "<BR>";
   s += "最終アクセス日時 : " + f.DateLastAccessed + "<BR>";
   s += "最終更新日時 : " + f.DateLastModified;
   return(s);
}
[VBScript]
Function ShowFileAccessInfo(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = UCase(f.Name) & " & UCase(f.ParentFolder) & " に格納されています。<BR>"
   s = s & "作成日時 : " & f.DateCreated & "<BR>"
   s = s & "最終アクセス日時 : " & f.DateLastAccessed & "<BR>"
   s = s & "最終更新日時 : " & f.DateLastModified
   ShowFileAccessInfo = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


Path プロパティ (FileSystemObject)

Scripting ランタイム ライブラリ

Path プロパティ

指定されたファイル、フォルダ、またはドライブのパスを返します。

object.Path

object には、File オブジェクト、Folder オブジェクト、または Drive オブジェクトの名前を指定します。

解説

ドライブ名の場合、返される文字列にルート ディレクトリは含まれません。たとえば、C ドライブの場合、C:\ ではなく C: が返されます。

次のコードは、File オブジェクトの Path プロパティの使用例です。

[JScript]
function ShowFileAccessInfo(filespec)
{
   var fso, d, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = f.Path.toUpperCase() + "<BR>";
   s += "作成日時 : " + f.DateCreated + "<BR>";
   s += "最終アクセス日時 : " + f.DateLastAccessed + "<BR>";
   s += "最終更新日時 : " + f.DateLastModified
   return(s);
}
[VBScript]
Function ShowFileAccessInfo(filespec)
   Dim fso, d, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = UCase(f.Path) & "<BR>"
   s = s & "作成日時 : " & f.DateCreated & "<BR>"
   s = s & "最終アクセス日時 : " & f.DateLastAccessed & "<BR>"
   s = s & "最終更新日時 : " & f.DateLastModified
   ShowFileAccessInfo = s
End Function

参 照

Attributes プロパティ | AvailableSpace プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | DriveLetter プロパティ | DriveType プロパティ | Files プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder Property | RootFolder Property | SerialNumber プロパティ | ShareName プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | TotalSize プロパティ | Type プロパティ | VolumeName プロパティ

対象: Drive オブジェクト | File オブジェクト | Folder オブジェクト


RootFolder プロパティ

指定されたドライブのルート フォルダを表す Folder オブジェクトを返します。値の取得のみ可能です。

object.RootFolder

object には、Drive オブジェクトの名前を指定します。

解説

取得した Folder オブジェクトを使用すると、ドライブ上に置かれているすべてのファイルおよびフォルダにアクセスできます。

次のコードは、RootFolder プロパティの使用例です。

[JScript]
function GetRootFolder(drv)
{
   var fso,d;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if (fso.DriveExists(drv))
      {
         d = fso.GetDrive(drv);
         return(d.RootFolder);
      }
   else
      return(false);
}
[VBScript]
Function ShowRootFolder(drvspec)
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetDrive(drvspec)
   ShowRootFolder = f.RootFolder
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


SerialNumber プロパティ (FileSystemObject)

Scripting ランタイム ライブラリ

SerialNumber プロパティ

ディスク ボリュームを一意に識別する小数のシリアル番号を返します。

object.SerialNumber

object は常に Drive オブジェクトです。

解説

SerialNumber プロパティを使用して、リムーバブル メディアのドライブに正しいディスクが挿入されたことを確認できます。

次のコードは、SerialNumber プロパティの使用例です。

[JScript]
function ShowDriveInfo(drvpath){
  var fso, d, s, t;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)));
  switch (d.DriveType)
  {
    case 0: t = "不明"; break;
    case 1: t = "リムーバブル ディスク"; break;
    case 2: t = "ハード ディスク"; break;
    case 3: t = "ネットワーク ディスク"; break;
    case 4: t = "CD-ROM"; break;
    case 5: t = "RAM ディスク"; break;
  }
  s = "Drive " + d.DriveLetter + ": - " + t;
  s += "<br>" + "SN: " + d.SerialNumber;
  return(s);
}
[VBScript]
Function ShowDriveInfo(drvpath)
   Dim fso, d, s, t
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
   Select Case d.DriveType
      Case 0: t = "不明"
      Case 1: t = "リムーバブル ディスク"
      Case 2: t = "ハード ディスク"
      Case 3: t = "ネットワーク ディスク"
      Case 4: t = "CD-ROM"
      Case 5: t = "RAM ディスク
   End Select
   s = "Drive " & d.DriveLetter & ": - " & t
   s = s & "<BR>" & "SN: " & d.SerialNumber
   ShowDriveInfo = s
End Function


ShareName プロパティ

指定されたドライブのネットワーク共有名を返します。

object.ShareName

object には、Drive オブジェクトの名前を指定します。

解説

object にネットワーク ドライブでないドライブを指定すると、長さ 0 の文字列 ("") が返されます。

次のコードは、ShareName プロパティの使用例です。

[JScript]
function ShowDriveInfo(drvpath)
{
   var fso, d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)));
   s = "ドライブ " + d.DriveLetter + ": - " + d.ShareName;
   return(s);
}
[VBScript]
Function ShowDriveInfo(drvpath)
   Dim fso, d
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
   ShowDriveInfo = "ドライブ " & d.DriveLetter & ": - " & d.ShareName
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | TotalSize プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


ShortName プロパティ

従来の 8.3 形式のファイル名が必要なプログラムのために、短いファイル名を返します。

object.ShortName

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、File オブジェクトの ShortName プロパティの使用例です。

[JScript]
function ShowShortName(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = "ファイル名 : " + "" + f.Name;
   s += "" + "<BR>";
   s += "短いファイル名 : " + "" + f.ShortName + "";
   return(s);
}
[VBScript]
Function ShowShortName(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = "ファイル名 : " & "" & UCase(f.Name) & "" & "<BR>"
   s = s & "短いファイル名 : " & f.ShortName
   ShowShortName = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


ShortPath プロパティ

従来の 8.3 形式のファイル名が必要なプログラムのために、短いパス名を返します。

object.ShortPath

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、File オブジェクトの ShortName プロパティの使用例です。

[JScript]
function ShowShortPath(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = "パス名 : " + "" + f.Name;
   s += "" + "<BR>";
   s += "短いパス名 : " + "" + f.ShortPath + "";
   return(s);
}
[VBScript]
Function ShowShortName(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = "パス名 : " & "" & UCase(f.Name) & "" & "<BR>"
   s = s & "短いパス名 : " & f.ShortName
   ShowShortName = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


Size プロパティ

ファイルの場合、指定されたファイルのバイト単位のサイズを返します。フォルダの場合、指定されたフォルダ内のすべてのファイルおよびフォルダの合計サイズをバイト単位で返します。

object.Size

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、Folder オブジェクトの Size プロパティの使用例です。

[JScript]
function ShowFolderSize(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(filespec);
   s = f.Name + " は、" + f.size + " バイト使用しています。";
   return(s);
}
[VBScript]
 Function ShowFolderSize(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(filespec)
   s = UCase(f.Name) & " は、" & f.size & " バイト使用しています。"
   ShowFolderSize = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


SubFolders プロパティ

指定されたフォルダ内にあるすべてのフォルダの入った Folders コレクションを返します。このコレクションには、隠しファイルやシステム ファイルの属性を持つフォルダも含まれます。

object.SubFolders

object には、Folder オブジェクトの名前を指定します。

解説

次のコードは、SubFolders プロパティの使用例です。

[JScript]
function ShowFolderList(folderspec)
{
   var fso, f, fc, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
   fc = new Enumerator(f.SubFolders);
   s = "";
   for (;!fc.atEnd(); fc.moveNext())
      {
         s += fc.item();
         s += "<BR>";
      }
      return(s);
}
[VBScript]
Function ShowFolderList(folderspec)
   Dim fso, f, f1, s, sf
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set sf = f.SubFolders
   For Each f1 in sf
      s = s & f1.name
      s = s & "<BR>"
   Next
   ShowFolderList = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | Type プロパティ

対象: Folder オブジェクト


TotalSize プロパティ

ドライブまたはネットワーク共有の総容量をバイト単位で返します。

object.TotalSize

object には、Drive オブジェクトの名前を指定します。

解説

次のコードは、TotalSize プロパティの使用例です。

[JScript]
function SpaceReport(drvPath)
{
   var fso, d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(drvPath));
   s = "ドライブ " + drvPath + " - ";
   s += d.VolumeName + "<BR>";
   s += "合計サイズ :"+ d.TotalSize/1024 + " KB <BR>";
   s += "空き領域:   " + d.FreeSpace/1024 + " KB";
   return(s);
}
[VBScript]
Function ShowSpaceInfo(drvpath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
   s = "ドライブ " & d.DriveLetter & ":"
   s = s & vbCrLf
   s = s & "合計サイズ : " & FormatNumber(d.TotalSize/1024, 0) & " KB"
   s = s & vbCrLf
   s = s & "空き領域 : " & FormatNumber(d.AvailableSpace/1024, 0) & " KB"
   ShowSpaceInfo = s
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | VolumeName プロパティ

対象: Drive オブジェクト


Type プロパティ

ファイルまたはフォルダの種類に関する情報を返します。たとえば、名前が .TXT の拡張子で終わるファイルの場合なら、"テキスト文書" という文字列が返されます。

object.Type

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、フォルダの種類を取得するための Type プロパティの使用例です。このサンプルで、[ごみ箱] などの特殊フォルダをプロシージャに指定してみてください。

[JScript]
function ShowFileType(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if (fso.FolderExists(filespec))
      f = fso.GetFolder(filespec);
   else if (fso.FileExists(filespec))
      f = fso.GetFile(filespec);
   else
      s = "ファイルまたはフォルダが存在しません。";
   s = f.Name + " は、" + f.Type + " です。";
   return(s);
}
[VBScript]
Function ShowFolderType(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(filespec)
   s = UCase(f.Name) & " は、" & f.Type & " です。"
   ShowFolderType = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ

対象: File オブジェクト | Folder オブジェクト


VolumeName プロパティ

指定されたドライブのボリューム名を設定または返します。値の取得も可能です。

object.VolumeName [= newname]

引数

object
必ず指定します。Drive オブジェクトの名前を指定します。
newname
省略可能です。object に指定したドライブの新しい名前を指定します。

解説

次のコードは、VolumeName プロパティの使用例です。

[JScript]
function SpaceReport(drvPath)
{
   var fso, d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(drvPath));
   s = "ドライブ " + drvPath + " - ";
   s += d.VolumeName + "<BR>";
   s += "合計サイズ:"+ d.TotalSize/1024 + " KB <BR>";
   s += "空き領域:   " + d.FreeSpace/1024 + " KB";
   return(s);
}
[VBScript]
Function ShowVolumeInfo(drvpath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d =
fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
   s = "ドライブ " & d.DriveLetter & ": - " & d.VolumeName
   ShowVolumeInfo = s
End Function

参 照

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ

対象: Drive オブジェクト


FileSystemObject のメソッド

トピック

Add メソッド (Dictionary)
キーと項目のペアを Dictionary オブジェクトに追加します。
Add メソッド (Folders)
新しいフォルダを Folders コレクションに追加します。
BuildPath メソッド
名前を既存のパスの末尾に付加します。
Close メソッド
開いている TextStream ファイルを閉じます。
Copy メソッド
指定したファイルまたはフォルダを、ある場所から別の場所にコピーします。
CopyFile メソッド
1 つまたは複数のファイルを、ある場所から別の場所にコピーします。
CopyFolder メソッド
フォルダを、ある場所から別の場所に再帰的にコピーします。
CreateFolder メソッド
フォルダを作成します。
CreateTextFile メソッド
指定した名前のファイルを作成し、そのファイルの読み取り、書き込みに使用できる TextStream オブジェクトを返します。
Delete メソッド
指定したファイルまたはフォルダを削除します。
DeleteFile メソッド
指定したファイルを削除します。
DeleteFolder メソッド
指定したフォルダとその中身を削除します。
DrivesExists メソッド
指定したドライブが存在すれば true を返し、存在しなければ false を返します。
Exists メソッド
指定したキーが Dictionary オブジェクト内に存在すれば true を返し、存在しなければ false を返します。
FileExists メソッド
指定したファイルが存在すれば true を返し、存在しなければ false を返します。
FolderExists メソッド
指定したフォルダが存在すれば true を返し、存在しなければ false を返します。
GetAbsolutePathName メソッド
指定したパスから、省略されていない完全なパスを返します。
GetBaseName メソッド
パスの最後の構成要素のベース名 (ファイル拡張子を除いたもの) を表す文字列を返します。
GetDrive メソッド
指定したパスのドライブに対応する Drive オブジェクトを返します。
GetDriveName メソッド
指定したパスのドライブ名を表す文字列を返します。
GetExtensionName メソッド
パスの最後の構成要素の拡張子名を表す文字列を返します。
GetFile メソッド
指定したパスにあるファイルに対応する File オブジェクトを返します。
GetFileName メソッド
指定したパスの最後の構成要素のうちドライブ指定以外の部分を返します。
GetFileVersion メソッド
指定したファイルのバージョン番号を返します。
GetFolder メソッド
指定したパスにあるフォルダに対応する Folder オブジェクトを返します。
GetParentFolderName メソッド
指定したパスの最後の構成要素の親フォルダ名を表す文字列を返します。
GetSpecialFolder メソッド
指定した特殊フォルダのオブジェクトを返します。
GetTempName メソッド
ランダムに生成される一時ファイルまたは一時フォルダの名前を返します。これらは一時ファイルや一時フォルダを必要とする処理を実行する際に便利です。
Items メソッド
Dictionary オブジェクト内のすべての項目を格納した配列を返します。
Keys メソッド
Dictionary オブジェクト内のすべての既存のキーを格納した配列を返します。
Move メソッド
指定したファイルまたはフォルダを、ある場所から別の場所に移動します。
MoveFile メソッド
1 つまたは複数のファイルを、ある場所から別の場所に移動します。
MoveFolder メソッド
1 つまたは複数のフォルダを、ある場所から別の場所に移動します。
OpenAsTextStream メソッド
指定したファイルを開き、ファイルの読み書きや追加書き込みに使用できる TextStream オブジェクトを返します。
OpenTextFile メソッド
指定したファイルを開き、ファイルの読み書きや追加書き込みに使用できる TextStream オブジェクトを返します。
Read メソッド
指定した数の文字を TextStream ファイルから読み取り、その結果の文字列を返します。
ReadAll メソッド
TextStream ファイル全体を読み取り、その結果の文字列を返します。
ReadLine メソッド
TextStream ファイルから 1 行 (改行文字を含まない) を読み取り、その結果の文字列を返します。
Remove メソッド
キーと項目の 1 組のペアを Dictionary オブジェクトから削除します。
RemoveAll メソッド
すべてのキーと項目のペアを Dictionary オブジェクトから削除します。
Skip メソッド
TextStream ファイルを読み取るときに、指定した文字数をスキップします。
SkipLine
TextStream ファイルを読み取るときに、次の行をスキップします。
Write メソッド
指定した文字列を TextStream ファイルに書き込みます。
WriteBlankLines メソッド
指定した数の改行文字を TextStream ファイルに書き込みます。
WriteLine メソッド
指定した文字列と改行文字を TextStream ファイルに書き込みます。

参 照

スクリプト ランタイム リファレンス
スクリプト ランタイム リファレンスを構成する要素の一覧です。
FileSystemObject の基本
FileSystemObject の基本的なことがらを紹介するガイドです。


Add メソッド (Folders コレクション)

Folders コレクションに新しい Folder オブジェクトを追加します。

object.Add (folderName)

引数

object
必ず指定します。Folders コレクションの名前を指定します。
folderName
必ず指定します。新しく追加する Folder オブジェクトの名前を指定します。

解説

次のコードは、新しいフォルダを作成する Add メソッドの使用例です。

[JScript]
function AddNewFolder(path,folderName)
{
   var fso, f, fc, nf;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(path);
   fc = f.SubFolders;
   if (folderName != "" )
      nf = fc.Add(folderName);
   else
      nf = fc.Add("新しいフォルダ");
}
[VBScript]
Sub AddNewFolder(path, folderName)
   Dim fso, f, fc, nf
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(path)
   Set fc = f.SubFolders
   If folderName <> "" Then
      Set nf = fc.Add(folderName)
   Else
      Set nf = fc.Add("新しいフォルダ")
   End If
End Sub

既存のフォルダ名を引数 folderName に指定すると、エラーが発生します。

参 照

Add メソッド (Dictionary オブジェクト)

対象: Folders コレクション


BuildPath メソッド

既存のパスの末尾に名前を追加します。

object.BuildPath(path, name)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
path
必ず指定します。引数 name で指定した名前を末尾に追加する既存パスを指定します。絶対パスまたは相対パスのどちらかを指定できます。また、必ず既存のフォルダを指定する必要はありません。
name
必ず指定します。引数 path で指定したパスの末尾に追加する名前を指定します。

解説

必要な場合に限り、BuildPath メソッドは既存のパスと指定した名前の間にパスの区切り文字を挿入します。

次のコードは、BuildPath メソッドの使用例です。

[JScript]
function GetBuildPath(path)
{
   var fso, newpath;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   newpath = fso.BuildPath(path, "新しいフォルダ");
   return(newpath);
}
[VBScript]
Function GetBuildPath(path)
   Dim fso, newpath
   Set fso = CreateObject("Scripting.FileSystemObject")
   newpath = fso.BuildPath(path, "サブ フォルダ")
   GetBuildPath = newpath
End Function

参照

GetAbsolutePathName メソッド | GetBaseNam メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFileName メソッド | GetParentFolderName メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


Close メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

Close メソッド

開いた状態の TextStream ファイルを閉じます。

object.Close( );

object には、TextStream オブジェクトの名前を指定します。

解説

次のコードは、Close メソッドの使用例です。

[JScript]
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("これはテストです。");
a.Close();
[VBScript]
Sub CreateAFile
   Dim fso, MyFile
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
   MyFile.WriteLine("これはテストです。")
   MyFile.Close
End Sub


Copy メソッド

指定したファイルまたはフォルダを別の場所にコピーします。

object.Copy( destination[, overwrite] );

引数

object
必ず指定します。File オブジェクトまたは Folder オブジェクトの名前を指定します。
destination
必ず指定します。ファイルまたはフォルダのコピー先を指定します。ワイルドカード文字は使用できません。
overwrite
省略可能です。既存ファイルや既存フォルダを上書きする場合は、真 (true) を指定します (既定)。上書きしない場合は、偽 (false) を指定します。

解説

File オブジェクトまたは Folder オブジェクトに対して実行した Copy メソッドの結果は、FileSystemObject.CopyFile メソッドまたは FileSystemObject.CopyFolder メソッドを使用して実行するのと同じ結果になります。これらのメソッドを使用する場合は、object に指定するファイルまたはフォルダをメソッドの引数として渡すことになります。これらの代替メソッドを使用した場合は、複数のファイルやフォルダをコピーすることもできます。

使用例

次のコードは、Copy メソッドの使用例です。

[JScript]
var fso, f;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.CreateTextFile("c:\\testfile.txt", true);
f.WriteLine("これはテストです。");
f.Close();
f = fso.GetFile("c:\\testfile.txt");
f.Copy("c:\\windows\\desktop\\test2.txt");
[VBScript]
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("これはテストです。")
MyFile.Close
Set MyFile = fso.GetFile("c:\testfile.txt")
MyFile.Copy ("c:\windows\desktop\test2.txt")

参 照

CopyFile メソッド | CopyFolder メソッド | Delete メソッド | Move メソッド | OpenAsTextStream メソッド

対象: File オブジェクト | Folder オブジェクト


CopyFile メソッド

ファイルを別の場所へコピーします。

object.CopyFile ( source, destination[, overwrite] )

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
source
必ず指定します。コピーするファイルを表す文字列を指定します。1 つ以上のファイルを指定するためにワイルドカード文字を使用することもできます。
destination
必ず指定します。引数 source で指定したファイルのコピー先を表す文字列を指定します。ワイルドカード文字は使用できません。
overwrite
省略可能です。既存ファイルを上書きするかどうかを示すブール値を指定します。真 (true) を指定すると既存フォルダ内のファイルは上書きされ、偽 (false) を指定すると上書きされません。既定値は、真 (true) です。引数 destination に指定したコピー先が読み取り専用の属性を持っていた場合は、引数 overwrite に指定した値とは関係なく CopyFile メソッドの処理は失敗するので、注意する必要があります。

解説

ワイルドカード文字は、引数 source に指定する最後の構成要素内でのみ使用できます。次のような使い方が可能です。

[JScript]
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFile ("c:\\mydocuments\\letters\\*.doc", "c:\\tempfolder\\")
[VBScript]
FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"

次のような使い方はできません。

[JScript]
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFile ("c:\\mydocuments\\*\\R1???97.xls", "c:\\tempfolder")
[VBScript]
FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"

引数 source にワイルドカード文字を使用したとき、および引数 destination がパスの区切り文字 (\) で終わっているとき、引数 destination には既存フォルダを指定したと判断され、条件に一致するファイルがそのフォルダ内へコピーされます。それ以外のときは、引数 destination には作成するファイルの名前を指定したと判断されます。いずれの場合も、コピーされる各ファイルで発生する処理の実行は 3 種類あります。

  • 引数 destination に指定したファイルが存在しない場合、引数 source に指定したファイルがコピーされます。これが通常の場合です。
  • 引数 destination に指定したファイルが存在する場合、引数 overwrite に偽 (false) を指定しているとエラーが発生します。真 (true) を指定していると引数 source に指定したファイルがコピーされ、既存ファイルは上書きされます。
  • 引数 destination がディレクトリの場合、エラーが発生します。

引数 source でワイルドカード文字を使用した指定がどのファイルとも一致しなかった場合も、エラーが発生します。CopyFile メソッドは、最初のエラーが発生した時点で処理を中止します。エラーが発生するまでに行った処理を取り消したり元に戻したりする処理は一切行われません。

参 照

Copy メソッド | CopyFolder メソッド | CreateTextFile メソッド | DeleteFile メソッド | MoveFile メソッド

対象: FileSystemObject オブジェクト


CopyFolder メソッド

フォルダを再帰的に別の場所へコピーします。

object.CopyFolder ( source, destination[, overwrite] );

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
source
必ず指定します。フォルダを表す文字列を指定します。1 つ以上のフォルダを指定するためにワイルドカード文字を使用できます。
destination
必ず指定します。引数 source で指定したフォルダおよびサブフォルダのコピー先を表す文字列を指定します。ワイルドカード文字は使用できません。
overwrite
省略可能です。既存フォルダを上書きするかどうかを示すブール値を指定します。真 (true) を指定すると既存フォルダ内のファイルは上書きされ、偽 (false) を指定すると上書きされません。既定値は、真 (true) です。

解説

ワイルドカード文字は、引数 source に指定する最後の構成要素内でのみ使用できます。次のような使い方が可能です。

[JScript]
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFolder ("c:\\mydocuments\\letters\\*", "c:\\tempfolder\\")
[VBScript]
FileSystemObject.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\"

次の方法では使用できません。

[JScript]
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFolder ("c:\\mydocuments\\*\\*", "c:\\tempfolder\\")
[VBScript]
FileSystemObject.CopyFolder "c:\mydocuments\*\*", "c:\tempfolder\"

引数 source にワイルドカード文字を使用したとき、および引数 destination がパスの区切り文字 (\) で終わるときは、引数 destination には既存フォルダを指定したと判断され、条件に一致するフォルダおよびサブフォルダがそのフォルダ内へコピーされます。それ以外のときは、引数 destination には作成するフォルダの名前を指定したと判断されます。いずれの場合も、各フォルダのコピーで実行される可能性のある処理は 4 種類あります。

  • 引数 destination に指定したフォルダが存在しない場合、引数 source に指定したフォルダおよびそのフォルダ内のすべてのファイルとフォルダがコピーされます。これが通常の場合です。
  • 引数 destination に指定したファイルが存在する場合、エラーが発生します。
  • 引数 destination がディレクトリの場合、指定したフォルダおよびそのフォルダ内のすべてのファイルとフォルダをコピーしようとします。引数 source で指定したフォルダ内のファイルと同じ名前のファイルが引数 destination で指定したフォルダ内に既にある場合、引数 overwrite に偽 (false) を指定しているとエラーが発生します。真 (true) を指定していると、ファイルがコピーされ、既存ファイルは上書きされます。
  • 引数 destination に指定したのが読み取り専用のディレクトリの場合、引数 overwrite に偽 (false) を指定していて、既存の読み取り専用ファイルをコピー先ディレクトリ内へコピーしようとすると、エラーが発生します。

引数 source でワイルドカード文字を使用した指定がどのフォルダとも一致しなかった場合も、エラーが発生します。

CopyFolder メソッドは、最初のエラーが発生した時点で処理を中止します。エラーが発生するまでに行った処理を取り消したり元に戻したりする処理は一切行われません。

参 照

CopyFile メソッド | Copy メソッド | CreateFolder メソッド | DeleteFolder メソッド | MoveFolder メソッド

対象: FileSystemObject オブジェクト


CreateFolder メソッド

フォルダを作成します。

object.CreateFolder(foldername)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
foldername
必ず指定します。作成するフォルダを表す文字列式を指定します。

解説

指定したフォルダが既に存在していた場合は、エラーが発生します。

次のコードは、CreateFolder メソッドの使用例です。

[JScript]
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateFolder("c:\\new folder");
[VBScript]
Function CreateFolderDemo
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.CreateFolder("c:\New Folder")
   CreateFolderDemo = f.Path
End Function

参 照

CopyFolder メソッド | DeleteFolder メソッド | MoveFolder メソッド

対象: FileSystemObject オブジェクト


CreateTextFile メソッド

指定した名前のファイルを作成し、作成したファイルの読み取りまたは書き込みに使用できる TextStream オブジェクトを返します。

object.CreateTextFile(filename[, overwrite[, unicode]])

引数

object
必ず指定します。FileSystemObject オブジェクトまたは Folder オブジェクトの名前を指定します。
filename
必ず指定します。作成するファイルの名前を文字列式で指定します。
overwrite
省略可能です。既存ファイルの場合に上書きするかどうかを示すブール値を指定します。上書きする場合は真 (true) を、上書きしない場合は偽 (false) を指定します。省略した場合は、既存ファイルは上書きされません。
unicode
省略可能です。Unicode ファイルと ASCII ファイルのどちらを作成するかを示すブール値を指定します。Unicode ファイルを作成する場合は真 (true) を、ASCII ファイルを作成する場合は偽 (false) を指定します。省略した場合は、ASCII ファイルが作成されます。

解説

次のコードは、CreateTextFile メソッドを使ってテキスト ファイルを作成する例です。

[JScript]
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("これはテストです。");
a.Close();
[VBScript]
Sub CreateAfile
   Dim fso, MyFile
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
   MyFile.WriteLine("これはテストです。")
   MyFile.Close
End Sub

引数 overwrite に偽 (false) を指定した場合、または省略した場合、引数 filename に既存のファイル名を指定するとエラーが発生します。

参 照

CreateFolder メソッド | OpenAsTextStream メソッド | OpenTextFile メソッド

対象: FileSystemObject オブジェクト | Folder オブジェクト


DateCreated プロパティ

指定されたファイルまたはフォルダの作成された日付と時刻を返します。値の取得のみ可能です。

object.DateCreated

object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。

解説

次のコードは、ファイルの DateCreated プロパティの使用例です。

[JScript]
function ShowFileInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = "作成日時: " + f.DateCreated;
   return(s);
}
[VBScript]
Function ShowFileInfo(filespec)
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   ShowFileInfo = "作成日時: " & f.DateCreated
End Function

参 照

Attributes プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: File オブジェクト | Folder オブジェクト


Delete メソッド

指定されたファイルまたはフォルダを削除します。

object.Delete( force );

引数

object
必ず指定します。File オブジェクトまたは Folder オブジェクトの名前を指定します。
force
省略可能です。読み取り専用属性がオンになっているファイルやフォルダも削除の対象とする場合は真 (true) を、読み取り専用のファイルやフォルダは削除しない場合は偽 (false) (既定) を指定します。

解説

指定したファイルまたはフォルダが存在しなかった場合は、エラーが発生します。

File オブジェクトまたは Folder オブジェクトに対して実行した Delete メソッドの結果は、FileSystemObject.DeleteFile メソッドまたは FileSystemObject.DeleteFolder メソッドを使用して実行するのと同じ結果になります。

Delete メソッドでは、ほかのフォルダやファイルを含むフォルダと何も含まないフォルダとは区別されません。指定したフォルダは、ほかのファイルやフォルダが格納されているかどうかに関係なく削除されます。

次のコードは、Delete メソッドの使用例です。

[JScript]
var fso, f;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.CreateTextFile("c:\\testfile.txt", true);
f.WriteLine("これはテストです。");
f.Close();
f = fso.GetFile("c:\\testfile.txt");
f.Delete();
[VBScript]
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("これはテストです。")
MyFile.Close
Set MyFile = fso.GetFile("c:\testfile.txt")
MyFile.Delete

参 照

Copy メソッド | DeleteFile メソッド | DeleteFolder メソッド | Move メソッド | OpenAsTextStream メソッド

対象: File オブジェクト | Folder オブジェクト


DeleteFile メソッド

指定されたファイルを削除します。

object.DeleteFile ( filespec[, force] );

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
filespec
必ず指定します。削除するファイルの名前を指定します。パスの最後の構成要素内ではワイルドカード文字も使用できます。
force
省略可能です。真 (true) を指定すると、読み取り専用の属性を持つファイルも削除されます。偽 (false) を指定すると、読み取り専用ファイルは削除されません (既定値)。

解説

名前の一致するファイルが見つからない場合は、エラーが発生します。DeleteFile メソッドは、最初のエラーが発生した時点で処理を中止します。エラーが発生するまでに行った処理を、取り消したり元に戻したりする処理は一切行われません。

次のコードは、DeleteFile メソッドの使用例です。

[JScript]
function DeleteFile(filespec)
{
   var fso;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.DeleteFile(filespec);
}
[VBScript]
Sub DeleteAFile(filespec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   fso.DeleteFile(filespec)
End Sub

参 照

CopyFile メソッド | CreateTextFile メソッド | Delete メソッド | DeleteFolder メソッド | MoveFile メソッド

対象: FileSystemObject オブジェクト


DeleteFolder メソッド

指定されたフォルダおよびそのフォルダ内のフォルダとファイルを削除します。

object.DeleteFolder ( folderspec[, force] );

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
folderspec
必ず指定します。削除するフォルダの名前を指定します。パスの最後の構成要素内ではワイルドカード文字を使用できます。
force
省略可能です。真 (true) を指定すると、読み取り専用の属性を持つフォルダも削除されます。偽 (false) を指定すると、読み取り専用フォルダは削除されません (既定値)。

解説

DeleteFolder メソッドでは、ほかのフォルダやファイルを含むフォルダと何も含まないフォルダとは区別されません。指定したフォルダは、ほかのファイルやフォルダが格納されているかどうかに関係なく削除されます。

名前の一致するフォルダが見つからない場合は、エラーが発生します。DeleteFolder メソッドは、最初のエラーが発生した時点で処理を中止します。エラーが発生するまでに行った処理を、取り消したり元に戻したりする処理は一切行われません。

次のコードは、DeleteFolder メソッドの使用例です。

[JScript]
function DeleteFolder(folderspec)
{
   var fso;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.DeleteFolder(folderspec);
}
[VBScript]
Sub DeleteAFolder(filespec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   fso.DeleteFolder(filespec)
End Sub

参 照

CopyFolder メソッド | CreateFolder メソッド | Delete メソッド | DeleteFile メソッド | MoveFolder メソッド

対象: FileSystemObject オブジェクト


DriveExists メソッド

指定されたドライブが存在する場合は、真 (true) を返します。存在しない場合は、偽 (false) を返します。

object.DriveExists(drivespec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
drivespec
必ず指定します。ドライブ名またはフル パスを指定します。

解説

リムーバブル メディアのドライブの場合は、メディアがセットされていなくても真 (true) が返されます。ドライブの準備ができているかどうかを調べるには、Drive オブジェクトの IsReady プロパティを使用してください。

次のコードは、DriveExists メソッドの使用例です。

[JScript]
function ReportDriveStatus(drv)
{
   var fso, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if (fso.DriveExists(drv))
      s += "ドライブ " + drv + " は、存在します。";
   else
      s += "ドライブ " + drv + " は、存在しません。";
   return(s);
}
[VBScript]
Function ReportDriveStatus(drv)
   Dim fso, msg
   Set fso = CreateObject("Scripting.FileSystemObject")
   If fso.DriveExists(drv) Then
      msg = ("ドライブ " & UCase(drv) & " は、存在します。")
   Else
      msg = ("ドライブ " & UCase(drv) & " は、存在しません。")
   End If
   ReportDriveStatus = msg
End Function

参 照

Drive オブジェクト | Drives コレクション | FileExists メソッド | FolderExists メソッド | GetDrive メソッド | GetDriveName メソッド | IsReady プロパティ

対象: FileSystemObject オブジェクト


FileExists メソッド

指定したファイルが存在する場合は、真 (true) を返します。存在しない場合は、偽 (false) を返します。

object.FileExists(filespec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
filespec
必ず指定します。存在するかどうかを調べるファイルの名前を指定します。カレント フォルダ内にないファイルを調べる場合は、絶対パスを指定する必要があります。絶対パスまたは相対パスのどちらかを指定できます。

次のコードは、FileExists メソッドの使用例です。

[JScript]
function ReportFileStatus(filespec)
{
   var fso, s = filespec;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if (fso.FileExists(filespec))
      s += " は、存在します。";
   else
      s += " は、存在しません。";
   return(s);
}
[VBScript]
Function ReportFileStatus(filespec)
   Dim fso, msg
   Set fso = CreateObject("Scripting.FileSystemObject")
   If (fso.FileExists(filespec)) Then
      msg = filespec & " は、存在します。"
   Else
      msg = filespec & " は、存在しません。"
   End If
   ReportFileStatus = msg
End Function

参 照

DriveExists メソッド | FolderExists メソッド | GetFile メソッド | GetFileName メソッド

対象: FileSystemObject オブジェクト


Files プロパティ

指定されたフォルダ内にあるすべての File オブジェクトの入った Files コレクションを返します。このコレクションには、隠しファイルやシステム ファイルの属性を持つ File オブジェクトも含まれます。

object.Files

object には、Folder オブジェクトの名前を指定します。

解説

次のコードは、Files プロパティの使用例です。

[JScript]
function ShowFolderFileList(folderspec)
{
   var fso, f, fc, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
   fc = new Enumerator(f.files);
   s = "";
   for (; !fc.atEnd(); fc.moveNext())
   {
      s += fc.item();
      s += "<br>";
   }
   return(s);
}
[VBScript]
Function ShowFileList(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   For Each f1 in fc
      s = s & f1.name
      s = s &   "<BR>"
   Next
   ShowFileList = s
End Function

参 照

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

対象: Folder オブジェクト


FolderExists メソッド

指定されたフォルダが存在する場合は、真 (true) を返します。存在しない場合は、偽 (false) を返します。

object.FolderExists(folderspec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
folderspec
必ず指定します。存在するかどうかを調べるフォルダの名前を指定します。カレント フォルダ内にないフォルダを調べる場合は、絶対パスを指定する必要があります。絶対パスまたは相対パスのどちらかを指定できます。

次のコードは、FileExists メソッドの使用例です。

[JScript]
function ReportFolderStatus(fldr)
{
   var fso, s = fldr;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if (fso.FolderExists(fldr))
      s += " は、存在します。";
   else
      s += " は、存在しません。";
   return(s);
}
[VBScript]
Function ReportFolderStatus(fldr)
   Dim fso, msg
   Set fso = CreateObject("Scripting.FileSystemObject")
   If (fso.FolderExists(fldr)) Then
      msg = fldr & " は、存在します。"
   Else
      msg = fldr & " は、存在しません。"
   End If
   ReportFolderStatus = msg
End Function

参 照

DriveExists メソッド | FileExists メソッド | GetFolder メソッド | GetParentFolderName メソッド

対象: FileSystemObject オブジェクト


GetAbsolutePathName メソッド

指定されたパスの絶対パス名を返します。

object.GetAbsolutePathName(pathspec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
pathspec
必ず指定します。絶対パス名を取得するパスを指定します。

解説

格納されているドライブのルートからの一意的な名前になっていると、パスは絶対パスになります。パスがパスの区切り文字 (\) で終わるのは、ドライブ名を割り当てられているルート フォルダを指定した場合だけです。

次の表は、たとえばカレント ディレクトリが c:\mydocuments\reports の場合、GetAbsolutePathName メソッドにより返されるパスを示します。

pathspec | 返されるパス
"c:" | "c:\mydocuments\reports"
"c:.." | "c:\mydocuments"
"c:\\" | "c:\"
"c:*.*\\may97" | "c:\mydocuments\reports\*.*\may97"
"region1" | "c:\mydocuments\reports\region1"
"c:\\..\\..\\mydocuments" | "c:\mydocuments"

次のコードは、GetAbsolutePathName メソッドの使用例です。

function ShowAbsolutePath(path)
{
   var fso, s= "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   s += fso.GetAbsolutePathName(path);
   return(s);
}

参 照

GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetBaseName メソッド

指定されたパス内に含まれるファイルのベース名 (ファイル拡張子を除いたもの) を表す文字列を返します。

object.GetBaseName(path)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
path
必ず指定します。ベース名を取得するファイルまたはフォルダのパスを指定します。

解説

引数 path に指定された文字列でベース名に該当するファイルまたはフォルダがない場合は、GetBaseName メソッドは長さ 0 の文字列 ("") を返します。

メモ GetBaseName メソッドは、引数 path で指定された文字列に対してのみ処理を行います。指定されたパスを解決したり、指定されたパスが実際に存在するかどうかを確認したりしません。

次のコードは、GetBaseName メソッドの使用例です。

[JScript]
function ShowBaseName(filespec)
{
   var fso, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   s += fso.GetBaseName(filespec);
   return(s);
}
[VBScript]
Function GetTheBase(filespec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   GetTheBase = fso.GetBaseName(filespec)
End Function

参 照

GetAbsolutePathName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetDrive メソッド

指定されたパスに含まれるドライブに対応する Drive オブジェクトを返します。

object.GetDrive ( drivespec );

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
drivespec
必ず指定します。ドライブ名 (c)、コロン付きのドライブ名 (c:)、コロンとパスの区切り文字の付いたドライブ名 (c:\)、任意のネットワーク共有名 (\\computer2\share1) のいずれかを指定します。

解説

ネットワーク共有名を指定した場合は、その共有が存在するかどうかが確認されます。

引数 drivespec が指定可能な形式になっていない場合、および指定したドライブが存在しない場合は、エラーが発生します。

通常のパス名を使って GetDrive メソッドを呼び出すには、最初に次のようなコードを記述して、引数 drivespec に指定できる文字列を取得します。

[JScript]
DriveSpec = GetDriveName(GetAbsolutePathName(Path))
[JScript]

次のコードは、GetDrive メソッドの使用例です。

[JScript]
function ShowFreeSpace(drvPath)
{
   var fso, d, s ="";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(drvPath));
   s = "ドライブ " + drvPath.toUpperCase( ) + " - ";
   s += d.VolumeName + "<BR>";
   s += "空き領域:" + d.FreeSpace/1024 + " KB";
   return(s);
}
[VBScript]
DriveSpec = GetDriveName(GetAbsolutePathName(Path))

[VBScript]

次のコードは、GetDrive メソッドの使用例です。

[VBScript]
Function ShowFreeSpace(drvPath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "ドライブ " & UCase(drvPath) & " - "
   s = s & d.VolumeName   & "<BR>"
   s = s & "空き領域: " & FormatNumber(d.FreeSpace/1024, 0)
   s = s & " KB"
   ShowFreeSpace = s
End Function

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetDriveName メソッド

指定されたパスのドライブ名を返します。

object.GetDriveName(path)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
path
必ず指定します。ドライブ名を取り出すパスを指定します。

解説

ドライブが判断できない場合は、長さ 0 の文字列 ("") が返されます。

メモ GetDriveName メソッドは、引数 path で指定した文字列に対してのみ処理が行われます。指定されたパスを解決したり、指定されたパスが実際に存在するかどうかを確認したりしません。

次のコードは、GetDriveName メソッドの使用例です。

[JScript]
function GetDriveLetter(path)
{
   var fso, s ="";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   s += fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(path)));
   return(s);
}
[VBScript]
Function GetAName(DriveSpec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   GetAName = fso.GetDriveName(Drivespec)
End Function

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetExtensionName メソッド

指定されたパスの拡張子を表す文字列を返します。

object.GetExtensionName(path)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
path
必ず指定します。拡張子を取り出す構成要素のパスを指定します。

解説

ネットワーク ドライブの場合は、ルート ディレクトリ (\) が構成要素であると見なされます。

引数 path に指定された文字列で拡張子に該当するものがない場合は、長さ 0 の文字列 ("") が返されます。

次のコードは、GetExtensionName メソッドの使用例です。

[JScript]
function ShowExtensionName(filespec)
{
   var fso, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   s += fso.GetExtensionName(filespec);
   return(s);
}
[VBScript]
Function GetAnExtension(DriveSpec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   GetAnExtension = fso.GetExtensionName(Drivespec)
End Function

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetFile メソッド

指定されたパスに置かれているファイルに対応する File オブジェクトを返します。

object.GetFile(filespec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
filespec
必ず指定します。目的のファイルのパスを指定します。絶対パスまたは相対パスのどちらかを指定できます。

解説

指定したファイルが存在しない場合は、エラーが発生します。

次のコードは、GetFile メソッドの使用例です。

[JScript]
function ShowFileAccessInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = f.Path.toUpperCase() + "<BR>";
   s += "作成日時:" + f.DateCreated + "<BR>";
   s += "最終アクセス日時:" + f.DateLastAccessed + "<BR>"; s += "<BR>";
   s += "最終更新日時: " + f.DateLastModified
   return(s);
}
[VBScript]
Function ShowFileAccessInfo(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = f.Path & "<br>"
   s = s & "作成日時: " & f.DateCreated & "<br>"
   s = s & "最終アクセス日時: " & f.DateLastAccessed & "<br>"
   s = s & "最終更新日時: " & f.DateLastModified
   ShowFileAccessInfo = s
End Function

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetFileName メソッド

指定されたパスの最後のファイル名またはフォルダ名を返します。

object.GetFileName(pathspec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
pathspec
必ず指定します。指定したファイルの絶対パスまたは相対パスです。

解説

引数 pathspec に指定した文字列の最後が名前付きの構成要素になっていない場合は、長さ 0 の文字列 ("") を返します。

メモ GetFileName は、パスに指定された文字列に対してのみ処理を行います。指定されたパスを解決したり、指定されたパスが実際に存在するかどうかを確認したりしません。

次のコードは、GetFileName メソッドの使用例です。

[JScript]
function ShowFileName(filespec)
{
   var fso, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   s += fso.GetFileName(filespec);
   return(s);
}
[VBScript]
Function GetAName(DriveSpec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   GetAName = fso.GetFileName(DriveSpec)
End Function

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetFileVersion メソッド

指定したファイルのバージョン番号を返します。

object.GetFileVersion(pathspec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
pathspec
必ず指定します。指定したファイルの絶対パスまたは相対パスです。

解説

引数 pathspec に指定した文字列の最後が名前付きのファイルになっていないか、指定したファイルにバージョン情報が含まれていない場合、GetFileVersion メソッドは長さ 0 の文字列 ("") を返します。

メモ GetFileVersion メソッドは、パス文字列で指定された文字列に対してのみ処理を行います。指定されたパスを解決したり、指定されたパスが実際に存在するかどうかを確認したりしません。

次のコードは、GetFileVersion メソッドの使用例です。

[JScript]
function ShowFileName(filespec){
   var fso, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   s += fso.GetFileVersion(filespec);
   return(s);
}
[VBScript]
Function GetVersion(DriveSpec)
   Dim fso, temp
   Set fso = CreateObject("Scripting.FileSystemObject")
   temp = fso.GetFileVersion(pathspec)
   If Len(temp) Then
      GetVersion = temp
   Else
      GetVersion = "バージョン情報はありません。"
   End If
End Function

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド
対象 : FileSystemObject オブジェクト


GetFolder メソッド

指定されたパスに置かれているフォルダに対応する Folder オブジェクトを返します。

object.GetFolder(folderspec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
folderspec
必ず指定します。目的のフォルダのパスを指定します。絶対パスまたは相対パスのどちらかを指定できます。

解説

指定したフォルダが存在しない場合は、エラーが発生します。

次のコードは、GetFolder メソッドの使用例です。

[JScript]
function ShowFolderList(folderspec)
{
   var fso, f, fc, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
   fc = new Enumerator(f.SubFolders);
   s = "";
   for (; !fc.atEnd(); fc.moveNext())
   {
      s += fc.item();
      s += "<br>";
   }
   return(s);
}
[VBScript]
Sub AddNewFolder(path, folderName)
   Dim fso, f, fc, nf
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(path)
   Set fc = f.SubFolders
   If folderName <> "" Then
      Set nf = fc.Add(folderName)
   Else
      Set nf = fc.Add("新しいフォルダ")
   End If
End Sub

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetParentFolderName メソッド

指定されたパスの最後のファイルまたはフォルダの親フォルダの名前が入った文字列を返します。

object.GetParentFolderName(path)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
path
必ず指定します。親フォルダの名前を取得するファイルまたはフォルダのパスを指定します。

解説

引数 path に指定したファイルまたはフォルダに親フォルダが存在しない場合は、長さ 0 の文字列 ("") を返します。

メモ GetParentFolderName メソッドは、引数 path で指定された文字列に対してのみ処理を行います。指定されたパスを解決したり、指定されたパスが実際に存在するかどうかを確認したりしません。

次のコードは、GetParentFolderName メソッドの使用例です。

[JScript]
function ShowParentFolderName(filespec)
{
   var fso, s = "";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   s += fso.GetParentFolderName(filespec);
   return(s);
}
[VBScript]
Function GetTheParent(DriveSpec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   GetTheParent = fso.GetParentFolderName(Drivespec)
End Function

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetSpecialFolder メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetSpecialFolder メソッド

指定された特殊フォルダを返します。

object.GetSpecialFolder(folderspec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
folderspec
必ず指定します。取得する特殊フォルダの種類を指定します。指定できる定数については、次の「設定値」を参照してください。

設定値

引数 folderspec に指定できる定数とその値を次に示します。

定数 | 値 | 内容
WindowsFolder | 0 | Windows オペレーティング システムによりセットアップされたファイルの置かれている Windows フォルダが返されます。
SystemFolder | 1 | ライブラリ、フォント、デバイス ドライバなどの置かれている System フォルダが返されます。
TemporaryFolder | 2 | 一時ファイルの格納に使用される Temp フォルダが返されます。このパスは、環境変数 TMP より取得します。

次のコードは、GetSpecialFolder メソッドの使用例です。

[JScript]
var fso, tempfile;
fso = new ActiveXObject("Scripting.FileSystemObject");

function CreateTempFile()
{
   var tfolder, tfile, tname, fname, TemporaryFolder = 2;
   tfolder = fso.GetSpecialFolder(TemporaryFolder);
   tname = fso.GetTempName();
   tfile = tfolder.CreateTextFile(tname);
   return(tfile);
}
tempfile = CreateTempFile();
tempfile.writeline("Hello World");
tempfile.close();
[VBScript]
Dim fso, tempfile
Set fso = CreateObject("Scripting.FileSystemObject")

Function CreateTempFile
   Dim tfolder, tname, tfile
   Const TemporaryFolder = 2
   Set tfolder = fso.GetSpecialFolder(TemporaryFolder)
   tname = fso.GetTempName
   Set tfile = tfolder.CreateTextFile(tname)
   Set CreateTempFile = tfile
End Function

Set tempfile = CreateTempFile
tempfile.WriteLine "Hello World"
tempfile.Close

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetTempName メソッド

対象: FileSystemObject オブジェクト


GetTempName メソッド

一時ファイルまたは一時フォルダの名前をランダムに生成して返します。このメソッドは、一時ファイルや一時フォルダを必要とする処理を行うときに便利です。

object.GetTempName ( );

object は、省略可能です。FileSystemObject オブジェクトの名前を指定します。

解説

GetTempName メソッドは、ファイルを作成するのではありません。CreateTextFile を使ってファイルを作成する際に使用できる一時ファイル名を返すだけです。

次のコードは、GetTempName メソッドの使用例です。

[JScript]
var fso, tempfile;
fso = new ActiveXObject("Scripting.FileSystemObject");

function CreateTempFile()
{
   var tfolder, tfile, tname, fname, TemporaryFolder = 2;
   tfolder = fso.GetSpecialFolder(TemporaryFolder);
   tname = fso.GetTempName();
   tfile = tfolder.CreateTextFile(tname);
   return(tfile);
}
tempfile = CreateTempFile();
tempfile.writeline("Hello World");
tempfile.close();
[VBScript]
Dim fso, tempfile
Set fso = CreateObject("Scripting.FileSystemObject")

Function CreateTempFile
   Dim tfolder, tname, tfile
   Const TemporaryFolder = 2
   Set tfolder = fso.GetSpecialFolder(TemporaryFolder)
   tname = fso.GetTempName
   Set tfile = tfolder.CreateTextFile(tname)
   Set CreateTempFile = tfile
End Function

Set tempfile = CreateTempFile
tempfile.WriteLine "Hello World"
tempfile.Close

参 照

GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFileVersion メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド

対象: FileSystemObject オブジェクト


Move メソッド

指定されたファイルまたはフォルダを別の場所へ移動します。

object.Move( destination );

引数

object
必ず指定します。File オブジェクトまたは Folder オブジェクトの名前を指定します。
destination
必ず指定します。ファイルまたはフォルダの移動先を指定します。ワイルドカード文字は使用できません。

解説

File オブジェクトまたは Folder オブジェクトに対して実行した Move メソッドの結果は、FileSystemObject.MoveFile メソッドまたは FileSystemObject.MoveFolder メソッドを使用して実行するのと同じ結果になります。ただし、これらの代替メソッドを使用した場合は、複数のファイルやフォルダをコピーすることもできます。

参 照

Copy メソッド | Delete メソッド | MoveFile メソッド | MoveFolder メソッド | OpenAsTextStream メソッド

対象: File オブジェクト | Folder オブジェクト


MoveFile メソッド

ファイル (複数可) を別の場所へ移動します。

object.MoveFile ( source, destination );

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
source
必ず指定します。移動するファイルのパスを指定します。パスの最後の構成要素内ではワイルドカード文字を使用できます。
destination
必ず指定します。ファイルの移動先のパスを指定します。ワイルドカード文字は使用できません。

解説

引数 source にワイルドカード文字を使用したとき、および引数 destination がパスの区切り文字 (\) で終わるとき、引数 destination には既存フォルダを指定したと判断され、条件に一致するファイルがそのフォルダ内へ移動されます。それ以外のときは、引数 destination には作成するファイルの名前を指定したと判断されます。いずれの場合も、移動される各ファイルで発生する処理の実行は 3 種類あります。

  • 引数 destination に指定したファイルが存在しない場合、ファイルが移動します。これが通常の場合です。
  • 引数 destination に指定したファイルが存在する場合、エラーが発生します。
  • 引数 destination がディレクトリの場合、エラーが発生します。

引数 source でワイルドカード文字を使用した指定がどのファイルとも一致しなかった場合も、エラーが発生します。MoveFile メソッドは、最初のエラーが発生した時点で処理を中止します。エラーが発生するまでに行った処理を取り消したり元に戻したりする処理は一切行われません。

メモ このメソッドを使用してボリューム間でファイルを移動できるのは、オペレーティング システムでボリューム間のファイル移動がサポートされている場合だけです。

次のコードは、MoveFile メソッドの使用例です。

[JScript]
function MoveFile2Desktop(filespec)
{
   var fso;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.MoveFile(filespec, "c:\\windows\\desktop\\");
}
[VBScript]
Sub MoveAFile(Drivespec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   fso.MoveFile Drivespec, "c:\windows\desktop\"
End Sub

参 照

CopyFile メソッド | DeleteFile メソッド | GetFile メソッド | GetFileName メソッド | Move メソッド | MoveFolder メソッド | OpenTextFile メソッド

対象: FileSystemObject オブジェクト


MoveFolder メソッド

フォルダ (複数可) を別の場所へ移動します。

object.MoveFolder ( source, destination );

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
source
必ず指定します。移動するフォルダのパスを指定します。パスの最後の構成要素内ではワイルドカード文字を使用できます。
destination
必ず指定します。フォルダの移動先のパスを指定します。ワイルドカード文字は使用できません。

解説

引数 source にワイルドカード文字を使用したとき、および引数 destination がパスの区切り文字 (\) で終わるとき、引数 destination には既存フォルダを指定したと判断され、条件に一致するファイルがそのフォルダ内へ移動されます。それ以外のときは、引数 destination に作成するフォルダの名前を指定したと判断されます。いずれの場合でも、移動される各フォルダで発生する処理の実行は 3 種類あります。

  • 引数 destination に指定したフォルダが存在しない場合、フォルダが移動します。これが通常の場合です。
  • 引数 destination に指定したファイルが存在する場合、エラーが発生します。
  • 引数 destination がディレクトリの場合、エラーが発生します。

引数 source でワイルドカード文字を使用した指定がどのフォルダとも一致しなかった場合も、エラーが発生します。MoveFolder メソッドは、最初のエラーが発生した時点で処理を中止します。エラーが発生するまでに行った処理を取り消したり元に戻したりする処理は一切行われません。

重要 このメソッドを使用してボリューム間でフォルダを移動できるのは、オペレーティング システムでボリューム間のフォルダ移動がサポートされている場合だけです。

次のコードは、MoveFolder メソッドの使用例です。

[JScript]
function MoveFldr2Desktop(fldrspec)
{
   var fso;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.MoveFolder(fldrspec, "c:\\windows\\desktop\\");
}
[VBScript]
Sub MoveAFolder(Drivespec)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   fso.MoveFolder Drivespec, "c:\windows\desktop\"
End Sub

参 照

CopyFile メソッド | DeleteFile メソッド | GetFile メソッド | GetFileName メソッド | Move メソッド | MoveFile メソッド | OpenTextFile メソッド

対象: FileSystemObject オブジェクト


OpenAsTextStream メソッド

指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。

object.OpenAsTextStream([iomode, [format]])

引数

object
必ず指定します。File オブジェクトの名前を指定します。
iomode
省略可能です。入出力モードを指定します。指定する値については、次の「設定値」を参照してください。
format
省略可能です。開くファイルの形式を示す値を指定します。指定する値については、次の「設定値」を参照してください。省略した場合、ASCII ファイルとしてファイルが開かれます。

設定値

引数 iomode の設定値は次のとおりです。

定数 | 値 | 内容
ForReading | 1 | ファイルを読み取り専用として開きます。このファイルには書き込むことができません。
ForWriting | 2 | ファイルを書き込み専用として開きます。既存ファイルがある場合、以前の内容は上書きされます。
ForAppending | 8 | ファイルを開き、ファイルの最後に追加して書き込みます。

引数 format の設定値は次のとおりです。

定数 | 値 | 内容
TristateUseDefault | -2 | システム デフォルトを使ってファイルを開きます。
TristateTrue | -1 | ファイルを Unicode ファイルとして開きます。
TristateFalse | 0 | ファイルを ASCII ファイルとして開きます。

解説

OpenAsTextStream メソッドは、FileSystemObject オブジェクトの OpenTextFile メソッドとほぼ同じ機能を提供します。OpenTextFile メソッドと異なるのは、ファイルを追加書き込みではなく書き込み専用に開くことができます。

次のコードは、OpenAsTextStream メソッドの使用例です。

[JScript]
function TextStreamTest( )
{
   var fso, f, ts, s;
   var ForReading = 1, ForWriting = 2, ForAppending = 8;
   var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.CreateTextFile( "test1.txt" );           // ファイルを作成します。
   f = fso.GetFile("test1.txt");
   ts = f.OpenAsTextStream(ForWriting, TristateUseDefault);
   ts.Write( "Hello World" );
   ts.Close( );
   ts = f.OpenAsTextStream(ForReading, TristateUseDefault);
   s = ts.ReadLine( );
   ts.Close( );
   return(s);
}
[VBScript]
Function TextStreamTest
   Const ForReading = 1, ForWriting = 2, ForAppending = 8
   Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
   Dim fso, f, ts
   Set fso = CreateObject("Scripting.FileSystemObject")
   fso.CreateTextFile "test1.txt"   ' Create a file.
   Set f = fso.GetFile("test1.txt")
   Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
   ts.Write "Hello World"
   ts.Close
   Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
   TextStreamTest = ts.ReadLine
   ts.Close
End Function

参 照

Copy メソッド | CreateTextFile メソッド | Delete メソッド | Move メソッド | OpenTextFile メソッド

対象: File オブジェクト


OpenTextFile メソッド

指定したファイルを開き、開いたファイルの読み取り、または追加書き込みに使用できる TextStream オブジェクトを返します。

object.OpenTextFile(filename[, iomode[, create[, format]]])

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
filename
必ず指定します。作成するファイルの名前を表す文字列式を指定します。
iomode
省略可能です。指定する値については、次の「設定値」を参照してください。
create
省略可能です。引数 filename で指定したファイルが存在しなかった場合に新しいファイルを作成するかどうかを示すブール値を指定します。新しいファイルを作成する場合は真 (true) を、ファイルを作成しない場合は偽 (false) を指定します。省略した場合、新しくファイルは作成されません。
format
省略可能です。開くファイルの形式を示す値を指定します。指定する値については、次の「設定値」を参照してください。省略した場合、ASCII ファイルとしてファイルが開かれます。

設定値

引数 iomode の設定値は次のとおりです。

定数 | 値 | 内容
ForReading | 1 | ファイルを読み取り専用として開きます。このファイルには書き込むことができません。
ForWriting | 2 | ファイルを書き込み専用として開きます。
ForAppending | 8 | ファイルを開き、ファイルの最後に追加して書き込みます。

引数 format の設定値は次のとおりです。

値 | 内容
TristateTrue | ファイルを Unicode ファイルとして開きます。
TristateFalse | ファイルを ASCII ファイルとして開きます。
TristateUseDefault | システム デフォルトを使ってファイルを開きます。

解説

次のコードは、OpenTextFile メソッドを使用して、テキストを追加するためにファイルを開く方法を示します。

[JScript]
var fs, a, ForAppending;
ForAppending = 8;
fs = new ActiveXObject("Scripting.FileSystemObject");
a = fs.OpenTextFile("c:\\testfile.txt", ForAppending, false);
...
a.Close();
[VBScript]
Sub OpenTextFileTest
   Const ForReading = 1, ForWriting = 2, ForAppending = 8
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!"
   f.Close
End Sub

参 照

CreateTextFile メソッド | OpenAsTextStream メソッド

対象: FileSystemObject オブジェクト


Read メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

Read メソッド

TextStream ファイルから指定された文字数を読み込み、その結果の文字列を返します。

object.Read(characters)

引数

object
必ず指定します。TextStream オブジェクトの名前を指定します。
characters
必ず指定します。ファイルから読み取る文字の数を指定します。

このコードは、Read メソッドを使って、ファイルから先頭の 6 文字を読み取り、読み取った文字列を返す例です。

[JScript]
function GetHeader()
{
   var fso, f;
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
   f.Write("Header");
   f.Write("1234567890987654321");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   return(f.Read(6));
}
[VBScript]
Function ReadTextFileTest
   Const ForReading = 1, ForWriting = 2, ForAppending = 8
   Dim fso, f, Msg
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!"
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   ReadTextFileTest = f.Read(5)
End Function

参 照

ReadAll メソッド | ReadLine メソッド | Skip メソッド | SkipLine メソッド

対象: TextStream オブジェクト


ReadAll メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

ReadAll メソッド

TextStream ファイル全体を読み込み、その結果の文字列を返します。

object.ReadAll( );

object には、TextStream オブジェクトの名前を指定します。

解説

サイズの大きいファイルで ReadAll メソッドを使用すると、多くのメモリ リソースを消費します。サイズの大きいファイルを扱うときは、ファイルから 1 行ずつ読み込む方法を使用することをお勧めします。

次のコードは、ReadAll メソッドの使用例です。

[JScript]
function GetEverything()
{
   var fso, f;
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
   f.Write("Header");
   f.Write("1234567890987654321");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   return(f.ReadAll());
}
[VBScript]
Function ReadAllTextFile
   Const ForReading = 1, ForWriting = 2
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!"
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   ReadAllTextFile =   f.ReadAll
End Function

参 照

Read メソッド | ReadLine メソッド | Skip メソッド | SkipLine メソッド

対象: TextStream オブジェクト


ReadLine メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

ReadLine メソッド

TextStream ファイルから 1 行 (改行文字を除く) を読み込み、その結果の文字列を返します。

object.ReadLine( )

object には、TextStream オブジェクトの名前を指定します。

解説

次のコードは、Line プロパティの使用例です。

[JScript]
function GetLine()
{
   var fso, f, r;
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
   f.WriteLine("Hello world!");
   f.WriteLine("JScript is fun");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   r =  f.ReadLine();
   return(r);
}
[VBScript]
Function ReadLineTextFile
   Const ForReading = 1, ForWriting = 2
   Dim fso, MyFile
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set MyFile = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   MyFile.WriteLine "Hello world!"
   MyFile.WriteLine "The quick brown fox"
   MyFile.Close
   Set MyFile = fso.OpenTextFile("c:\testfile.txt", ForReading)
   ReadLineTextFile = MyFile.ReadLine    ' Returns "Hello world!"
End Function

参 照

Read メソッド | ReadAll メソッド | Skip メソッド | SkipLine メソッド

対象: TextStream オブジェクト


Skip メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

Skip メソッド

TextStream ファイルを読み込むときに指定された数の文字数をスキップします。

object.Skip(characters)

引数

object
必ず指定します。TextStream オブジェクトの名前を指定します。
characters
必ず指定します。ファイルの読み取りでスキップする文字の数を指定します。

解説

スキップした文字列は、破棄されます。

次のコードは、Skip メソッドの使用例です。

[JScript]
function SkipDemo()
{
   var fso, f, r;
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject")
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
   f.WriteLine("Hello world!");
   f.WriteLine("JScript is fun");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   f.Skip(6);
   r = f.ReadLine();
   return(r);
}
[VBScript]
Function SkipTextFile
   Const ForReading = 1, ForWriting = 2
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!"
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   f.Skip(6)
   SkipTextFile =   f.ReadLine
End Function

参 照

Close メソッド | Read メソッド | ReadAll メソッド | ReadLine メソッド | SkipLine メソッド | Write メソッド | WriteLine メソッド | WriteBlankLines メソッド

対象: TextStream オブジェクト


SkipLine メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

SkipLine メソッド

TextStream ファイルを読み込むときに次の行をスキップします。

object.SkipLine( )

object には、TextStream オブジェクトの名前を指定します。

解説

次のコードは、SkipLine メソッドの使用例です。

[JScript]
function SkipLineDemo()
{
   var fso, f, r
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject")
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true)
   f.WriteLine("Hello world!");
   f.WriteLine("JScript is fun");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   f.SkipLine();
   r = f.ReadLine();
   return(r);
}
[VBScript]
Function SkipLineInFile
   Const ForReading = 1, ForWriting = 2
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!" & vbCrLf & "VB Script is fun!"
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   f.SkipLine
   SkipLineInFile = f.ReadLine
End Function

参 照

Read メソッド | ReadAll メソッド | ReadLine メソッド | Skip メソッド

対象: TextStream オブジェクト


Write メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

Write メソッド

指定した文字列を TextStream ファイルに書き込みます。

object.Write(string)

引数

object
必ず指定します。TextStream オブジェクトの名前を指定します。
string
必ず指定します。ファイルに書き込むテキストを指定します。

解説

連続して文字列を書き込んだ場合、文字列間にスペースや区切り文字は挿入されず、続けて書き込まれます。文字列の最後で改行する必要がある場合は、WriteLine メソッドを使用するかまたは文字列の最後に改行文字を入れてください。

次のコードは、Write メソッドの使用例です。

[JScript]
function WriteDemo()
{
   var fso, f, r
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject")
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true)
   f.Write("Hello world!");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   r = f.ReadLine();
   return(r);
}
[VBScript]
Function WriteToFile
   Const ForReading = 1, ForWriting = 2
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.Write "Hello world!"
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   WriteToFile =   f.ReadLine
End Function

参 照

WriteBlankLines メソッド | WriteLine メソッド

対象: TextStream オブジェクト


WriteBlankLines メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

WriteBlankLines メソッド

指定された数の改行文字を TextStream ファイルに書き込みます。

object.WriteBlankLines(lines)

引数

object
必ず指定します。TextStream オブジェクトの名前を指定します。
lines
必ず指定します。ファイルに書き込む改行文字の数を指定します。

解説

次のコードは、WriteBlankLines メソッドの使用例です。

[JScript]
function WriteBlanksDemo()
{
   var fso, f, r;
   var ForReading = 1, ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
   f.Write("Hello world!");
   f.WriteBlankLines(2);
   f.Write("JScript is fun!");
   f.Close();
   f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
   r = f.ReadAll();
   return(r);
}
[VBScript]
Function WriteBlankLinesToFile
   Const ForReading = 1, ForWriting = 2
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.WriteBlankLines 2
   f.WriteLine "Hello World!"
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   WriteBlankLinesToFile = f.ReadAll
End Function

参 照

Write メソッド | WriteLine メソッド

対象: TextStream オブジェクト


WriteLine メソッド (FileSystemObject)

Scripting ランタイム ライブラリ

WriteLine メソッド

指定した文字列と改行文字を TextStream ファイルに書き込みます。

object.WriteLine([string])

引数

object
必ず指定します。TextStream オブジェクトの名前を指定します。
string
省略可能です。ファイルに書き込むテキストを指定します。省略した場合は、改行文字だけがファイルに書き込まれます。

解説

次のコードは、WriteLine メソッドの使用例です。

[JScript]
var fso, f;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.CreateTextFile("c:\\testfile.txt", true);
f.WriteLine("これはテストです。");
f.Close();
[VBScript]
Function WriteLineToFile
   Const ForReading = 1, ForWriting = 2
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
   f.WriteLine "Hello world!"
   f.WriteLine "これはテストです。"
   Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
   WriteLineToFile = f.ReadAll
End Function

参 照

Write メソッド | WriteBlankLines メソッド

対象: TextStream オブジェクト


FileSystemObject のオブジェクト

トピック

Dictionary オブジェクト
データ キーと項目のペアを格納するオブジェクトです。
Drive オブジェクト
特定のディスク ドライブまたはネットワーク共有のプロパティにアクセスできます。
File オブジェクト
ファイルのすべてのプロパティにアクセスできます。
FileSystemObject オブジェクト
コンピュータのファイル システムにアクセスできます。
Folder オブジェクト
フォルダのすべてのプロパティにアクセスできます。
TextStream オブジェクト
ファイルへのシーケンシャル アクセスを容易にします。

参 照

スクリプト ランタイム リファレンス
スクリプト ランタイム リファレンスを構成する要素の一覧です。
FileSystemObject の基本
FileSystemObject の基本的なことがらを紹介するガイドです。
FileSystemObject のコレクション
FileSystemObject オブジェクト モデルで使用できるコレクションの一覧です。


Drive オブジェクト

ディスク ドライブまたはネットワーク共有の各種プロパティへアクセスする手段を提供します。

解説

次のコードは、Drive オブジェクトを使ってドライブのプロパティにアクセスする例です。

[JScript]
function ShowFreeSpace(drvPath)
{
   var fso, d, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   d = fso.GetDrive(fso.GetDriveName(drvPath));
   s = "Drive " + drvPath + " - " ;
   s += d.VolumeName + "<br>";
   s += "使用可能な領域 : " + d.FreeSpace/1024 + " KB";
   return(s);
}
[VBScript]
Function ShowFreeSpace(drvPath)
   Dim fso, d, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "Drive " & UCase(drvPath) & " - "
   s = s & d.VolumeName   & "<BR>"
   s = s & "使用可能な領域 : " & FormatNumber(d.FreeSpace/1024, 0)
   s = s & " KB"
   ShowFreeSpace = s
End Function

メソッド

Drive オブジェクトには、メソッドはありません。

プロパティ

AvailableSpace プロパティ | DriveLetter プロパティ | DriveType プロパティ | FileSystem プロパティ | FreeSpace プロパティ | IsReady プロパティ | Path プロパティ | RootFolder プロパティ | SerialNumber プロパティ | ShareName プロパティ | TotalSize プロパティ | VolumeName プロパティ

参 照

Drives コレクション | File オブジェクト | Files コレクション | Folder オブジェクト | Folders コレクション | GetDrive メソッド


File オブジェクト

ファイルのあらゆるプロパティにアクセスする手段を提供します。

解説

次のコードは、File オブジェクトを取得し、そのプロパティの 1 つを表示する例です。

[JScript]
function ShowFileInfo(filespec)
{
   var fso, f, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFile(filespec);
   s = f.DateCreated;
   return(s);
}
[VBScript]
Function ShowDateCreated(filespec)
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   ShowDateCreated = f.DateCreated
End Function

メソッド

Copy メソッド | Delete メソッド | Move メソッド | OpenAsTextStream メソッド

プロパティ

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive Property | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | Type プロパティ

参 照

Drive オブジェクト | Drives コレクション | Files コレクション | Folder コレクション | Folders コレクション


FileSystemObject オブジェクト

ファイル システムへアクセスする方法を提供します。

解説

[JScript]

次のコードは、FileSystemObject を使って、ファイルの読み取りまたは書き込みに使用できる TextStream オブジェクトを取得する例です。

[JScript]
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("This is a test.");
a.Close();

[JScript]

このコード例では、ActiveXObject オブジェクトを FileSystemObject オブジェクト (変数 fso) に割り当てます。次に、CreateTextFile メソッドを使って TextStream オブジェクト (変数 a) としてファイルを作成し、WriteLine メソッドを使って作成したテキスト ファイルに 1 行のテキストを書き込んでいます。さらに、Close メソッドを使ってバッファをフラッシュし、ファイルを閉じます。

[VBScript]

次のコードは、FileSystemObject を使って、ファイルの読み取りまたは書き込みに使用できる TextStream オブジェクトを取得する例です。

[VBScript]
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test.")
MyFile.Close

[VBScript]

上記のコード例では、CreateObject 関数が FileSystemObject (fso) を返します。次に、CreateTextFile メソッドを使って TextStream オブジェクト (変数 a) としてファイルを作成し、WriteLine メソッドを使って作成したテキスト ファイルに 1 行のテキストを書き込んでいます。さらに、Close メソッドを使ってバッファをフラッシュし、ファイルを閉じます。

メソッド

BuildPath メソッド | CopyFile メソッド | CopyFolder メソッド | CreateFolder メソッド | CreateTextFile メソッド | DeleteFile メソッド | DeleteFolder メソッド | DriveExists メソッド | FileExists メソッド | FolderExists メソッド | GetAbsolutePathName メソッド | GetBaseName メソッド | GetDrive メソッド | GetDriveName メソッド | GetExtensionName メソッド | GetFile メソッド | GetFileName メソッド | GetFolder メソッド | GetParentFolderName メソッド | GetSpecialFolder メソッド | GetTempName メソッド | MoveFile メソッド | MoveFolder メソッド | OpenTextFile メソッド

プロパティ

Drives プロパティ

参 照

Dictionary オブジェクト | Drive オブジェクト | Drives コレクション | File オブジェクト | Files コレクション | Folder コレクション | Folders コレクション | TextStream オブジェクト


Folder オブジェクト

フォルダのあらゆるプロパティにアクセスする手段を提供します。

解説

次のコードは、Folder オブジェクトを取得し、そのプロパティの 1 つを表示する例です。

[JScript]
function ShowFolderInfo(folderspec)
{
   var fso, folder, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   folder = fso.GetFolder(folderspec);
   s = folder.DateCreated;
   return(s);
}
[VBScript]
Function ShowDateCreated(folderspec)
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   ShowDateCreated = f.DateCreated
End Function

メソッド

Copy メソッド | Delete メソッド | Move メソッド | OpenAsTextStream メソッド

プロパティ

Attributes プロパティ | DateCreated プロパティ | DateLastAccessed プロパティ | DateLastModified プロパティ | Drive プロパティ | Files プロパティ | IsRootFolder プロパティ | Name プロパティ | ParentFolder プロパティ | Path プロパティ | ShortName プロパティ | ShortPath プロパティ | Size プロパティ | SubFolders プロパティ | Type プロパティ

参 照

Drive オブジェクト | Drives コレクション | File オブジェクト | Files コレクション | Folders コレクション


TextStream オブジェクト

ファイルへのシーケンシャル アクセスを行うオブジェクトです。

TextStream.{property  | method( )}

引数 property と引数 method には、TextStream オブジェクトに関連付けられている任意のプロパティおよびメソッドを指定できます。実際に使用する場合は、TextStream の部分は TextStream オブジェクトを表す変数名で置き換えることになります。TextStream オブジェクトは、FileSystemObject オブジェクトから取得します。

解説

次のコードは、変数 a が、CreateTextFile メソッドによって取得された FileSystemObject オブジェクトの TextStream オブジェクトを示す例です。

[JScript]
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("テストです。");
a.Close();
[VBScript]
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile= fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("テストです。")
MyFile.Close

WriteLine および Close は、TextStream オブジェクトのメソッドです。

メソッド

Close メソッド | Read メソッド | ReadAll メソッド | ReadLine メソッド | Skip メソッド | SkipLine メソッド | Write メソッド | WriteBlankLines メソッド | WriteLine メソッド

プロパティ

AtEndOfLine プロパティ | AtEndOfStream プロパティ | Column プロパティ | Line プロパティ

参 照

Dictionary オブジェクト | FileSystemObject オブジェクト


FileSystemObject のコレクション

トピック

Drives コレクション
利用可能なすべてのドライバの読み取り専用コレクションです。
Files コレクション
フォルダ内にあるすべての File オブジェクトのコレクションです。
Folders コレクション
Folder オブジェクト内に含まれているすべての Folder オブジェクトのコレクションです。

参 照

スクリプト ランタイム リファレンス
スクリプト ランタイム リファレンスを構成する要素の一覧です。
FileSystemObject の基本
FileSystemObject の基本的なことがらを紹介するガイドです。


Drives コレクション

利用可能なすべてのドライブのコレクションです。このコレクションはメンバの取得のみ可能です。

解説

リムーバブル メディア ドライブは、ドライブにメディアが挿入されていなくても Drives コレクションに含まれます。

[JScript]

次のコードは、Drives プロパティを使って Drives コレクションを取得し、Enumerator オブジェクトを使ってコレクションに繰り返し処理を行う例です。

[JScript]
function ShowDriveList()
{
   var fso, s, n, e, x;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);
   s = "";
   for (; !e.atEnd(); e.moveNext())
   {
      x = e.item();
      s = s + x.DriveLetter;
      s += " - ";
      if (x.DriveType == 3)
         n = x.ShareName;
      else if (x.IsReady)
         n = x.VolumeName;
      else
         n = "[ドライブの準備ができていません。]";
      s +=   n + "<br>";
   }
   return(s);
}

[VBScript]

次のコードは、Drives プロパティを使って Drives コレクションを取得し、Enumerator オブジェクトを使ってコレクションに繰り返し処理を行う例です。

[VBScript]
Function ShowDriveList
   Dim fso, d, dc, s, n
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set dc = fso.Drives
   For Each d in dc
      n = ""
      s = s & d.DriveLetter & " - "
      If d.DriveType = Remote Then
         n = d.ShareName
      ElseIf d.IsReady Then
         n = d.VolumeName
      End If
      s = s & n & "<BR>"
   Next
   ShowDriveList = s
End Function

メソッド

Drives コレクションには、メソッドはありません。

プロパティ

Count プロパティ | Item プロパティ

参 照

Drive オブジェクト | Drives プロパティ | File オブジェクト | Files コレクション | Folder コレクション | Folders コレクション


Files コレクション

コレクションには、フォルダ内のすべての File オブジェクトが含まれています。

解説

[JScript]

次のコードは、Files コレクションを取得し、Enumerator オブジェクトと for ステートメントを使ってコレクションに繰り返し処理を行う例です。

[JScript]
function ShowFolderFileList(folderspec)
{
   var fso, f, f1, fc, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
   fc = new Enumerator(f.files);
   s = "";
   for (; !fc.atEnd(); fc.moveNext())
   {
      s += fc.item();
      s += "<br>";
   }
   return(s);
}

[VBScript]

次のコードは、Files コレクションを取得し、For Each...Next ステートメントを使ってコレクションに繰り返し処理を行う例です。

[VBScript]
Function ShowFolderList(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   For Each f1 in fc
      s = s & f1.name
      s = s & "<BR>"
   Next
   ShowFolderList = s
End Function

メソッド

Files コレクションには、メソッドはありません。

プロパティ

Count プロパティ | Item プロパティ

参 照

Drive オブジェクト | Drives コレクション | File オブジェクト | Folder オブジェクト | Folders コレクション


Folders コレクション

1 つの Folder オブジェクトに含まれるすべての Folder オブジェクトのコレクションです。

解説

[JScript]

次のコードは、Folders コレクションを取得し、Enumerator オブジェクトと for ステートメントを使ってコレクションに繰り返し処理を行う例です。

[JScript]
function ShowFolderList(folderspec)
{
   var fso, f, fc, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
   fc = new Enumerator(f.SubFolders);
   s = "";
   for (; !fc.atEnd(); fc.moveNext())
   {
      s += fc.item();
      s += "<br>";
   }
   return(s);
}

[VBScript]

次のコードは、Folders コレクションを取得し、For Each...Next ステートメントを使ってコレクションに繰り返し処理を行う例です。

[VBScript]
Function ShowFolderList(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.SubFolders
   For Each f1 in fc
      s = s & f1.name
      s = s &   "<BR>"
   Next
   ShowFolderList = s
End Function

メソッド

Add メソッド (Folders コレクション)

プロパティ

Count プロパティ | Item プロパティ

参 照

Drive オブジェクト | Drives コレクション | File オブジェクト | Files コレクション | Folder オブジェクト | SubFolders プロパティ


スクリプト エンコーダの概要

スクリプト エンコーダは、スクリプト設計者のためのシンプルなコマンド ライン ツールです。このツールを使用すると、作成したスクリプトをエンコードし、Web ホストや Web クライアントによりスクリプトのソースが表示されたり変更されないように保護できます。ただし、このツールのエンコード処理は、コードがユーザーの目に触れるのを防ぐことを目的としており、エンコードされた内容がハッカーによって解読されるのを防ぐことを目的としているものではありません。

Web ページおよびサーバーサイド ASP (Active Server Pages) にスクリプトを埋め込むことで、Web 設計者はさまざまな機能を柔軟に追加できます。さらに、Windows® Scripting Host (WSH) やその他のアプリケーションでスクリプトを使用しても、同じような結果が得られます。

従来、スクリプトの欠点として、スクリプトに含まれている知的所有権を保護する手立てがないことや、作成したとおりの機能をユーザーが利用できるという保証がないことが挙げられてきました。優れたアルゴリズムを採用して、慎重にスクリプトを設計しても、テキストとして保存される以上、その内容は常に外部に筒抜けでした。その結果、どのレベルのスクリプト ユーザーでもスクリプト コードを表示して、その内容をコピーしたり、修正したり、自分のものとして使用したりすることができました。

スクリプトレットを使用している場合は、ソース コードを保護することがさらに重要になります。スクリプトレットは、スクリプト設計者が手軽に利用できる魅力的なコンポーネント アーキテクチャですが、その反面、設計者の本意の反して、第三者にソース コードを流用されてしまう可能性があります。エンコードされたスクリプトを含んだファイルでは、1 箇所でも変更されるとスクリプトが動作しなくなるので、スクリプトの整合性を確実に保護できます。

参 照

スクリプト エンコーダを使用する | スクリプト エンコーダの構文 | スクリプト エンコードのサンプル


スクリプト エンコーダを使用する

スクリプト エンコーダでは、スクリプト コードだけをエンコードします。ファイル内のその他のテキストはエンコードされず、通常のテキストとして表示されます。スクリプト エンコーダを使用する場合は、スクリプトを通常どおり開発してデバッグした後、完成したスクリプトをスクリプト エンコーダでエンコードします。スクリプト エンコーダでは、ソース コード内でエンコードを開始する位置をマーカーで示します。

Visual Basic® Scripting Edition (VBScript) の場合、著作権メッセージが通常のテキストとして表示されるようにするには、エンコード マーカーを次の例のように使用します。

<SCRIPT LANGUAGE="VBScript">
'Copyright® 1998. XYZ Productions. All rights reserved.
'**Start Encode**
' コードをここに記述します。
</SCRIPT>

JScript® の場合は、エンコード マーカーを次の例のように使用します。

<SCRIPT LANGUAGE="JScript">
//Copyright® 1998. ZYX Productions. All rights reserved.
//**Start Encode**
// コードをここに記述します。
</SCRIPT>

スクリプト エンコーダを呼び出すと、スクリプト ブロック内で開始マーカーの前にあるテキストはエンコードされず、その後ろにあるテキストはすべてエンコードされます。したがって、開始マーカーを省略すると、スクリプト ブロック全体がエンコードされます。また、スクリプト ブロックの末尾に開始マーカーを置くと、スクリプト ブロックは一切エンコードされません。

エンコードを実行すると <SCRIPT> タグの中の言語指定子が変更されることに注意してください。VBScript の場合、新しい指定子は次のようになります。

<SCRIPT LANGUAGE="VBScript.Encode">

JScript の場合、新しい指定子は次のようになります。

<SCRIPT LANGUAGE="JScript.Encode">

スクリプト エンコーダを呼び出すには、MS-DOS コマンド ラインまたは [ファイル名を指定して実行] ダイアログ ボックスに次のコマンドを入力します。

SRCENC [switches] inputfile outputfile

参 照

スクリプト エンコーダの概要 | スクリプト エンコーダの構文 | スクリプト エンコードのサンプル


スクリプト エンコーダの構文

ユーザーがスクリプト ソース コードを簡単に表示したり変更したりできないように、スクリプト ソース コードをエンコードします。

構文

SCRENC [/s] [/f] [/xl] [/l defLanguage] [/e defExtension] inputfile outputfile

スクリプト エンコーダの構文の指定項目は次のとおりです。

指定項目 | 説明
/s | 省略可能です。このスイッチを使うと、スクリプト エンコーダを画面への出力が行われないサイレント モードで実行できます。このスイッチを省略すると、詳細が画面に出力されます。
/f | 省略可能です。入力ファイルを出力ファイルで上書きします。このオプションを指定すると、元の入力ファイルの内容が消されます。このスイッチを省略すると、ファイルは上書きされません。
/xl | 省略可能です。.ASP ファイルの先頭に @language ディレクティブが追加されないようにします。このスイッチを省略すると、すべての .ASP ファイルに対して @language ディレクティブが追加されます。
/l defLanguage | 省略可能です。エンコード中に使用する既定のスクリプト言語 (JScript または VBScript) を指定します。このオプションで指定した言語属性は、エンコード対象のファイル内のスクリプト ブロックのうち、言語属性が含まれていないスクリプト ブロックに適用されます。このスイッチを省略すると、HTML ページおよびスクリプトレットの場合は JScript が既定の言語として、ASP (Active Server Pages) の場合は VBScript が既定の言語として使用されます。テキスト ファイルの場合は、ファイル拡張子が .js と .vbs のどちらであるかに応じて既定のスクリプト言語が決定されます。
/e defExtension | 省略可能です。入力ファイルを特定のファイルの種類に関連付けます。たとえ入力ファイルに認識可能なファイルの種類に該当するコンテンツが含まれても、認識可能なファイル拡張子が付けられていなければ、入力ファイルの拡張子からファイルの種類を判別できません。そのような場合は、このオプションが役立ちます。このオプションには、既定値はありません。このオプションを省略した場合、認識できない拡張子を持つファイルに対して、スクリプト エンコーダを実行できません。認識可能なファイル拡張子は、asa、asp、cdx、htm、html、js、sct、および vbs です。
inputfile | 必ず指定します。エンコードする入力ファイルの名前です。現在のディレクトリを基準とする相対パス情報を必要に応じて含めます。
outputfile | 必ず指定します。生成する出力ファイルの名前です。現在のディレクトリを基準とする相対パス情報を必要に応じて含めます。

解説

スクリプト エンコーダで処理できるファイルには、以下の 4 種類があります。

  • ASP ファイル。有効な HTML ブロックと <SCRIPT> ... </SCRIPT> タグまたは <% ...%> タグで囲まれた埋め込みスクリプト ブロックが含まれているテキスト ベースの ASP (Active Server Pages) ファイルです。この形式のファイルは、Microsoft Internet Information Services (IIS) などのアプリケーションで使用されます。認識可能なファイル拡張子は、.asp、.asa、.cdx です。
  • HTML ファイル。有効な HTML ブロックと埋め込みスクリプト ブロックが含まれているテキスト ファイルです。この形式のファイルは、Microsoft FrontPage や Microsoft Visual InterDev など、ほとんどすべての Web 設計ソフトウェアおよび Web ブラウザで使用されます。認識可能なファイル拡張子は、.htm および .html です。
  • テキスト ファイル。タグで囲まずにスクリプトだけを記述したテキスト ファイルです。この形式のファイルは、Windows Scripting Host (WSH) や Microsoft Outlook などのアプリケーションで使用されます。認識可能なファイル拡張子は、.js および .vbs です。エンコード後、.js 拡張子は .jse に、.vbs 拡張子は .vbe にそれぞれ変更されます。
  • スクリプトレット。有効なスクリプトレット コードを <SCRIPT> ... </SCRIPT> タグで囲んで記述したテキスト ファイルです。認識可能なファイル拡張子は、.sct および .wsh です。

使用例

ここでは、スクリプト エンコーダの使用例をいくつか示し、得られる結果について簡単に説明します。

次の例では、入力ファイル test.html をエンコードし、出力ファイル encode.html を生成します。

screnc test.html encode.html

次の例では、入力ファイル test.html をエンコードし、エンコード後の出力ファイルで入力ファイルを上書きします。

screnc /f test.htm

次の例では、現在のディレクトリに格納されているすべての .ASP ファイルをエンコードし、エンコード後の出力ファイルを c:\temp に書き込みます。

screnc *.asp c:\temp

次の例では、現在のディレクトリに格納されているすべてのファイルを .ASP ファイルとしてエンコードし、エンコード結果を c:\temp に書き込みます。

screnc /e asp *.* c:\temp

次の例では、入力ファイル test.htm をエンコードし、出力ファイル encode.htm を生成します。言語属性が設定されていないスクリプト ブロックに対して VBScript を既定の言語として使用するように指定しています。

screnc /l vbscript test.htm encode.htm

次の例では、現在のディレクトリに格納されているすべてのスクリプトレット ファイルをエンコードし、エンコード後のファイルでスクリプトレット ファイルを上書きします。その際、画面にメッセージを表示しません。

screnc /s /f *.sct

参 照

スクリプト エンコーダの概要 | スクリプト エンコーダを使用する | スクリプト エンコードのサンプル


スクリプト エンコードのサンプル

ここでは、保護の必要な JScript コードを含む Web ページの簡単な例を示します。

<HTML>
<HEAD>
<TITLE>Script Encoder Sample Page</TITLE>
<SCRIPT LANGUAGE="JScript">
<!--//
//Copyright® 1998 Microsoft Corporation. All Rights Reserved.
//**Start Encode**
function verifyCorrectBrowser(){
  if(navigator.appName == "Microsoft Internet Explorer")
    if (navigator.appVersion.indexOf ("5.") >= 0)
      return(true);
    else
      return(false);
}
function getAppropriatePage(){
  var str1 = "Had this been an actual Web site, a page compatible with ";
  var str2 = "browsers other than ";
  var str3 = "Microsoft Internet Explorer 5.0 ";
  var str4 = "would have been loaded.";
  if (verifyCorrectBrowser())
    document.write(str1 + str3 + str4);
  else
    document.write(str1 + str2 + str3 + str4);
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>

スクリプト エンコーダを使用した後で、このページがどのように表示されるかを示します。

<HTML>
<HEAD>
<TITLE>Script Encoder Sample Page</TITLE>
<SCRIPT LANGUAGE="JScript.Encode">
<!--//
//Copyright® 1998 Microsoft Corporation. All Rights Reserved.
//**Start Encode**#@~^QwIAAA==@#@&0;mDkWP7nDb0zZKD.n1YAMGhk+Dvb`@#@&P,kW`UC7kLlDGDcl22gl:n~{'~Jtr1DGkW6YP&xDnD+OPA62sKD+ME#@#@&P,~~k6PvxC\rLmYGDcCwa.n.kkWU bx[+X66Pcr*cJ#,@*{~!*P~P,P~.YEMU`DDEbIP,P,+s/n@#@&P~P,~PM+O;Mx`WC^/n#pN6EU1YbWx,oObaw.WaDrCD+nmL+v#@#@&~P7lMPdY.q,'~J_CN,Y4rkP4nnPCx,C1Y;mV,+(PkrY~~l,wCLPmKhwmYk(snPSkDt~JI@#@&P~\m.PkY.+,'PE8MWA/.kPGDtDPDtmUPri@#@&,P-CMP/D.&,'Pr\rmMWkWWY~(YnDnY,2a2^WDn.,* !,Ep@#@&,P7lD,/D.c,'~JSW;s9Ptm-+,4+U~VKl9+[REI,Pr0,c\DrWHZW..mOAMGS/nM`*#@#@&P,~P9W^Es+UOchDbO+v/YMq~_,/DDfPQ~kY.c*IP,+sd@#@&~~,P[W1;s+UDRSDkD+vdYMF~_,/O.yP_,dYM&P3~dYMc*iNz&R @*^#~@
//-->
</SCRIPT>
</HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>
メモ エンコード後は、エンコードされたテキストをたとえ 1 文字変更するだけでも、スクリプト全体の整合性が失われ、スクリプトを使用することはできなくなります。

参 照

スクリプト エンコーダの概要 | スクリプト エンコーダを使用する | スクリプト エンコーダの構文


Windows Script Host

Windows Script Host

トピック

はじめに

WSH の基本

スクリプトを実行する

Windows Script Host の基本的タスク

セキュリティと Windows Script Host

リファレンス


はじめに

トピック

WSH の新機能
WSH 5.6 の新機能について述べます。
ドキュメントの表記規則
WSH 5.6 ヘルプで使用している構文と表記規則について述べます。

参 照

WSH リファレンス
WSH リファレンスで説明されている要素の一覧です。
WSH の基本
WSH の基本概念を説明します。


WSH 5.6 の新機能

Windows Script Host の最新バージョン (WSH 5.6) では、いくつかの点で機能が強化されています。

  • 引数の扱いに関する改良 コマンド ライン引数の扱いと指定方法が従来より簡単になりました。スクリプトをほかのコマンド ライン スクリプトと一緒に使用する際の手順が簡素化されており、ユーザーにヘルプ情報を提供するスクリプトをより容易に作成できるようになっています。この機能強化により、次の表に示すような操作が可能になりました。詳細については、表の右側に示した WSH 言語機能のトピックを参照してください。
    新機能を使った操作 | 参照先
    スクリプトのスイッチをグループ化する | <runtime> 要素
    スクリプトの名前付きスイッチを定義する | <named> 要素
    スクリプトの名前なしスイッチを定義する | <unnamed> 要素
    スクリプトに例や説明を追加する <example> 要素

    <description> 要素
    生成したプロセスとの間で現在のプロセス (IOW、WSH) の環境を共有する | Exec メソッド
    プログラムから標準ストリームにアクセスする Exec メソッド

    WshScriptExec オブジェクト
    プログラムから環境変数にアクセスする Environment プロパティ

    WshEnvironment オブジェクト

    ExpandEnvironmentStrings メソッド

    Remove メソッド
    生成したスクリプト プロセスが現在実行中かどうかを判別する | Status プロパティ (WshScriptExec)
    生成したスクリプト プロセスの StdIn 入力ストリームにアクセスする | StdIn プロパティ (WshScriptExec)
    生成したスクリプト プロセスの StdOut 出力ストリームにアクセスする | StdOut プロパティ (WshScriptExec)
    生成したスクリプト プロセスの StdErr 出力ストリームにアクセスする | StdErr プロパティ (WshScriptExec)
    生成したスクリプト プロセスを終了する | Terminate メソッド (WshScriptExec)
    名前付きコマンド ライン スクリプト引数にアクセスする | WshNamed オブジェクト
    WshNamed オブジェクトに特定のキー値が格納されているかどうかを判別する | Exists メソッド
    WshNamed オブジェクトまたは WshUnnamed オブジェクトに格納されているスイッチの数を取得する | Count メソッド
  • スクリプトのリモート実行 複数のリモート コンピュータ システムにスクリプトを読み込ませて、それらをすべて同時に起動することが可能です。リモート スクリプトの実行中は、進行状況をチェックでき、スクリプトの終了後は、スクリプトが正常に実行されたかどうかを確認できます。また、異常終了した場合は、その原因を確認できます。リモート WSH オブジェクト作成用の新しいディスパッチ オブジェクトとして、WshController オブジェクトが追加されました。さらに、実行中のスクリプトのインスタンスを表す WshRemote オブジェクトも追加されました。
    新機能を使った操作 | 参照先
    リモート スクリプト オブジェクトを作成する リモート WSH インターフェイス | WshController オブジェクト
    リモート スクリプト オブジェクトを作成する リモート WSH インターフェイスの使用 | CreateScript メソッド
    リモート スクリプト オブジェクトを作成する ハンドルの取得 | WshRemote オブジェクト
    リモート スクリプト プロセスを開始する | Execute メソッド
    リモート スクリプトが現在実行中かどうかを判別する | Status プロパティ (WshRemote)
    リモート スクリプトが異常終了した原因を判別する | Description プロパティ (WshRemoteError)
    リモート スクリプト内のどのステートメントが異常終了の原因になったかを判別する | Line プロパティ (WshRemoteError)
    リモート スクリプトの異常終了後にエラー情報にアクセスする | WshRemoteError オブジェクト
    コード行のどの文字にエラーがあるかを判別する | Character プロパティ
    スクリプト エラーを表すエラー番号を判別する | Number プロパティ
    スクリプト エラーのソースを判別する | Source プロパティ
    ソース コード内のどの行がエラーの原因になったかを判別する | SourceText プロパティ
    リモート オブジェクト イベントを処理する Start イベント

    End イベント

    Error イベント
  • 新しく開始したプロセスをオブジェクトとして扱うことが可能 生成したプロセスのステータスを判別して、それらのプロセスの標準 I/O ストリームにアクセスします。
    新機能を使った操作 | 参照先
    プロセスを生成する | Exec メソッド
    実行中のプロセスを表すオブジェクトにアクセスする | WshScriptExec オブジェクト
    プロセス ステータス情報にアクセスする | Status プロパティ (WshScriptExec)
    標準 I/O ストリームにアクセスする | StdOut プロパティ (WshScriptExec)
    StdIn プロパティ (WshScriptExec)
    StdErr プロパティ (WshScriptExec)
  • 現在の作業ディレクトリへのアクセスが可能 アクティブなプロセスの現在の作業ディレクトリを取得または変更できます。
    新機能を使った操作 | 参照先
    アクティブなディレクトリの情報にアクセスする | CurrentDirectory プロパティ
  • スクリプト固有のセキュリティ問題への対処 セキュリティ モデルが一新されており、従来より安全にスクリプトを配布および実行できます。
    新機能を使った操作 | 参照先
    スクリプトの署名と確認 | セキュリティと Windows Script Host


Windows Script Host をアップグレードする

Windows 2000 または Windows Me を現在使用している場合は、WSH 2.0 が既にコンピュータ システムにインストールされています。Windows 95/98、または Windows NT 4.0 を使用している場合は、WSH 1.0 がインストールされています。WSH 5.6 にアップグレードする方法については、Microsoft Windows スクリプト テクノロジ Web サイト (http://www.microsoft.com/japan/developer/scripting/default.htm) を参照してください。

メモ WSH の最新バージョンが 5.6 になっているのは、ファイル バージョンに関する問題の解決策として、バージョン番号をスキップしたためです。


ヘルプの表記規則

Windows Script Host 5.6 ヘルプでは、情報をわかりやすく示すために、異なるフォント、字体、および色を一定の規則で使い分けています。

表記の例

情報の種類 | 表記例
コードは、青色の Courier フォントで表記します。
WScript.Echo "Hello from VBScript"
トピックで取り上げている要素がコード内に記載されている場合、青色の太字 Courier フォントで表記します。
WScript.Echo "Hello from VBScript"
ユーザー インターフェイス項目は角かっこに囲まれた文字列で表記します。 | [プロパティ] ダイアログ ボックスの [スクリプト] タブを...
リンクは、下線付きの文字列で表記します。 | WshNetwork オブジェクト
下線付きのリンクが斜体で表記されている場合、クリックすると情報がポップアップ表示されます。 | <?job error="flag" debug="flag" ?>


WSH バージョン情報

次の表は、Microsoft ホスト アプリケーションによって実装された Windows Script Host のバージョンの一覧です。

ホスト アプリケーション | 1.0 | 2.0 | 5.6
Microsoft Windows 98 | x |  |
Microsoft Windows NT 4 オプション パック | x |  |
Microsoft Windows 2000 |  | X |

次の表は、Windows Script Host の言語要素と、それが導入されたときのバージョンの一覧です。

要素 | 1.0 | 2.0 | 5.6
<?job ?> 要素 |  | X |
<?XML ?> 要素 |  | X |
AddPrinterConnection メソッド | x |  |
AddWindowsPrinterConnection メソッド |  | X |
AppActivate メソッド |  | X |
Arguments プロパティ | x |  |
AtEndOfLine プロパティ |  | X |
AtEndOfStream プロパティ |  | X |
Character プロパティ |  |  | x
Close メソッド |  | X |
Column プロパティ |  | X |
ComputerName プロパティ | x |  |
ConnectObject メソッド |  | x |
Count メソッド | x |  |
CreateObject メソッド | x |  |
CreateScript メソッド |  |  | x
CreateShortcut メソッド | x |  |
Description プロパティ | x |  |
Description プロパティ (WshRemote) |  |  | x
DisconnectObject メソッド | x |  |
Echo メソッド | x |  |
EnumNetworkDrives メソッド | x |  |
EnumPrinterConnections メソッド | x |  |
Environment プロパティ | x |  |
Error プロパティ (WshRemote) |  |  | x
<example> 要素 |  |  | x
Exec メソッド |  |  | x
Execute メソッド |  |  | x
Exists メソッド |  |  | x
ExitCode プロパティ |  |  | x
ExpandEnvironmentStrings メソッド | x |  |
FullName プロパティ | x |  |
GetObject メソッド | x |  |
GetResource メソッド |  | x |
HotKey プロパティ | x |  |
IconLocation プロパティ | x |  |
Item プロパティ | x |  |
Item プロパティ (WshNamed) |  |  | x
Item プロパティ (WshUnnamed) |  |  | x
<job> 要素 |  | x | x
Length プロパティ | x |  |
Line プロパティ |  | x |
Line プロパティ (WshRemote) |  |  | x
LogEvent メソッド |  | x |
MapNetworkDrive メソッド | x |  |
Name プロパティ | x |  |
<named> 要素 |  |  | x
Number プロパティ |  |  | x
<object> 要素 |  | x |
<package> 要素 |  | x |
Path プロパティ | x |  |
Popup メソッド | x |  |
ProcessID プロパティ |  |  | x
Quit メソッド | x |  |
Read メソッド |  | x |
ReadAll メソッド |  | x |
ReadLine メソッド |  | x |
<reference> 要素 |  | x |
RegDelete メソッド | x |  |
RegRead メソッド | x |  |
RegWrite メソッド | x |  |
Remove メソッド | x |  |
RemoveNetworkDrive メソッド | x |  |
RemovePrinterConnection メソッド | x |  |
<resource> 要素 |  |  |
Run メソッド | x |  |
<runtime> 要素 |  |  | x
Save メソッド | x |  |
<script> 要素 |  | x |
ScriptFullName プロパティ | x |  |
ScriptName プロパティ | x |  |
SendKeys メソッド |  | x |
SetDefaultPrinter メソッド | x |  |
ShowUsage メソッド |  |  | x
Skip メソッド |  | x |
SkipLine メソッド |  | x |
Sleep メソッド |  | x |
Source プロパティ |  |  | x
SourceText プロパティ |  |  | x
SpecialFolders プロパティ | x |  |
Status プロパティ (WshRemote) |  |  | x
Status プロパティ (WshScriptExec) |  |  | x
StdErr プロパティ |  | x |
StdErr プロパティ (WshScriptExec) |  |  | x
StdIn プロパティ |  | x |
StdIn プロパティ (WshScriptExec) |  |  | x
StdOut プロパティ |  | x |
StdOut プロパティ (WshScriptExec) |  |  | x
TargetPath プロパティ | x |  |
Terminate メソッド (WshScriptExec) |  |  | x
<usage> 要素 |  |  | x
UserDomain プロパティ | x |  |
UserName プロパティ | x |  |
Version プロパティ | x |  |
WindowStyle プロパティ | x |  |
WorkingDirectory プロパティ | x |  |
Write メソッド |  | x |
WriteBlankLines メソッド |  | x |
WriteLine メソッド |  | x |
WScript オブジェクト | x |  |
WshArguments オブジェクト | x |  |
WshController オブジェクト |  |  | x
WshEnvironment オブジェクト | x |  |
WshNamed オブジェクト |  |  | x
WshNetwork オブジェクト | x |  |
WshRemote オブジェクト |  |  | x
WshRemoteError オブジェクト |  |  | x
WshScriptExec オブジェクト |  |  | x
WshShell オブジェクト | x |  |
WshShortcut オブジェクト | x |  |
WshSpecialFolders オブジェクト | x |  |
WshUnnamed オブジェクト |  |  | x
WshUrlShortcut オブジェクト | x |  |


Windows Script Host の基礎

Microsoft® Windows® Script Host (WSH) は、WSH 互換のスクリプト エンジンで使用できる言語に依存しないスクリプト ホストです。そのため、32 ビット Windows プラットフォーム上でのスクリプト処理が簡単、強力、かつ柔軟になります。スクリプトは、Windows デスクトップおよびコマンド プロンプトのどちらからでも実行できます。

ログオン スクリプト、管理スクリプト、およびコンピュータの自動処理など、非対話型のスクリプトを用いる場面では、Windows Script Host は理想的なツールとなります。

トピック

WSH とは
Windows Script Host の概要を示します。
ホスト環境とスクリプト エンジン
WSH ホスト環境と使用可能なスクリプト エンジンについて説明します。
WSH で使用できるスクリプトを作成する
WSH 互換のスクリプトの作成方法について説明します。
Windows Script Host のオブジェクト モデル
WSH アーキテクチャの階層図です。


WSH とは

Windows Script Host (WSH) は、Windows 管理ツールの 1 つです。

WSH は、スクリプト実行用のホスト環境を提供します。スクリプトがコンピュータに到着すると、WSH がホストの役目を果たします。WSH はスクリプトがオブジェクトとサービスを利用できるようにし、スクリプトを実行するためのガイドラインを提供します。また、セキュリティの管理を行うほか、適切なスクリプト エンジンを呼び出します。

スクリプト エンジンが WSH に対応していれば、WSH は言語に依存せずに動作します。そのため、Windows プラットフォーム上でのスクリプト処理が簡単、強力、かつ柔軟になります。スクリプトは、Windows デスクトップおよびコマンド プロンプトのどちらからでも実行できます。

ログオン スクリプト、管理スクリプト、およびコンピュータの自動処理など、非対話型のスクリプトを用いる場面では、Windows Script Host は理想的なツールとなります。

WSH のオブジェクトとサービス

Windows Script Host には、スクリプトの実行を直接操作するためのオブジェクトが用意されています。その他の処理を行うためのヘルパー関数もあります。これらのオブジェクトとサービスを使用することで、次のようなタスクを実行できます。

  • 画面にメッセージを出力する
  • CreateObject や GetObject などの基本的な関数を実行する
  • ネットワーク ドライブをマッピングする
  • プリンタに接続する
  • 環境変数を取得および変更する
  • レジストリ キーを変更する

WSH を使用するには

Windows Script Host は、Microsoft Windows 98、Windows 2000、および Windows Me に組み込まれています。Windows 95 の場合は、Microsoft Windows スクリプト テクノロジ Web サイト (http://www.microsoft.com/japan/developer/scripting/default.htm) から Windows Script Host 5.6 をダウンロードして利用できます。

メモ 上記の Web サイトにアクセスすると、WSH を新しいバージョンにアップグレードすることもできます。Microsoft Windows 98、Windows 2000、および Windows Me に組み込まれている WSH のバージョンは、1.0 または 2.0 です。新しい機能を利用するには、バージョン 5.6 にアップグレードする必要があります。

参 照

Windows Script Host のオブジェクト モデル | CreateObject | GetObject


スクリプトを使って Windows を自動化する

単純な繰り返し作業を効率的に実行することは、まさしくコンピュータ本来の目的です。しかし、一連の繰り返し作業を組み合わせて実行する場合には、どうすればよいでしょうか。スクリプトによる自動化がその答えとなります。

スクリプトとは

スクリプトとは、JScript や VBScript などのスクリプト言語で作成されたプログラムのことです。このほかのスクリプト言語として、Rexx、Python、Perl などもあります。C++ や Visual Basic などのプログラミング言語に比べて、スクリプト言語は、小規模な問題を短時間で解決する目的で、比較的単純なアプリケーションを作成するのに適しています。

Windows を自動化する

多くの場合、スクリプトはマクロと同様に、手動で実行されるタスクを自動化する目的で使用されます。スクリプトは、次のような用途に適しています。

  • Windows 環境の操作
  • ほかのプログラムの実行
  • ログオン手順の自動化
  • ほかのアプリケーションに対するキー シーケンスの送出

たとえば、複数の類似したタスクを自動化する場合なら、それらのタスクをすべて処理する汎用スクリプトを作成することが考えられます。

イベントに応答して、何らかの処理を開始するスクリプトを作成することも考えられます。イベントの発生を継続的に監視し、特定の条件を満たすイベントが発生した場合にのみ特定の処理を開始することも可能です。

また、繰り返しのないタスクについても、スクリプトが役立つことがあります。たとえば、多くの操作を順番に実行する必要のあるタスクでは、スクリプトを作成することで、すべての操作を自動的に実行することが可能になります。

参 照

スクリプト ファイルの種類


スクリプト ファイルの種類

スタンドアロン スクリプトには、いくつかの種類があり、それぞれ拡張子が異なります。代表的な種類を、次の表に示します。

拡張子 | スクリプトの種類 | 説明
.bat | MS-DOS バッチ ファイル | MS-DOSオペレーティング システムのバッチ ファイル。
.asp | ASP ページ | ASP (Active Server Page) ファイル。
.html | HTML ファイル | Web ページ。
.js | JScript ファイル | Windows スクリプト。
.vbs | VBScript ファイル | Windows スクリプト。
.wsf | Windows Script Host ファイル | Windows スクリプト用のコンテナ ファイルまたはプロジェクト ファイル。WSH 2.0 以降でサポートされています。
.wsh | Windows Script Host ファイル | スクリプト ファイル用のプロパティ ファイル。WSH 1.0 以降でサポートされています。

これらのスクリプトには、それぞれ長所と短所があり、用途も異なります。どの種類のスクリプトを使用するかは、実際のニーズによって決まります。

しかし、1 つのニーズに対し 1 種類のスクリプトだけでは対処できない場合もあります。そのような場合は、問題をいくつかの部分に分け、各部分に対して、最も適切なスクリプト言語でスクリプトを作成することになります。

複数の種類のスクリプトを併用する場合は、Windows Script Host ファイル (WSF ファイル) が便利です。WSF ファイルでは、スクリプトの一部として、ほかのスクリプト ファイルを参照することができます。使用頻度の高い関数のライブラリを作成して、1 か所にまとめて保存しておけば、それらを複数の WSF ファイルから参照できます。

参 照

Windows Script Host のオブジェクト モデル


ホスト環境とスクリプト エンジン

Web ページにスクリプトを埋め込むことがよくあります。その Web ページが HTML ページであればクライアント側でスクリプトが実行され、ASP ページであればサーバー側でスクリプトが実行されることになります。HTML ページに埋め込まれたスクリプトの場合は、スクリプト コードを解釈して実行するエンジン コンポーネントが Internet Explorer などの Web ブラウザによって読み込まれます。ASP ページに埋め込まれたスクリプトの場合は、Internet Information Services (IIS) に組み込まれているエンジンによって、スクリプト コードが解釈および実行されます。

HTML ページまたは ASP ページに含まれておらず、スタンドアロンとしてテキスト ファイルに記述されているスクリプトは、Windows Script Host によって実行されます。

利用可能なスクリプト エンジン

Microsoft Windows 98、Windows 2000、および Windows Me には、Microsoft JScript および VBScript の 2 つのスクリプト エンジンが用意されており、通常はこのいずれかを使用してスクリプトを記述します。Windows Script Host では、このほか、Perl、REXX、Python などのスクリプト エンジンも使用できます。

メモ 詳細については、Microsoft Developer Network (MSDN) (http://msdn.microsoft.com/workshop/languages/clinic/vbsvjs.asp) を参照してください。

JScript で作成したスタンドアロン スクリプトの拡張子は .js となり、VBScript で作成したスタンドアロン スクリプトの拡張子は .vbs となります。これらの拡張子は、Windows に登録されています。これらのいずれかの種類のファイルを実行すると、関連付けられているスクリプト エンジンが Windows Script Host 経由で呼び出され、ファイルが解釈および実行されます。

メモ ほかのエンジンを実行するには、そのエンジンを適切に登録しておく必要があります。


WSH で使用できるスクリプトを作成する

Windows スクリプトはテキスト ファイルです。WSH 互換のスクリプト拡張子 (.js、vbs、または .wsf) でスクリプトを保存しさえすれば、どのテキスト エディタでもスクリプトを作成できます。

最も多く使われているテキスト エディタは、Windows に標準で付属しているメモ帳です。普段から使用している HTML エディタ、Microsoft Visual C++、または Visual InterDev でスクリプトを作成することもできます。

メモ帳でスクリプトを作成するには

  1. メモ帳を起動します。
  2. スクリプトを記述します。たとえば、「WScript.Echo("Hello World!");」と入力します。
  3. このテキスト ファイルに既定の .txt 拡張子ではなく、.js 拡張子を付けて保存します。たとえば、ファイル名を Hello.js とします。
  4. 保存したファイルをダブルクリックします。
  5. Windows Script Host から JScript エンジンが呼び出され、スクリプトが実行されます。この例では、"Hello World!" というメッセージを表示するメッセージ ボックスが表示されます。


スクリプトを分割し再利用性を高める

スクリプトを記述する手間を省くには、1 つのスクリプトを複数のファイルに分割します。まず、1 つの .wsf ファイルを作成し、そのファイルを実行の開始ポイントにします。ほかの部分は、.js ファイルまたは .vbs ファイルとして保存します。これらのファイルを .wsf ファイルから参照します。

この方法でコードをいくつかの部分に分けると、部分ごとにデバッグを実施できるので、コードの堅牢性が向上します。また、繰り返し呼び出される関数を別の部分として作成できるので、コードの再使用性も向上します。


Windows Script Host のオブジェクト モデル

Windows Script Host のオブジェクト モデルは、14 のオブジェクトで構成されます。ルート オブジェクトは WScript オブジェクトです。

Windows Script Host のオブジェクト モデル階層は、下の図に示すとおりです。この図で、いずれかのオブジェクトをクリックすると、関連するヘルプ トピックが表示されます。

WshScriptExec ObjectWshSpecialFolders CollectionWshEnvironment CollectionWshUrlShortCut ObjectWshShortCut ObjectWshShell ObjectWshNetwork ObjectWshRemoteError ObjectWshRemote ObjectWshController ObjectWshUnnamed CollectionWshNamed CollectionWshArguments CollectionWScript Object

Windows Script Host のオブジェクト モデルは、多くの管理タスクを論理的かつ体系的に実行できるように設計されています。このモデルで用意されている COM インターフェイスは、次の 2 つの主要カテゴリに分類できます。

  • スクリプトの実行とトラブルシューティング

    これらのインターフェイスは、Windows Script Host の基本操作、メッセージの画面出力、CreateObject や GetObject などの基本的 COM 関数などの機能をスクリプトに対して提供します。

  • ヘルパー関数

    ヘルパー関数は、ネットワーク ドライブのマッピング、プリンタへの接続、環境変数の取得と変更、レジストリ キーの操作などの処理を実行するためのプロパティとメソッドです。Windows Script Host には、管理者が単純なログオン スクリプトを作成する際に使用できるヘルパー関数も用意されています。

WSH のオブジェクトおよび実行可能なタスク

次の表は、WSH オブジェクトの一覧です。各オブジェクトの用途として典型的なタスクも示しています。

オブジェクト | このオブジェクトで実行できるタスク
Wscript
  • コマンド ライン引数を設定および取得する
  • スクリプト ファイルの名前を取得する
  • ホスト ファイルの名前 (wscript.exe または cscript.exe) を取得する
  • ホスト バージョン情報を取得する
  • COM オブジェクトを作成、接続、および切断する
  • イベント シンクを作成する
  • プログラムによってスクリプトの実行を停止する
  • 既定の出力デバイス (ダイアログ ボックスやコマンド ラインなど) に情報を出力する
WshArguments | すべてのコマンド ライン引数にアクセスする
WshNamed | 名前付きコマンド ライン引数にアクセスする
WshUnnamed | 名前なしコマンド ライン引数にアクセスする
WshNetwork
  • ネットワーク共有およびネットワーク プリンタを接続および切断する
  • ネットワーク共有のマッピングを設定および解除する
  • 現在ログオンしているユーザーに関する情報にアクセスする
WshController | WshController のメソッド CreateScript() を使用してリモート スクリプト プロセスを作成する
WshRemote
  • コンピュータ ネットワーク上のコンピュータ システムをリモートで管理する
  • プログラムによってほかのプログラムやスクリプトを操作する
WshRemote Error | スクリプト エラーが発生してリモート スクリプト (WshRemote オブジェクト) が異常終了した場合のエラー情報にアクセスする
WshShell
  • プログラムをローカルで実行する
  • レジストリの内容を操作する
  • ショートカットを作成する
  • システム フォルダにアクセスする
  • 環境変数 (WINDIR、PATH、PROMPT など) を操作する
WshShortcut | プログラムによってショートカットを作成する
WshSpecialfolders | Windows の専用フォルダのいずれかにアクセスする
WshURLShortcut | プログラムによってインターネット リソースへのショートカットを作成する
WshEnvironment | 環境変数 (WINDIR、PATH、PROMPT など) のいずれかにアクセスする
WshScriptExec Exec() で実行したスクリプトに関するステータス情報およびエラー情報を取得する

StdIn、StdOut、StdErr にアクセスする

管理者が Windows プラットフォーム上で各種タスクを実行する際には、Windows Script Host に用意されているオブジェクト インターフェイスのほかに、オートメーション インターフェイスを公開している ActiveX コントロールも使用できます。たとえば、管理者が Windows Active Directory サービス インターフェイス (ADSI) を管理するためのスクリプトを作成することなどが可能です。


スクリプトを実行する

スクリプトは、次の 3 通りの方法で実行できます。

  • Windows 環境内でスクリプトのアイコンをダブルクリックします。スクリプトは、通常の実行可能ファイルと同様の方法で実行できます。
  • Windows の [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。[ファイル名を指定して実行] ダイアログ ボックスの [名前] フィールドにスクリプトのフル パスを入力し、[OK] をクリックします。
  • コマンド ラインにスクリプトの名前を入力します。

参 照

WScript.exe でスクリプトを実行する | CScript.exe でスクリプトを実行する | スクリプトの実行時に指定する情報 | ドラッグ アンド ドロップのサポート


Windows スクリプト ファイル (.wsf) を使用する

Windows スクリプト (*.wsf) ファイルは、XML (Extensible Markup Language) コードを含むテキスト ドキュメントです。Windows スクリプト ファイルでは、スクリプトの柔軟性を向上するいくつかの機能がサポートされています。Windows スクリプト ファイルはエンジンに依存しないので、Windows スクリプト互換の任意のスクリプト エンジンで作成したスクリプトを Windows スクリプト ファイルに含めることができます。Windows スクリプト ファイルは、一種のコンテナとして機能します。

.wsf ファイルを使用してスクリプトを作成すると、次のような機能を利用できます。

.wsf ファイルでサポートされている機能 | 利点
インクルード ステートメント | VBScript ファイルまたは JScript ファイルに記述されている関数を Windows Script Host プロジェクトに取り込むことができます。
複数のエンジン | 同じファイル内で複数のスクリプト言語を使用できます。
タイプ ライブラリ | コードに定数を追加できます。
ツール | 任意の XML エディタでファイルを編集できます。
複数のジョブ | 1 つのファイルに複数のジョブを記述できるので、すべてのコードを 1 か所に保存できます。

インクルード ステートメント

以前に作成した Windows Script Host プロジェクトに .js ファイルおよび .vbs ファイルが含まれている場合は、.wsf ファイルを経由して、それらを Windows Script Host で使用することができます。関数のライブラリを 1 つの .wsf ファイルにカプセル化すれば、ほかの複数の .wsf ファイルからそれらの関数を使用できます。

次の例では、.wsf ファイルに JScript ファイル (fso.js) をインクルードしており、さらに、インクルード ファイル内の関数 (GetFreeSpace) を呼び出す VBScript 関数をインクルードしています。ここでは、fso.js の内容も示しておきます。

<job id="IncludeExample">
   <script language="JScript" src="FSO.JS"/>
   <script language="VBScript">
      ' C ドライブの空き領域を取得します。
      s = GetFreeSpace("c:")
      WScript.Echo s
   </Script>
</job>

fso.js ファイルには、次のコードが記述されています。

function GetFreeSpace(drvPath) {
   var fs, d, s;
   fs = new ActiveXObject("Scripting.FileSystemObject");
   d = fs.GetDrive(fs.GetDriveName(drvPath));
   s = "Drive " + drvPath + " - " ;
   s += d.VolumeName;
   s += " Free Space: " + d.FreeSpace/1024 + " Kbytes";
   return s;
}

複数エンジンのサポート

1 つのスクリプト言語だけではニーズを完全に満たせないことがあります。このため、Windows Script Host では、単一の .wsf ファイル内で複数の言語を組み合わせて使用できるようになっています。次の例は、VBScript コードと PerlScript コードの両方が含まれている .wsf ファイルを示しています。

<job id="PERLandVBS">
   <script language="PerlScript">
      sub PerlHello {
         my $str = @_[0];
         $WScript->Echo($str);
      }
   </script>

   <script language="VBScript">
      WScript.Echo "Hello from VBScript"
      PerlHello "Hello from PERLScript"
   </script>
</job>

タイプ ライブラリのサポート

ここでは、Microsoft Visual Basic 5.0 で作成した "MyComponent" という名前のタイプ ライブラリを使用する例を示します。"MyComponent" では、定数 MyError を次のステートメントで定義しています。

Public Const MyError = "You are not using MyComponent correctly"

このタイプ ライブラリは、mycomponent.lib ファイルとして実装されており、C:\MyComponent にインストールされます。

<job id="IncludeExample">
   <reference progid="MyComponent.MyClass">
   <script language="VBScript">
      Dim MyVar
      Set MyVar = CreateObject("MyComponent.MyClass")
      Currentreturn = MyVar.MyMethod
      If Currentreturn = False then
         WScript.Echo MyError
      End If
   </script>
</job>

ツールのサポート

.wsf ファイルは XML 形式なので、XML をサポートしている任意のエディタで .wsf ファイルを編集できます。これには、メモ帳などのテキスト エディタが含まれます。

複数のジョブのサポート

個々のスクリプトを別々のファイルに保存する必要はありません。すべてのスクリプトを単一の .wsf ファイルに含め、それらを複数のジョブに分割することができます。こうして定義したジョブは、次の例のような構文を通じて個別に実行できます。ここで、"MyFirstJob" は MyScripts.wsf ファイルに含まれているジョブの名前です。

CScript //Job:MyFirstJob MyScripts.wsf


WSH におけるドラッグ アンド ドロップのサポート

WSH スクリプトにファイルをドラッグすることができます。ドラッグしたファイルの名前は、コマンド ライン引数に変換されます。これらのファイル名は一覧表示されるので、任意のスクリプト オブジェクトでファイルを操作できるようになります。

スクリプトの引数リストを表示するには

  1. ファイルを作成し、スクリプトとして認識される拡張子を持つファイル名を付けます (DragDrop.vbs など)。
  2. 次の例のようなコードをこのスクリプト ファイルに追加します。
    Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
WScript.Echo objArgs(I)
Next
  3. ファイルをハード ディスクに保存します。
  4. 1 つまたは複数のファイルをドラッグし、上で保存したファイルにドロップします。上に示したコードを使用している場合は、ファイル名が画面に出力されます。

スクリプトにドラッグできるファイルの数は、システムで許容されるコマンド ラインの長さの上限によって決まります。ドラッグしたファイル名をすべて合わせた文字数がコマンドラインの長さ制限を超えていると、ドラッグ アンド ドロップ操作が失敗します。


スクリプト プロパティを設定/カスタマイズする (.wsh)

Windows Script Host 制御 (.wsh) ファイルを使用すると、個々のスクリプトに固有の設定を記録できます。.wsh ファイルは、1 つまたは複数のスクリプトの実行をカスタマイズするためのテキスト ドキュメントです。サポートされているスクリプト ファイルのプロパティを設定すると、.wsh ファイルが自動的に作成されます。

単一のスクリプトに対して複数の .wsh ファイルを作成すると、組織内の特定のグループやユーザーのニーズに応じてスクリプトの動作をカスタマイズすることができます。たとえば、異なる設定およびパラメータを 2 つの .wsh ファイルに記録し、単一のログオン スクリプトを呼び出すときに、その 2 つの .wsh ファイルを適宜使い分けることなどが可能です。

.wsh ファイルをダブルクリックするか、またはコマンド ラインから実行すると、CScript.exe または WScript.exe がその .wsh ファイルを読み取り、スクリプトの実行にどの設定を使用するべきかを判別します。CScript または WScript は、.wsh ファイル内で定義されているプロパティを読み込みながら、オリジナルのスクリプトを実行します。

特定のスクリプトに対して .wsh ファイルを作成するには

  1. Windows エクスプローラで スクリプト ファイルを右クリックします。
  2. [プロパティ] をクリックします。
  3. スクリプトに適用する設定を選択します。
  4. [OK] または [適用] をクリックします。

    選択したスクリプト ファイルと同じ名前の .wsh ファイルが作成されます。

典型的な .wsh ファイルの例を次に示します。

[ScriptFile]
Path=C:\WINNT\Samples\WSH\showprop.vbs
[Options]
Timeout=0
DisplayLogo=1
BatchMode=0

[ScriptFile] セクション内のパス情報により、.wsh ファイルに関連付けられているスクリプト ファイルが識別されます。[Options] セクション内のキーは、[プロパティ] ダイアログ ボックスの [スクリプト] タブ上の設定に対応しています。

メモ .wsh ファイルを実行するときには、オリジナルのスクリプト ファイルが存在していなければなりません。.wsh ファイルを通じてスクリプトを実行できない場合は、.wsh ファイル内の Path= 情報をチェックし、実行対象のスクリプトが正しく指定されているかどうかを確認してください。


コマンド プロンプトからスクリプトを実行する

Windows Script Host では、コマンド プロンプトからスクリプトを実行できます。CScript.exe には、スクリプトのプロパティを設定するためのコマンド ライン スイッチが用意されています。

CScript.exe を使用してスクリプトを実行するには

  • 次の構文を使用して、コマンド プロンプトにコマンドを入力します。
    cscript [host options...] [script name] [script options and parameters]

ホスト オプション ([host options...]) を指定すると、Windows Script Host の各種機能の有効/無効を切り替えることができます。ホスト オプションの先頭には、2 重スラッシュ (//) を付けます。スクリプト名 ([script name]) には、拡張子を付けてスクリプト ファイル名を指定し、必要なパス情報を含めます。たとえば、「d:\admin\vbscripts\chart.vbs」のように入力します。スクリプト オプションおよびパラメータ ([script options and parameters]) は、スクリプトに渡す引数です。スクリプト パラメータの先頭には、1 重スラッシュ (/) を付けます。

各パラメータは、省略可能です。ただし、スクリプト名を指定しなければ、スクリプト オプションを指定できません。ファイル名とパラメータをすべて省略すると、CScript の構文と有効なホスト パラメータが表示されます。

CScript のサンプル

Windows Script Host をインストールすると、いくつかのサンプル スクリプトがインストールされますが、http://www.microsoft.com/japan/developer/scripting/default.htm からサンプルをダウンロードすることもできます。

ここでは、Chart.vbs サンプル スクリプトがコンピュータ上の次のフォルダにコピーされていることを前提に、このサンプルの実行例を示します。

c:\sample scripts\chart.vbs

次の手順に従うと、このサンプルを実行するときにロゴの表示と非表示を切り替えることができます。

スクリプトを実行するときにロゴを表示するかどうかを指定するには

  1. MS-DOS コマンド プロンプトを起動します。
  2. 次に示すように、//logo オプションまたは //nologo オプションを指定して、コマンド プロンプトからスクリプトを実行します。なお、サンプル スクリプトが異なるフォルダに保存されている場合は、パスを修正してください。
cscript //logo c:\"sample scripts"\chart.vbs
cscript //nologo c:\"sample scripts"\chart.vbs

参 照

Windows からスクリプトを実行する | スクリプトの実行時に指定する情報 | WScript.exe および CScript.exe のオプション


Windows からスクリプトを実行する

Windows Script Host では、Windows の GUI 環境からスクリプトを実行できます。WScript.exe には、スクリプトのプロパティを設定するための Windows ベースのダイアログ ボックスが用意されています。ここでは、WScript.exe を使用して Windows 環境内でスクリプトを実行する方法を説明しますが、WScript と CScript のどちらを使用していてもスクリプトの実行方法は基本的に同じです。唯一の違いは、出力の形式にあります。WScript では出力が Windows のダイアログ ボックスに表示されるのに対し、CScript ではコマンド ウィンドウが開かれ、その中に出力が表示されます。

インストール後の初期状態では、WScript が既定のホストとして設定されています。既定のホストを CScript に変更するには、コマンド ラインに次のように入力します。

cscript //h:cscript

また、Cscript から Wscript に切り替えるには、次のように入力します。

wscript //h:cscript

既定のエンジンを使用してスクリプトを実行するには :

  1. Windows エクスプローラ内またはデスクトップ上でスクリプトをダブルクリックします。
  2. [スタート] メニューの [ファイル名を指定して実行] をクリックし、スクリプトの名前を入力します。
    メモ Windows NT および Windows 2000 の場合にのみ、コマンド ラインでスクリプト名のみを入力して実行できます。

特定のエンジンを使用してスクリプトを実行するには :

  • Windows エクスプローラ内でスクリプトを右クリックします。WScript で実行するには [開く] をクリックし、CScript で実行するには [MS-DOS プロンプトで開く] (Windows 9x の場合) または [コマンド ウィンドウで開く] (Windows NT および Windows 2000 の場合) をクリックします。

または

  • [スタート] メニューの [ファイル名を指定して実行] をクリックします。[名前] ボックスに「cscript」または「wscript」と入力し、続けてスクリプトの名前を入力します。

または

  • コマンド ラインに「cscript」または「wscript」と入力し、続けてスクリプトの名前を入力します。

WScript.exe を使用してスクリプトを実行するには

  • スクリプトのファイルまたはアイコンをダブルクリックします。ファイルやアイコンは [マイ コンピュータ]、Windowsエクスプローラ、[検索] ウィンドウ、[スタート] メニュー、デスクトップに表示されています。

または

  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
  2. [名前] ボックスにスクリプトのフル パスを入力し、[OK] をクリックします。「WScript」と入力した後、続けて目的のスクリプトのフル パス名を入力することもできます。

WScript.exe にまだ関連付けられていない拡張子を持つスクリプト ファイルをダブルクリックした場合は、[ファイルを開くアプリケーションの選択] ダイアログ ボックスが表示されます。このダイアログ ボックスで WScript を選択します。[このファイルを開くときは、いつもこのアプリケーションを使う] チェック ボックスをオンにすると、その拡張子のファイルを開くときに使用する既定のアプリケーションとして WScript が登録されます。

WScript.exe および CScript.exe では、スクリプトの実行に関して、次のプロパティを設定できます。

プロパティ | 説明
[指定した時間 (秒) の後、スクリプトを停止する] | スクリプトの実行を継続する時間の上限を指定します。既定では、無制限になります。 CScript.exe の場合 : //T:nn
[コマンド コンソールでのスクリプト実行時にロゴを表示する] | スクリプトを実行する前にバナーを表示します。この値が既定値になります。この反対の設定は、//nologo です。 CScript.exe の場合 : //logo または //nologo

WScript.exe の [プロパティ] ダイアログ ボックスでは、ローカル コンピュータ上で WScript を使ってスクリプトを実行するときに必ず適用するグローバル スクリプト オプションを設定できます。また、.wsf ファイルを使うと、スクリプトごとにオプションを設定することができます。

参 照

コマンド プロンプトからスクリプトを実行する | スクリプトの実行時に指定する情報 | WScript.exe および CScript.exe のオプション


WScript.exe および CScript.exe のオプション

次の表に示すオプションは、この表の中で例外として明記している場合を除いて、基本的に WScript.exe と CScript.exe のどちらでも使用できます。

パラメータ | 説明
//B | バッチ モードでスクリプトを実行します。ユーザー プロンプトおよびスクリプト エラーをコマンド ライン表示しません。既定の設定は、対話モードです。
//D | アクティブ デバッグを使用可能にします。
//E:engine | 指定したスクリプト エンジンでスクリプトを実行します。
//H:CScript または //H:Wscript | CScript.exe または WScript.exe をスクリプト実行用の既定アプリケーションとして登録します。どちらも指定しなければ、WScript.exe が既定のアプリケーションとみなされます。
//I | 既定値です。対話モードでスクリプトを実行します。バッチ モードとは逆に、ユーザー プロンプトおよびスクリプト エラーの表示を有効にします。
//Job:<JobID> | 指定した JobID を .wsf ファイルから実行します。
//logo | 既定値です。バナーを表示します。nologo の逆の設定です。
//nologo | 実行時にバナーを表示しません。既定の設定では、logo が適用されます。
//S | このユーザーに対して、現在のコマンド ライン オプションを保存します。
//T:nn | スクリプトの実行を継続できる時間の上限 (タイムアウト) を設定します。既定では、スクリプトは制限なしで実行されます。//T パラメータでタイムアウトを設定すると、スクリプトが長時間にわたって実行されるのを防止できます。実行時間が指定値を超過すると、CScript が IActiveScript::InterruptThread メソッドを使用してスクリプト エンジンに割り込み、プロセスを強制終了します。
//U | Windows NT および Windows 2000 で使用できるオプションです。コマンド ライン出力を Unicode にします。CScript には、Unicode と ANSI を自動的に判別する機能はありません。既定の設定では、ANSI が使用されます。
//X | スクリプトをデバッガで実行します。
//? | コマンド パラメータの説明および使用法に関する概略を表示します。


スクリプトの実行時に指定する情報

スクリプトの名前を入力して実行するときに指定する情報は、使用している Windows のバージョンとスクリプトの実行方法によって異なります。

スクリプトの実行方法 | Windows のバージョン | 指定する情報
コマンド プロンプト | Windows NT または Windows 2000 | スクリプト名をファイル名拡張子を付けずに指定します (例 : myScript)。 メモ ただし、WSH 実行可能ファイルの名前を指定する場合は、スクリプト ファイルの拡張子を指定する必要があります (例 : cscript myScript.wsf)
コマンド プロンプト | Windows 9x または Windows Me | WSH 実行可能ファイルの名前を指定し、続けてスクリプト ファイルの名前を拡張子を付けて指定します。 例 : cscript myScript.wsf
[ファイル名を指定して実行] ダイアログ ボックスの [名前] ボックス | Windows NT、Windows 2000、Windows 9x または Windows Me | スクリプト ファイル名を拡張子を付けて指定します。

参 照

WScript.exe でスクリプトを実行する | CScript.exe でスクリプトを実行する | ドラッグ アンド ドロップのサポート


Remote WSH をセットアップする

Windows Script Host

リモート WSH をセットアップする

WSH 5.6 に新機能として組み込まれたリモート WSH を使うと、1 つまたは複数のリモート コンピュータ上でスクリプトを実行できます。リモート WSH では、スクリプトをローカル コンピュータからリモート コンピュータに物理的にコピーした上で実行します。リモート WSH 機能を有効にするには、まず最初に、リモート コンピュータに対して有効なセキュリティ設定値を指定する必要があります。リモート WSH を有効にする手順は、以下に示すとおりです。

メモ リモート WSH を使用するには、リモート コンピュータとローカル コンピュータの両方に Windows NT 4.0 SP3 以降がインストールされている必要があります。

リモート スクリプトを実行できるようにコンピュータを設定するには

  1. コンピュータに WSH Version 5.6 をインストールします。Windows XP を使用している場合や、Internet Explorer 6 以降がインストールされている場合は、WSH 5.6 が既にインストールされています。
    メモ WSH 5.6 は、http://www.microsoft.com/japan/developer/scripting/ からダウンロードできます。
  2. 自分のユーザー アカウントをリモート コンピュータのローカル管理者グループに追加します。
  3. サーバー上で Poledit.exe を使用して、リモート WSH を有効にします。
    メモ 管理者がリモート WSH を有効にするには、Windows 2000 リソース キットを入手するか、http://msdn.microsoft.com/scripting にアクセスして WSH の設定値が記述されている windowsscript.adm ファイルを入手する必要があります。windowsscript.adm ファイルは、適用されるグループのポリシーを設定するサーバーにコピーしなければなりません。windowsscript.adm ファイルをサーバーの \WINNT\INF ディレクトリにコピーしなくてもかまいませんが、既定の adm ファイルは \WINNT\INF ディレクトリにあります。
    メモ Poledit.exe の詳細については、Poledit.exe のオンライン ヘルプを参照してください。
  4. 以上の手順を終えたら、コンピュータ上で WSH が有効になります。WSH をテストする方法については、「スクリプトをリモートに実行する」を参照してください。

参 照

セキュリティと Windows Script Host | スクリプトをリモートに実行する


基本的な Windows Script Host タスク

ここでは、よく使われる Windows Scripting Host 5.6 スクリプトをいくつか紹介します。これらのスクリプトには基本的な機能が含まれています。

メモ 次のタスク内のスクリプトは、開発に JScript、VBScript のどちらを使用する場合でも、基本的には同じです。必要に応じて、2 つのスクリプト モデルの違いについて記載しています。また、タスクは JScript と VBScript の両方を記述しています。

トピック

  • ネットワークにアクセスする
  • 自動ログイン スクリプトを作成する
  • アプリケーションを操作する
  • ファイル管理処理を実行する
  • ショートカットを管理する
  • システム レジストリを操作する
  • スクリプトをリモートで実行する
  • スクリプトに署名する
  • WSH および WMI (Windows Management Instrumentation)


ネットワークにアクセスする

WSH を使用すると、スクリプトを通してネットワークに簡単にアクセスできます。次に、それらの機能の使用するタスクを例示します。

トピック

ネットワーク接続にアクセスする

ネットワーク プリンタを制御する

参 照

基本的な Windows Script Host タスク


ネットワーク接続にアクセスする

Network オブジェクトを使用すると、ネットワークの情報にアクセスできます。次のスクリプトは、ネットワーク ドライブを割り当てる例を示しています。このスクリプトではまず、Network オブジェクトが作成されます。次に、Network オブジェクトの MapNetworkDrive メソッドによって割り当て処理が実行されます。MapNetworkDrive メソッドには次の 5 つの引数を指定できます。

  • ローカル ドライブの割り当て (I: など)
  • マップされたリモート ドライブへのUNC (Universal Naming Convention) パス
  • ドライブを永続的に接続するかどうかを示すブール値 (省略可能)
  • ユーザー名 (省略可能)。別のアカウント情報を使用する場合に指定
  • パスワード (省略可能)。別のユーザー名を使用する場合に指定
// JScript.
var net;
net = new ActiveXObject("WScript.Network");
net.MapNetworkDrive("I:", "\\\\computer2\\public","True","jdoe","jdoepassword");

' VBScript.
Dim net
Set net = CreateObject("WScript.Network")
net.MapNetworkDrive "I:", "\\computer2\public","True","jdoe","jdoepassword"

参 照

ネットワークにアクセスする


ネットワーク プリンタを制御する

Network オブジェクトを使用すると、ネットワーク上の印刷装置にアクセスできます。以下のスクリプトは、Network オブジェクトを使ってネットワーク プリンタ装置を制御する例を示しています。

リモート プリンタに接続する

次のスクリプトは、ネットワーク共有された印刷装置に接続する例を示しています。このスクリプトではまず、Network オブジェクトが作成されます。次に、Network オブジェクトの AddWindowsPrinterConnection メソッドによって、接続処理が実行されます。AddWindowsPrinterConnection メソッドには 2 つの引数を指定できます。2 つの引数は、プリンタの呼び名と印刷装置への UNC (Universal Naming Convention) パスです。

// JScript.
var net;
net = new ActiveXObject("WScript.Network");
net.AddWindowsPrinterConnection("\\\\ServerName\\PrinterName");

' VBScript.
Dim net
Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\ServerName\PrinterName"

既定のプリンタを設定する

次のスクリプトは、既定で使用する印刷装置を設定する例を示しています。このスクリプトではまず、Network オブジェクトが作成されます。次に、Network オブジェクトの SetDefaultPrinter メソッドによって設定処理が実行されます。SetDefaultPrinter メソッドには引数を 1 つ指定できます。この引数はプリンタ名です。ローカル プリンタ名またはリモート プリンタ名 (印刷装置への UNC (Universal Naming Convention) パス) のいずれかを指定できます。

// JScript.
var net;
net = new ActiveXObject("WScript.Network");
net.SetDefaultPrinter("\\\\ServerName\\PrinterName");

' VBScript.
Dim net
Set net = CreateObject("WScript.Network")
net.SetDefaultPrinter "\\ServerName\PrinterName"

参 照

ネットワークにアクセスする | AddWindowsPrinterConnection メソッド | SetDefaultPrinter メソッド | RemovePrinterConnection メソッド


自動ログイン スクリプトを作成する

WSH を使用すると、自動ログイン スクリプトを作成できます。次の例では、ある会社に 2 つのファイル サーバー ("server1" と "server2") および 2 つのプリント サーバー ("printer1" と "printer2") が存在していることを前提としています。各サーバーにかかる負荷を分散するために、ログイン名が A - K で始まるユーザーは 1 番目のファイル サーバーとプリント サーバーに接続し、ログイン名が L - Z で始まるユーザーは 2 番目のサーバーに接続するように設定します。

メモ Windows 9x では、ユーザーのログオンが適用されるように待機時間も含まれています。
// JScript.
var oNet, sUser, cInitial, startTime;
oNet = new ActiveXObject("WScript.Network");
// ユーザー名を取得します。Windows 9x および Windows Me では、スクリプト 実行時にユーザー
// がログオンしていない可能性があります。
// ログオンが完了するまで 0.5 秒間隔でチェックを繰り返します。
sUser = oNet.UserName;
startTime = new Date();
while (sUser == "")
{
   var curTime = new Date();
   if (curTime – startTime > 30000) WScript.Quit();
   WScript.Sleep(500);
   sUser = oNet.UserName;
}
// ユーザー名の頭文字に基づいて「H」ドライブおよびプリンタの共有を作成します。
cInitial = sUser.charAt(0).toUpperCase();
if (cInitial < "L")
{
   oNet.MapNetworkDrive("h:", "\\\\server1\\users\\" + sUser);
   oNet.AddWindowsPrinterConnection("\\\\printer1\\hp", "HP LaserJet 4");
}
else
{
   oNet.MapNetworkDrive("h:", "\\\\server2\\users\\" + sUser);
   oNet.AddWindowsPrinterConnection("\\\\printer2\\hp", "HP LaserJet 4");
}

' VBScript.

Option Explicit
Dim oNet, sUser, cInitial, startTime
' Helper object
Set oNet = CreateObject("WScript.Network")
' ユーザー名を取得します。Windows 9x および Windows Me では、スクリプト 実行時にユーザー
' がログオンしていない可能性があります。
' ログオンが完了するまで 0.5 秒間隔でチェックを繰り返します。
sUser = oNet.UserName
startTime = Now
Do While sUser = ""
   If DateDiff("s", startTime, Now) > 30 Then Wscript.Quit
   Wscript.Sleep 500
   sUser = oNet.UserName
Loop
' ユーザー名の頭文字に基づいて「H」ドライブおよびプリンタの共有を作成します。
cInitial = UCase(Left(sUser, 1))
If (cInitial < "L") Then
   oNet.MapNetworkDrive "h:", "\\server1\users\" & sUser
   oNet.AddWindowsPrinterConnection "\\printer1\hp", "HP LaserJet 4"
Else
   oNet.MapNetworkDrive "h:", "\\server2\users\" & sUser
   oNet.AddWindowsPrinterConnection "\\printer2\hp", "HP LaserJet 4"
End If

参 照

基本的な Windows Script Host タスク


アプリケーションを操作する

WSH を使用して、アプリケーションを起動できます。次のスクリプトは、それらの機能の使用例を示しています。

ローカル サーバー アプリケーションを作成する

Microsoft Word などいくつかのアプリケーションは、プログラムからアクセス可能なオブジェクトを公開しています。次のスクリプトは、Word のスペル チェック機能の使用例を示しています。

// JScript.
var Word, Doc, Uncorrected, Corrected;
var wdDialogToolsSpellingAndGrammar = 828;
var wdDoNotSaveChanges = 0;
Uncorrected = "Helllo world!";
Word = new ActiveXObject("Word.Application");
Doc = Word.Documents.Add();
Word.Selection.Text = Uncorrected;
Word.Dialogs(wdDialogToolsSpellingAndGrammar).Show();
if (Word.Selection.Text.length != 1)
   Corrected = Word.Selection.Text;
else
   Corrected = Uncorrected;
Doc.Close(wdDoNotSaveChanges);
Word.Quit();

' VBScript.

Dim Word, Doc, Uncorrected, Corrected
Const wdDialogToolsSpellingAndGrammar = 828
Const wdDoNotSaveChanges = 0

Uncorrected = "Helllo world!"
Set Word = CreateObject("Word.Application")
Set Doc = Word.Documents.Add
Word.Selection.Text = Uncorrected
Word.Dialogs(wdDialogToolsSpellingAndGrammar).Show

If Len(Word.Selection.Text) <> 1 Then
Corrected = Word.Selection.Text
Else
   Corrected = Uncorrected
End If

Doc.Close wdDoNotSaveChanges
Word.Quit

Shell.Exec コマンドを使ってプログラムを生成する

Shell.Exec コマンドは Shell.Run メソッドにはない追加機能を備えています。たとえば、次のような機能があります。

  • 強化された環境変数の引き渡し機能
  • 実行可能ファイルの標準ストリームにアクセスする機能

次の VBScript コードは、標準ストリームと Shell.Exec コマンドを使って、指定した正規表現に一致するファイル名のファイルが存在するかどうかディスク内を検索する例を示しています。

まず、次のスクリプトで、現在のディレクトリおよびそのサブディレクトリにあるすべてのファイルの絶対パスを StdOut に出力します。

' VBScript.
'  MYDIR.VBS
Option Explicit
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
DoDir FSO.GetFolder(".")
Sub DoDir(Folder)
   On Error Resume Next
   Dim File, SubFolder
   For Each File In Folder.Files
      WScript.StdOut.WriteLine File.Path
   Next
   For Each SubFolder in Folder.SubFolders
      DoDir SubFolder
   Next
End Sub

次に、以下のスクリプトにより、StdIn 内でパターンに一致する行を検索し、それらをすべて StdOut に出力します。

' MyGrep.VBS
Option Explicit
Dim RE, Line
If WScript.Arguments.Count = 0 Then WScript.Quit
Set RE = New RegExp
RE.IgnoreCase = True
RE.Pattern = WScript.Arguments(0)
While Not WScript.StdIn.AtEndOfStream
   Line = WScript.StdIn.ReadLine
   If RE.Test(Line) Then WScript.StdOut.WriteLine Line
WEnd

この 2 つのスクリプトを組み合わせると目的の処理を実行できます。1 つのプログラムではディレクトリ ツリー内のすべてのファイルを一覧表示し、もう 1 つのプログラムでは指定した正規表現に一致する行を検索します。ここで第 3 のプログラムを用意し、この 2 つの処理を両方とも実行させます。このプログラムは、オペレーティング システムを使ってプログラム間で情報をパイプし、さらにその結果を自身の StdOut にパイプします。

// MyWhere.JS
if (WScript.Arguments.Count() == 0)
   WScript.Quit();
var Pattern = WScript.Arguments(0);
var Shell = new ActiveXObject("WScript.Shell");
var Pipe = Shell.Exec("%comspec% /c \"cscript //nologo mydir.vbs | cscript //nologo mygrep.vbs " + Pattern + "\"");
while(!Pipe.StdOut.AtEndOfStream)
   WScript.StdOut.WriteLine(Pipe.StdOut.ReadLine());

参 照

基本的な Windows Script Host タスク | Exec メソッド | Run メソッド


ファイル管理処理を実行する

WSH を使用すると、スクリプト経由で簡単にファイルやフォルダの作成、コピー、移動、および削除を行うことができます。 次に、それらの機能の使用するタスクを例示します。

トピック

ファイルおよびフォルダをコピーする

特別なフォルダに割り当てる

参 照

基本的な Windows Script Host タスク


ファイルおよびフォルダをコピーする

ファイルやフォルダのコピーなど、ファイル システム操作を行うには、FSO (File System Object) を使用する必要があります。次のスクリプトは、FSO を使ってファイルとフォルダをコピーする例を示しています。

ファイルをコピーする

次のスクリプトは、特定のファイルをあるローカル フォルダから別のフォルダにコピーする例を示しています。このスクリプトでは、まず、ファイル システム オブジェクトが作成されます。ファイル システム オブジェクト メソッドである CopyFile メソッドによってファイルのコピー処理が実行されます。CopyFile メソッドには、コピー元のファイルとコピー先の 2 つの引数を指定できます。

// JScript.
var FSO = WScript.CreateObject("Scripting.FileSystemObject");
FSO.CopyFile("c:\\COMPlusLog.txt", "c:\\x\\");

' VBScript.
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "c:\COMPlusLog.txt", "c:\x\"

フォルダをコピーする

次のスクリプトは、あるローカル フォルダの内容をローカル マシン上の別のフォルダにコピーする例を示しています。

メモ このメソッドを正常に実行させるには、コピー先のフォルダがすでに存在している必要があります。 WSH を使ってディレクトリを作成する方法については、「CreateFolder メソッド」を参照してください。

このスクリプトではまず、ファイル システム オブジェクトが作成されます。ファイル システム オブジェクト メソッドである CopyFolder メソッドによってフォルダのコピー処理が実行されます。CopyFolder メソッドには、コピー元のファイルとコピー先の 2 つの引数を指定できます。

// JScript.
var FSO = WScript.CreateObject("Scripting.FileSystemObject");
FSO.CopyFolder("c:\\x", "c:\\y");

' VBScript.
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFolder "c:\x", "c:\y"

参 照

ファイル管理処理を実行する | FileSystemObject | CopyFile メソッド | CopyFolder メソッド | CreateFolder メソッド | MoveFolder メソッド


特別なフォルダに割り当てる

[マイ ドキュメント] デスクトップ フォルダなどの特別なフォルダに情報を割り当てるには、Shell オブジェクトを使用する必要があります。次のスクリプトは、Shell オブジェクトを使って、デスクトップ上に特定のフォルダへのショートカットを作成する例を示しています。

// JScript.
var Shell, DesktopPath, URL;
Shell = new ActiveXObject("WScript.Shell");
DesktopPath = Shell.SpecialFolders("Desktop");
URL = Shell.CreateShortcut(DesktopPath + "\\MSDN Scripting.url");
URL.TargetPath = "HTTP://MSDN.Microsoft.com/scripting/";
URL.Save();

' VBScript.
Dim Shell, DesktopPath, URL
Set Shell = CreateObject("WScript.Shell")
DesktopPath = Shell.SpecialFolders("Desktop")
Set URL = Shell.CreateShortcut(DesktopPath & "\MSDN Scripting.URL")
URL.TargetPath = "HTTP://MSDN.Microsoft.com/scripting/"
URL.Save

参 照

ファイル管理処理を実行する


ショートカットを管理する

WSH を使用すると、スクリプト経由で簡単にショートカットの作成、コピー、移動、および削除を行うことができます。次に、それらの機能の使用するタスクを例示します。

トピック

ショートカットをコピーする

ショートカットを作成する

ショートカットを削除する

ショートカットを移動する

参 照

基本的な Windows Script Host タスク


ショートカットをコピーする

ショートカットをコピーするには、FSO (File System Object) を使用します。次のスクリプトは、FSO を使ってショートカットをコピーする例を示しています。

// JScript.
Shell = new ActiveXObject("WScript.Shell");
FSO = new ActiveXObject("Scripting.FileSystemObject");
DesktopPath = Shell.SpecialFolders("Desktop") + "\\MSDN Scripting url";
MyDocumentsPath = Shell.SpecialFolders("MyDocuments") + "\\"
FSO.CopyFile(DesktopPath, MyDocumentsPath);

' VBScript.
Set Shell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
DesktopPath = Shell.SpecialFolders("Desktop") + "\MSDN Scripting.url"
MyDocumentsPath = Shell.SpecialFolders("MyDocuments") + "\\"
FSO.CopyFile DesktopPath, MyDocumentsPath

参 照

ショートカットを管理する


ショートカットを作成する

ショートカットを作成するには、File Shell オブジェクトを使用します。次のスクリプトは、File Shell オブジェクトを使ってショートカットを作成する例を示しています。

// JScript.
Shell = new ActiveXObject("WScript.Shell");
DesktopPath = Shell.SpecialFolders("Desktop");
link = Shell.CreateShortcut(DesktopPath + "\\test.lnk");
link.Arguments = "1 2 3";
link.Description = "test shortcut";
link.HotKey = "CTRL+ALT+SHIFT+X";
link.IconLocation = "foo.exe,1";
link.TargetPath = "c:\\blah\\foo.exe";
link.WindowStyle = 3;
link.WorkingDirectory = "c:\\blah";
link.Save();

' VBScript.
Set Shell = CreateObject("WScript.Shell")
DesktopPath = Shell.SpecialFolders("Desktop")
Set link = Shell.CreateShortcut(DesktopPath & "\test.lnk")
link.Arguments = "1 2 3"
link.Description = "test shortcut"
link.HotKey = "CTRL+ALT+SHIFT+X"
link.IconLocation = "foo.exe,1"
link.TargetPath = "c:\blah\foo.exe"
link.WindowStyle = 3
link.WorkingDirectory = "c:\blah"
link.Save

参 照

ショートカットを管理する


ショートカットを削除する

ショートカットを削除するには、FSO (File System Object) を使用します。次のスクリプトは、FSO を使ってショートカットを削除する例を示しています。

// JScript.
Shell = new ActiveXObject("WScript.Shell");
FSO = new ActiveXObject("Scripting.FileSystemObject");
DesktopPath = Shell.SpecialFolders("Desktop");
FSO.DeleteFile(DesktopPath + "\\test.lnk")

' VBScript.
Set Shell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
DesktopPath = Shell.SpecialFolders("Desktop")
FSO.DeleteFile DesktopPath & "\test.lnk"

参 照

ショートカットを管理する


ショートカットを移動する

ショートカットを移動するには、FSO (File System Object) を使用します。次のスクリプトは、FSO を使ってショートカットを移動する例を示しています。

// JScript.

Shell = new ActiveXObject("WScript.Shell");
FSO = new ActiveXObject("Scripting.FileSystemObject");
DesktopPath = Shell.SpecialFolders("Desktop") + "\\test.lnk";
MyDocumentsPath = Shell.SpecialFolders("MyDocuments") + "\\test.lnk";
FSO.MoveFile(DesktopPath, MyDocumentsPath);
' VBScript.

Set Shell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
DesktopPath = Shell.SpecialFolders("Desktop") & "\test.lnk"
MyDocumentsPath = Shell.SpecialFolders("MyDocuments") & "\test.lnk"
FSO.MoveFile DesktopPath, MyDocumentsPath

参 照

ショートカットを管理する


システム レジストリを操作する

WSH を使用すると、システム レジストリを管理できます。次のスクリプトは、それらの機能の使用例を示しています。

// JScript.
Sh = new ActiveXObject("WScript.Shell");
key =  "HKEY_CURRENT_USER\\"
Sh.RegWrite( key + "WSHTest\\", "testkeydefault");
Sh.RegWrite( key + "WSHTest\\string1", "testkeystring1");
Sh.RegWrite( key + "WSHTest\\string2", "testkeystring2", "REG_SZ");
Sh.RegWrite( key + "WSHTest\\string3", "testkeystring3", "REG_EXPAND_SZ");
Sh.RegWrite( key + "WSHTest\\int", 123, "REG_DWORD");
WScript.Echo( Sh.RegRead(key + "WSHTest\\"));
WScript.Echo ( Sh.RegRead(key + "WSHTest\\string1"));
WScript.Echo ( Sh.RegRead(key + "WSHTest\\string2"));
WScript.Echo ( Sh.RegRead(key + "WSHTest\\string3"));
WScript.Echo ( Sh.RegRead(key + "WSHTest\\int"));
Sh.RegDelete(key + "WSHTest\\");

' VBScript.
Set Sh = CreateObject("WScript.Shell")
key =  "HKEY_CURRENT_USER\"
Sh.RegWrite key & "WSHTest\", "testkeydefault"
Sh.RegWrite key & "WSHTest\string1", "testkeystring1"
Sh.RegWrite key & "WSHTest\string2", "testkeystring2", "REG_SZ"
Sh.RegWrite key & "WSHTest\string3", "testkeystring3", "REG_EXPAND_SZ"
Sh.RegWrite key & "WSHTest\int", 123, "REG_DWORD"
WScript.Echo Sh.RegRead(key & "WSHTest\")
WScript.Echo Sh.RegRead(key & "WSHTest\string1")
WScript.Echo Sh.RegRead(key & "WSHTest\string2")
WScript.Echo Sh.RegRead(key & "WSHTest\string3")
WScript.Echo Sh.RegRead(key & "WSHTest\int")
Sh.RegDelete key & "WSHTest\"

参 照

基本的な Windows Script Host タスク


スクリプトをリモートで実行する

WSH 5.6 では、リモート システム上のスクリプトを実行できます。次のスクリプトは、この機能の使用例を示しています。 これらのスクリプトでは、ファイルはローカル マシン上の "c:\wsh5.6" というディレクトリ内に格納されていることを前提としています。ローカル パスとリモート マシン名は必要に応じて変更してください。

ローカル マシン上で RemoteTest.WSF を実行した後、DCOM によるユーザーの ID 確認処理が実行される間、実行が一時停止されます。"Done" というメッセージが表示されると、リモート マシン上の "c:\beenhere.txt" というファイルを参照して、コマンドの実行時刻 (リモート コンピュータのシステム時計を基準にした時刻) を確認できます。

// JScript.
RemoteTest.WSF
-------------------------------
<package>
<job>
<script language="JScript">
var oController = new ActiveXObject("WSHController");
var oProcess = oController.CreateScript("c:\\wsh5.6\\beenhere.wsf", "remmachine");
oProcess.Execute();
while (oProcess.Status != 2) WScript.Sleep(100);
WScript.Echo("Done");
</script>
</job>
</package>
-------------------------------
BeenHere.WSF
-------------------------------
<package>
<job>
<script language="JScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fout = fso.CreateTextFile("c:\\beenhere.txt", true);
fout.WriteLine(new Date);
fout.Close();
</script>
</job>
</package>
-------------------------------

' VBScript.
RemoteTest.WSF
-------------------------------
<package>
<job>
<script language="VBScript">
set oController = CreateObject("WSHController")
set oProcess = oController.CreateScript("c:\wsh5.6\beenhere.wsf", "remmachine")
oProcess.Execute
While oProcess.Status <> 2
   WScript.Sleep 100
WEnd
WScript.Echo "Done"
</script>
</job>
</package>
-------------------------------

BeenHere.WSF
-------------------------------
<package>
<job>
<script language="VBScript">
set fso = CreateObject("Scripting.FileSystemObject")
set fout = fso.CreateTextFile("c:\beenhere.txt", true)
fout.WriteLine Now
fout.Close
</script>
</job>
</package>

参 照

基本的な Windows Script Host タスク | リモート WSH をセットアップする | WshRemote オブジェクト


スクリプトに署名する

次のスクリプトは、ID 確認処理で使用する署名を作成する例を示しています。このスクリプトでは、Signer オブジェクト および SignFile メソッドを使ってデジタル署名を作成します。

// JScript.
<job>
<runtime>
   <named name="file" helpstring="the file to sign" required="true" type="string"/>
   <named name="cert" helpstring="the name of the signing certificate" required="true" type="string"/>
   <named name="store" helpstring="the name of the certificate store" required="false" type="string"/>
</runtime>
<script language="JScript">
   var Signer, File, Cert, Store;
   if (!(WScript.Arguments.Named.Exists("cert") && WScript.Arguments.Named.Exists("file")))
   {
      WScript.Arguments.ShowUsage();
      WScript.Quit();
   }
   Signer = new ActiveXObject("Scripting.Signer");
   File  = WScript.Arguments.Named("file");
   Cert  = WScript.Arguments.Named("cert");
   Store = WScript.Arguments.Named("store");
    Signer.SignFile(File, Cert, Store);
</script>
</job>

'VBScript
<job>
<runtime>
   <named name="file" helpstring="the file to sign" required="true" type="string"/>
   <named name="cert" helpstring="the name of the signing certificate" required="true" type="string"/>
   <named name="store" helpstring="the name of the certificate store" required="false" type="string"/>
</runtime>
<script language="VBScript">
   Dim Signer, File, Cert, Store
   If Not (WScript.Arguments.Named.Exists("cert")) And WScript.Arguments.Named.Exists("file")) Then
      WScript.Arguments.ShowUsage
      WScript.Quit
   End If
   Set Signer = CreateObject("Scripting.Signer")
   File  = WScript.Arguments.Named("file")
   Cert  = WScript.Arguments.Named("cert")
   Store = WScript.Arguments.Named("store")
    Signer.SignFile File, Cert, Store
</script>
</job>

参 照

基本的な Windows Script Host タスク | スクリプトを確認する | スクリプトに署名する


WSH および WMI (Windows Management Instrumentation)

WSH を使用すると、WMI (Windows Management Instrumentation) を簡単に使用できます。次のスクリプトは、WSH と WMI を使って特定ユーザーのログオン時刻を ADSI 経由で取得する例を示しています。

メモ WMI の詳細については、http://msdn.microsoft.com の「WMI SDK」を参照してください。
// JScript.
LoginProfiles = GetObject("winmgmts:").InstancesOf ("Win32_NetworkLoginProfile");
for(e = new Enumerator(LoginProfiles) ; !e.atEnd() ; e.moveNext())
{
   Profile = e.item();
   WScript.Echo(Profile.Name);
   WScript.Echo(Profile.LastLogon);
}

' VBScript.
Set LoginProfiles = GetObject("winmgmts:").InstancesOf ("Win32_NetworkLoginProfile")
   for each Profile in LoginProfiles
      WScript.Echo Profile.Name
      WScript.Echo Profile.LastLogon
   next

参 照

基本的な Windows Script Host タスク


WSH ウォークスルー

次のウォークスルーでは、典型的なネットワーク管理者またはその他の IT プロフェッショナルが、WSH 5.6 を使って便利なタスクを実行するプロシージャを作成する方法について説明しています。

メモ ウォークスルーのスクリプトは VBScript で記述されています。スクリプトの作成手順は、VBScript、JScript のどちらを使用する場合でも、ほとんど同じです。

このウォークスルーを通して、次の操作を実行します。

  • 複数のリモート マシンに共有フォルダを作成し、その共有フォルダにファイルを格納するためのスクリプトを作成します。
  • 複数のリモート マシンに共通の印刷装置接続を設定し、その装置を既定の印刷装置として確立するためのスクリプトを作成します。

このウォークスルーを完了するには、すべてのリモート マシンでリモート WSH が使用できるように、マシン構成を正しく構築しておくことが必要です。セキュリティ設定を有効にする方法の詳細については、「リモート WSH をセットアップする」を参照してください。

メモ 以下のコードは、このマニュアルに含まれているサンプルから抜粋したものです。サンプル全体を表示するには、「WSH ネットワーク管理者サンプル スクリプト」を参照してください。

変数と定数を作成する

必要な変数と定数を作成するには

  1. テキスト スクリプト エディタに、次の変数を入力します。
    Dim FSO
Dim Services
Dim SecDescClass
Dim SecDesc
Dim Trustee
Dim ACE
Dim Share
Dim InParam
Dim Network
  2. テキスト スクリプト エディタに、次の定数を入力します。ネットワーク環境における UNC 名とパスに応じて、値を変更してください。
    Const FolderName = "C:\Public"
Const AdminServer = "\\AdminMachine"
Const ShareName = "Pubs"
Const PrinterShare = "\\CorpPrinters\PrinterShare"

特定のプリンタに接続し、既定として設定する

マシンを共通の印刷装置に接続するには

  • テキスト スクリプト エディタに、印刷装置を作成するためのコードを入力します。このコードでは、前のステップで初期化した変数 Network と定数 PrinterShare を使用しています。
    Set Network = CreateObject("Wscript.Network")
Network.AddWindowsPrinterConnection PrinterShare

マシンの既定の印刷装置を設定するには

  • テキスト スクリプト エディタに、既定の印刷装置を設定するためのコードを入力します。このコードでは、前の手順で初期化した Network 変数と PrinterShare 定数を使用しています。
    Network.SetDefaultPrinter PrinterShare

共有フォルダを作成し、ファイルをコピーし、共有する

共有フォルダを作成するには

  • テキスト スクリプト エディタに、FSO (File System Object) を作成してフォルダを作成するためのコードを入力します。このスクリプトはフォルダがすでに存在するかどうかを確認します。フォルダが存在しない場合はフォルダが作成されます。このコードでは、最初の手順で初期化した FSO 変数と FolderName 定数を使用しています。
    Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(FolderName) Then
   FSO.CreateFolder(FolderName)
End If

新しく作成したフォルダにファイルをコピーするには

  • テキスト スクリプト エディタに、FSO (File System Object) を作成してローカル マシンからリモート マシンにファイルをコピーするためのコードを入力します。このコードでは、最初の手順で初期化した FSO 変数と FolderName 定数を使用しています。
    Call FSO.CopyFile(AdminServer & "\Public\Images\*.*", FolderName)

新規作成したフォルダを WMI を使って共有として確立するには

  • テキスト スクリプト エディタに、WMI (Windows Management Instrumentation) を使って共有を作成するためのコードを入力します。共有は上記の手順で作成したフォルダに設定します。スクリプトにより、まず、WMI. に接続します。次に、セキュリティ偽装レベルおよび Windows NT 権限を設定します。これにより、ユーザーは、DACL (Discretionary Access Control List) および SACL (Security Access Control List) を設定できるようになります。さらに、新しいセキュリティ記述子を作成し、新しい共有で使用する一組の ACE (Access Control Entry) をセットアップします。最後に、作成したセキュリティ記述子を使って新しい共有を作成します。このコードでは、最初のステップで初期化した変数 Services、SecDescClass、SecDesc、Trustee、ACE、Share、InParam と定数 FolderName、AdminShare、ShareName を使用しています。
    メモ WMI は、WBEM (Web Based Enterprise Management) に基づいた、強力かつ高度な技術です。WMI は基本的に、エンタープライズ環境内の管理情報にアクセスし、その情報を活用するために使われます。WMI の詳細については、http://msdn.microsoft.com/library/default.asp?URL=/library/backgrnd/html/wmixwdm.htm の「Microsoft Windows Management Instrumentation: Background and Overview」を参照してください。
    Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & AdminServer & "\ROOT\CIMV2")
Set SecDescClass = Services.Get("Win32_SecurityDescriptor")
Set SecDesc = SecDescClass.SpawnInstance_()
Set Trustee = Services.Get("Win32_Trustee").SpawnInstance_
Trustee.Domain = Null
Trustee.Name = "EVERYONE"
Trustee.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
Set ACE = Services.Get("Win32_Ace").SpawnInstance_
ACE.Properties_.Item("AccessMask") = 2032127
ACE.Properties_.Item("AceFlags") = 3
ACE.Properties_.Item("AceType") = 0
ACE.Properties_.Item("Trustee") = Trustee
SecDesc.Properties_.Item("DACL") = Array(ACE)
Set Share = Services.Get("Win32_Share")
Set InParam = Share.Methods_("Create").InParameters.SpawnInstance_()
InParam.Properties_.Item("Access") = SecDesc
InParam.Properties_.Item("Description") = "Public Share"
InParam.Properties_.Item("Name") = ShareName
InParam.Properties_.Item("Path") = FolderName
InParam.Properties_.Item("Type") = 0
Share.ExecMethod_("Create", InParam)

完全なスクリプトを実行する

このドキュメントに含まれるサンプルには、前述のすべての機能を備えた完全な実行可能スクリプトが記述されています。「WSH ネットワーク管理者サンプル スクリプト」を参照してください。

スクリプトを実行する前に、リモート スクリプトを実行できるようにすべてのリモート マシンが正しく構成されていることを確認してください。これを行うには、サーバー上で Poledit.exe を実行します。詳細については、「リモート WSH をセットアップする」を参照してください。

リモート WSH を実行すると、リモート マシンにスクリプトがコピーされます。リモート マシンのセキュリティ設定が確認されてスクリプトのコピーが正常に行われると、戻り値によって処理の成否が示されます。処理が成功した場合、スクリプトはリモート マシン上で実行されます。リモート WSH スクリプトの実行方法の詳細については、「スクリプトをリモートで実行する」を参照してください。

参 照

リモート WSH をセットアップする | ネットワークにアクセスする | スクリプトをリモートで実行する


WSH ネットワーク管理者サンプル スクリプト

以下の WSH ネットワーク サンプルは、一般的なネットワーク管理者がネットワーク上の複数のリモート マシンで使用すると考えられるスクリプトの例を示しています。このサンプル スクリプトを使用すると、次のような便利な管理タスクを実行できます。

  • マシンをネットワーク上の印刷装置に接続する
  • 新しく接続した印刷装置を既定のプリンタとして設定する
  • 共通のパブリック フォルダをマシンに作成する
  • 新しく作成したフォルダにファイルをコピーする
  • 新しく作成したフォルダを WMI (Windows Management Instrumentation) を使って共有として確立する
    メモ WMI は、WBEM (Web Based Enterprise Management) に基づいた、強力かつ高度な技術です。WMI は基本的に、エンタープライズ環境内の管理情報にアクセスし、その情報を活用するために使われます。WMI の詳細については、http://msdn.microsoft.com/library/default.asp?URL=/library/backgrnd/html/wmixwdm.htm の「Microsoft Windows Management Instrumentation: Background and Overview」を参照してください。

管理者は、リモート マシン上に、必要なセキュリティ設定を構築する必要があります。詳細については、「リモート WSH をセットアップする」を参照してください。さらに、サンプルをスクリプト エディタにコピーして貼り付け、使用するネットワーク パスとマシン名に応じて定数を変更します。これで、スクリプト実行の準備完了となります。

サンプルを実行するには

  1. リモート マシンに、必要なセキュリティ設定を構築します。
  2. 以下の AdminScript.vbs スクリプトをスクリプト テキスト エディタにコピーします。
  3. 使用するネットワーク パスとマシン名に応じて定数を変更します。
  4. スクリプトの "remmachine" を適用可能なリモート マシン名に置き換え、スクリプトを実行します。
    var oController = new ActiveXObject"WSHController"
var oProcess = oController.CreateScript "c:\MyLocalDir\\AdminScript.vbs", "remmachine"
oProcess.Execute()
while (oProcess.Status != 2)
     WScript.Sleep(100)
WScript.Echo"Done"

AdminScript.vbs サンプル

' Remote WSH Admin Sample  AdminScript.vbs
'
' このサンプル コードは、ネットワーク管理者がネットワーク上のコンピュータに対して
' よく行う管理タスクを自動化するものです。
' コードは、パブリック フォルダを作成し、ファイルをコピーしてフォルダを共有します。
' また、コンピュータの既定のプリンタ接続を設定します。

' このサンプル コードは、サイズを抑えるためにエラー ハンドラが実装されていません。
' このコードの中で説明される多くの操作は、ディスクの空き容量不足などによって
' 失敗する可能性があるため、実務環境で使用する場合、
' 適切なエラー ハンドラを実装することをお勧めします。

Option Explicit

Dim FSO
Dim Services
Dim SecDescClass
Dim SecDesc
Dim Trustee
Dim ACE
Dim Share
Dim InParam
Dim Network

Const FolderName = "C:\Public"
Const AdminServer = "\\AdminMachine"
Const ShareName = "Pubs"
Const PrinterShare = "\\CorpPrinters\PrinterShare"

' コンピュータにプリンタを追加して、既定に設定します。

Set Network = CreateObject("Wscript.Network")
Network.AddWindowsPrinterConnection PrinterShare
Network.SetDefaultPrinter PrinterShare

' 次にフォルダを作成して、ファイルをコピーします。

Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(FolderName) Then
   FSO.CreateFolder(FolderName)
End If

Call FSO.CopyFile(AdminServer & "\Public\Images\*.*", FolderName)

' WMI を使用して共有フォルダに設定します。
' このコードの詳細については、WMI SDK を参照してください。

Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & AdminServer & "\ROOT\CIMV2")
Set SecDescClass = Services.Get("Win32_SecurityDescriptor")
Set SecDesc = SecDescClass.SpawnInstance_()
Set Trustee = Services.Get("Win32_Trustee").SpawnInstance_
Trustee.Domain = Null
Trustee.Name = "EVERYONE"
Trustee.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
Set ACE = Services.Get("Win32_Ace").SpawnInstance_
ACE.Properties_.Item("AccessMask") = 2032127
ACE.Properties_.Item("AceFlags") = 3
ACE.Properties_.Item("AceType") = 0
ACE.Properties_.Item("Trustee") = Trustee
SecDesc.Properties_.Item("DACL") = Array(ACE)
Set Share = Services.Get("Win32_Share")
Set InParam = Share.Methods_("Create").InParameters.SpawnInstance_()
InParam.Properties_.Item("Access") = SecDesc
InParam.Properties_.Item("Description") = "Public Share"
InParam.Properties_.Item("Name") = ShareName
InParam.Properties_.Item("Path") = FolderName
InParam.Properties_.Item("Type") = 0
Share.ExecMethod_("Create", InParam)

' 完了

参 照

WSH ウォークスルー | ネットワークにアクセスする | リモート WSH をセットアップする | スクリプトをリモートで実行する


セキュリティと Windows Script Host

Windows Script Host は Windows を柔軟に自動化できるツールですが、その一方で、第三者に悪用される危険性を持っています。

Windows Script Host 5.6 では、機能を犠牲にすることなく悪用を防止できるように、セキュリティ モデルが一新されています。

ユーザーがスクリプトが信頼できるソースからのものであることを確認した上でスクリプトを実行できるようになりました。また、スクリプト開発者は、署名を付加することで、スクリプトが無断で変更されるのを防止できます。管理者は、スクリプトをローカルまたはリモートに実行する特権をどのユーザーに与えるかを決定する厳密なポリシーを適用できます。

トピック

CryptoAPI ツール

スクリプトに署名する

署名確認ポリシー

スクリプトを確認する

ソフトウェア制限ポリシー


CryptoAPI ツール

CryptoAPI ツールは、*.exe、*.cab、*.dll、*.ocx の各ファイルとスクリプト ファイル (*js、*.vbs、*.wsf) に対するデジタル署名を作成および確認するためのツールです。

CryptoAPI ツールでは、Microsoft® Authenticode® と共に使用するファイルにデジタル署名を付加できます。また、証明書、証明書失効リスト (CRL)、および証明書信頼リスト (CTL) の表示と管理が可能です。CrptoAPI ツールの詳細については、CryptoAPI Start Page (http://msdn.microsoft.com/library/psdk/crypto/portalapi_3351.htm?RLD=290) を参照してください。

参 照

セキュリティと Windows Script Host | スクリプトに署名する | スクリプトを確認する | 署名確認ポリシー


スクリプトに署名する

スクリプトに署名すると、デジタル署名ブロックがコメントとしてスクリプトに書き込まれます。署名には、作成者の身元に関する情報がエンコードされて格納されるほか、スクリプト自体に関する情報もエンコードされてカプセル化されます。このため、スクリプトを変更すると、署名が無効になります。

スクリプトへの署名をプログラムによって行うには、Scripting.Signer オブジェクトの SignFile メソッドを使います。

<job>
<runtime>
   <named name="file" helpstring="the file to sign" required="true" type="string"/>
   <named name="cert" helpstring="the name of the signing certificate" required="true" type="string"/>
   <named name="store" helpstring="the name of the certificate store" required="false" type="string"/>
</runtime>
<script language="JScript">
   var Signer, File, Cert, Store;
   if (!(WScript.Arguments.Named.Exists("cert") && WScript.Arguments.Named.Exists("file")))
   {
      WScript.Arguments.ShowUsage();
      WScript.Quit();
   }
   Signer = new ActiveXObject("Scripting.Signer");
   File  = WScript.Arguments.Named("file");
   Cert  = WScript.Arguments.Named("cert");
   if (WScript.Arguments.Named.Exists("store"))
   {
      Store = WScript.Arguments.Named("store");
   }
   else
   {
      Store = "";
   }
    Signer.SignFile(File, Cert, Store);
</script>
</job>
メモ スクリプトに署名するには、有効な証明書が必要です。管理者に連絡して証明書ポリシーを確認するか、商業ベースの証明機関に問い合わせてください。

参 照

セキュリティと Windows Script Host | スクリプトを確認する | 署名確認ポリシー | WinTrust | スクリプトに署名する


ソフトウェア制限ポリシー

完全に信頼されていないスクリプトがオペレーティング システム内で勝手に処理されるのを防止する必要があります。ソフトウェア制限ポリシーは、この目的で管理者が設定する信頼ポリシーです。

ソフトウェア制限ポリシーでは、次の 3 つの基準に基づいて信頼レベルを決定します。

  • スクリプトに含まれている署名情報
  • スクリプトの実行パス
  • ファイルの内容

ソフトウェア制限ポリシーでは、次の既定コンテナを定義します。

  • [Domain Administrator]
  • [Machine Administrator]
  • [Machine User]
  • [Guest User]
  • [Denied]

このほかに、カスタム コンテナを定義して、独自のポリシーを設定することもできます。

参 照

セキュリティと Windows Script Host


署名確認ポリシー

WSH で署名確認をオンにするか、オフにするかは管理者が選択できます。管理者が確認をオンにすると、コンピュータ上で実行できるスクリプトは、信頼されたソースによって署名されたスクリプトだけに制限されます。署名確認をオンにした場合、次の 2 通りのスクリプトの実行方法があります。

  • 信頼できるソースかどうかを決定できなければ、スクリプトを実行してよいかどうかをユーザーに確認させます。
  • 信頼できるソースかどうかを決定できなければ、スクリプトを実行しません。

管理者が署名確認をオフにすると、ユーザーが任意のスクリプトをコンピュータ上で実行できるようになります。

Windows 2000 では、署名確認ポリシーを設定するにはローカル セキュリティ ポリシー エディタを使用します。ローカル セキュリティ ポリシー エディタおよび WSH の設定の詳細については、Windows のオンライン ヘルプを参照してください。

署名確認ポリシーのレジストリ キーは、次のハイブにあります。

\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows Script Host\Settings\TrustPolicy

このキーは、次の REG_DWORD 値のいずれかに設定されます。

  • 0 すべてのスクリプトを実行します。
  • 1 スクリプトが信頼されていない場合はユーザーに確認させます。
  • 2 信頼されたスクリプトだけを実行します。

参 照

セキュリティと Windows Script Host | スクリプトに署名する | スクリプトを確認する | WinTrust


スクリプトを確認する

スクリプトの確認では、これから実行しようとしているスクリプトが信頼されたソースからのものかどうかを判断します。このとき、スクリプトの整合性を確認することもできます。WSH では、スクリプトを実行する前にスクリプトを確認しますが、ほかの理由でスクリプトの確認が必要になることもあります。

プログラムによってスクリプトの確認を行うには、Signer オブジェクトの VerifyFile メソッドを使います。

VerifyFile メソッドでは、次のことを確認できます。

  • 署名の有効性。
  • 信頼された発行元リストで信頼されている発行元の署名が付加されているかどうか。
  • スクリプトが署名の時点以降に変更されていないかどうか。
メモ VerifyFile メソッドを使うとデジタル署名をプログラムによって確認できますが、信頼された発行元リストの信頼済みルートを実際に信頼できるかどうかを常に確認するようにしてください。

参照

セキュリティと Windows Script Host | スクリプトに署名する | 署名確認ポリシー | WinTrust


リファレンス

トピック

XML 要素
WSH XML 要素の一覧を示します。
オブジェクト
WSH のオブジェクトの一覧を示します。
プロパティ
WSH のプロパティの一覧を示します。
メソッド
WSH のメソッドの一覧を示します。
イベント
WSH のイベントの一覧を示します。
エラー メッセージ
WSH のエラー メッセージの一覧を示します。

参 照

WSH の基本
WSH の基本概念を説明します。


XML 要素

トピック

<?job?> 要素
エラー処理用の属性を指定する XML 処理の命令です。
<?XML?> 要素
ファイルを XML として解析するように指定します。
<description> 要素
ユーザーが ShowUsage() を実行するか、または /? コマンド ライン スイッチ付きでスクリプトを実行したときに表示される説明テキストを囲みます。
<example> 要素
スクリプトの使用例を定義します。
<job> 要素
Windows スクリプト ファイル (.wsf ファイル) 内のジョブを囲みます。
<named> 要素
スクリプトに渡す名前付き引数を定義します。
<object> 要素
Windows Script コンポーネント ファイルで使用され、スクリプトから参照できるオブジェクトを定義する XML 要素です。
<package> 要素
Windows Script Host 制御ファイル (.wsf ファイル) 内で複数のジョブ定義を囲みます。
<reference> 要素
外部のタイプ ライブラリへの参照を定義する XML 要素です。
<resource> 要素
スクリプトにハードコーディングしないテキスト データまたは数値データを囲む XML 要素です。
<runtime> 要素
スクリプトが受け取る複数の実行時引数をグループ化します。
<script> 要素
Windows スクリプト コンポーネントの動作を定義するスクリプトを囲む XML 要素です。

参 照

WSH リファレンス
WSH リファレンスで説明されている要素の一覧です。
WSH の基本
WSH の基本概念を説明します。


<?job ?> 要素

エラー処理用の属性を指定します。

<?job error="flag" debug="flag" ?>

引数

error
ブール型の値です。どの属性についても、False が既定値です。True に設定すると、Windows スクリプト ファイル (.wsf ファイル) の構文エラーや実行時エラーに対して、エラー メッセージが生成されます。
Debug
ブール型の値です。どの属性についても、False が既定値です。True に設定すると、デバッグが有効になります。デバッグが有効になっていない場合は、Windows スクリプト ファイルに対してスクリプト デバッガを起動することはできません。

解説

通常、実務環境の Windows Script ファイルはメッセージを表示しない設定で動作します。ただし、Windows Script ファイルの開発中には、ファイル内のエラーが通知されると便利な場合もあります。

使用例

次のコードは、2 種類のスクリプト言語を使用して 2 つのジョブを 1 つの .wsf ファイルに組み込む例です。

<package>
   <job id="DoneInVBS">
      <?job debug="true"?>
      <script language="VBScript">
         WScript.Echo "これは VBScript です。"
      </script>
   </job>

   <job id="DoneInJS">
      <?job debug="true"?>
      <script language="JScript">
         WScript.Echo("これは JScript です。");
      </script>
   </job>
</package>

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <object> 要素 | <package> 要素 | <resource> 要素 | <?XML?> 要素


<?XML ?> 要素

ファイルを XML として解析することを指示します。

<?XML version="version" [standalone="DTDflag"] ?>

引数

version
XML レベルを指定する n.n 形式の文字列です。値 1.0 を使用します。
DTDflag
省略可能です。XML ファイルに外部 DTD (Document Type Definition) への参照が含まれるかどうかを示すブール値を指定します。スクリプト コンポーネントの XML ファイルにはこのような参照が含まれないため、この属性に必ず "yes" を使用します。

解説

ファイル内では、この宣言の前に要素や空白行を置くことはできません。

この宣言があると、スクリプト コンポーネントのコンパイラは、XML の構文を厳密にチェックするモードになります。このモードでは、要素の型および属性名の大文字と小文字が区別され、シングル クォーテーションかダブル クォーテーションで属性値を囲む必要があり、すべての要素が解析されます。この宣言がない場合は、比較的厳密でない構文を使用できます。

XML がサポートされるエディタでスクリプト コンポーネント ファイルを編集する場合は、この宣言を行い、XML の構文規則に従ってください。

使用例

次の例は、<?XML?> 要素の使用方法を示しています。

<?XML version="1.0" standalone="yes" ?>

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <object> 要素 | <package> 要素 | <resource> 要素 | <?job?> 要素


<description> 要素

ShowUsage メソッドを実行するか、または /? コマンド ライン スイッチ付きでスクリプトを実行したときに表示される説明テキストを表します。

<description>
    スクリプトの説明テキスト
</description>

解説

説明テキストは、複数行にできます。

Usage (使用法)を表示するときに引用符を表示したくない場合は、説明に引用符を含めないでください。description タグの間のテキストは、Usage (使用法)の画面表示に含まれます。これには、タブや改行などの特殊文字も含まれます。

<description> 要素は <example> 要素に似ていますが、<example> 要素が Usage の末尾に表示されるのに対し、<description> 要素は Usage の先頭に表示されます。

使用例

ここでは、<description> 要素を使ったスクリプトのサンプルを示します。

<runtime>
    <description>
        このスクリプトは、サーバーを再起動します。
    </description>
    <!--...etc...-->
</runtime>

参 照

ShowUsage メソッド | <runtime> 要素 | <named> 要素 | <unnamed> 要素 | <example> 要素


<example> 要素

ジョブの使用例を定義します。

<example>
   使用例のテキスト
</example>

解説

<example> 要素は、<runtime> 要素で囲まれます。

使用例

ここでは、<example> 要素を使ったスクリプトのサンプルを示します。

<job>
    <runtime>
        <description>このスクリプトは、サーバーを再起動します。</description>
        <named
            name = "Server"
            helpstring = "スクリプトを実行するサーバー"
            type = "string"
            required = "true"
        />
        <example>Example: reboot.wsf /Server:scripting</example>
    </runtime>
</job>

<example> タグと </example> タグで囲まれたテキスト全体が対象となります。これには、改行やスペースも含まれます。このスクリプトから ShowUsage メソッドを呼び出すと、次のような出力が得られます。

このスクリプトは、サーバーを再起動します。

Usage: reboot.wsf /server:value

Options:

server : スクリプトを実行するサーバー

Example:

reboot.wsf /server:scripting

参 照

ShowUsage メソッド


<job> 要素

Windows Script ファイル (*.wsf) 内のジョブの開始と終了をマークします。

<job [id=JobID]>
    ジョブのコード
</job>

引数

JobID
省略可能です。ファイル内で一意なジョブの識別子を指定します。.

解説

Windows スクリプト ファイル内の各ジョブ ID は、一意でなければなりません。

1 組の job タグに含まれるスクリプトは、上から順に 1 つずつ実行されます。

1 つのジョブには、1 つ以上のスクリプト ブロックが格納されます。1 組の <script> タグで囲まれたスクリプト コードが 1 つのスクリプト ブロックとなります。1 つのスクリプト ブロックに複数のスクリプトを含めることができます。また、スクリプトごとにスクリプト言語が異なっていてもかまいません。

1 つまたは複数の特定のジョブを指定して実行するには、//Job スイッチを使います。複数のジョブを指定した場合、下の例に示すように、それらのジョブは 1 つずつ順に実行されます。ジョブを指定しなければ、先頭のジョブだけが実行されます。Windows スクリプト ファイルに複数のジョブが含まれている場合は、それらのジョブを <package> タグで囲む必要があります。

使用例

下に示すサンプル スクリプトは、myScript.wsf という名前の Windows スクリプト ファイルです。このファイルには、2 つの別個のジョブが含まれており、それぞれ異なるスクリプト言語で記述されています。DoneInVBS という識別子を持つ 1 番目のジョブは、VBScript で記述されています。DoneInJS という識別子を持つ 2 番目のジョブは、JScript で記述されています。

<package>
    <job id="DoneInVBS">
    <?job debug="true"?>
        <script language="VBScript">
           WScript.Echo "これは VBScript です。"
        </script>
    </job>
    <job id="DoneInJS">
    <?job debug="true"?>
        <script language="JScript">
           WScript.Echo("これは JScript です。");
        </script>
    </job>
</package>

この Windows スクリプト ファイル (myScript.wsf) 内の 2 番目のジョブを実行するには、コマンド プロンプトに次のように入力します。

cscript myScript.wsf //job:DoneInJS

myScript.wsf ファイル内の両方のジョブを実行するには、コマンド プロンプトに次のように入力します。

cscript myScript.wsf //job:DoneInVBS //job:DoneInJS

参 照

ShowUsage メソッド | <runtime> 要素 | <named> 要素 | <unnamed> 要素 | <description> 要素 | <example> 要素


<named> 要素

スクリプトの名前付き引数を記述します。

<named
   name = 名前付き引数名
   helpstring = ヘルプ文字列
   type = "string|boolean|simple"
   required = ブール型の値
/>

引数

name
記述する引数の名前を表す文字列です。コマンド ラインとスクリプトで使用する引数を定義します。
helpstring
引数のヘルプ説明文を表す文字列です。WSH ランタイムでは、ShowUsage メソッドまたは /? 引数を使用してヘルプ説明文を表示できます。
type
これは省略可能です。引数の種類を指定します。これにより、引数をコマンド ラインから解釈する方法が決まります。既定値は、simple です。
required
これは省略可能です。引数が必須かどうかを示すブール型の値です。Usage (使用法) の表示にのみ反映されます。

解説

<named> 要素は、1 組の runtime タグ内に含まれます。

たとえば、server という名前の引数を定義すると、コマンド ライン引数として /server が追加され、同時に、server という名前の引数が WSHNamed 引数コレクションに追加されます。

type として string を指定すると、引数は文字列になります。引数は、/named:stringvalue としてスクリプトに渡されます。

type として Boolean を指定すると、引数はブール型になります。引数をオンにするには /named+ としてスクリプトに渡し、オフにするには /named- として渡します。

type として simple を指定すると、引数は付加的な値をとらなくなり、指定した名前 (/named) のまま渡されます。

使用例

ここでは、<named> 要素を使ったスクリプトのサンプルを示します。

<job>
<runtime>
  <named
    name="server"
    helpstring="アクセスするサーバー"
    type="string"
    required="true"
  />
  <named
    name="user"
    helpstring="サーバーで使用するユーザー アカウント。既定は現在のアカウントです。"
    type="string"
    required="false"
  />
  <named
    name="enable"
    helpstring="true (+) で動作を有効にします。マイナス (-) で無効にします。"
    type="boolean"
    required="true"
  />
  <named
    name="verbose"
    helpstring="これを設定すると、出力が詳細モードになります。"
    type="boolean"
    required="false"
  />
</runtime>
<script language="JScript">
  WScript.Arguments.ShowUsage();
</script>
</job>

このスクリプトで Usage (使用法) が表示されるとき、次の出力が伴います。

Usage: example.wsf /server:value [/user:value] /enable[+|-] [/verbose]

Options:

server    : アクセスするサーバー
user      : サーバーで使用するユーザー アカウント。既定は現在のアカウントです。
enable    : true (+) で動作を有効にします。マイナス (-) で無効にします。
verbose   : これを設定すると、出力が詳細モードになります。

参 照

ShowUsage メソッド | <runtime> 要素 | <unnamed> 要素 | <description> 要素 | <example> 要素


<object> 要素 (Windows Script Host)

Windows Script Host

<object> 要素

スクリプトから参照できる Windows スクリプト ファイル (*.wsf ファイル) 内のオブジェクトを定義します。

<object id="objID" [classid="clsid:GUID" | progid="progID"] />

引数

objID
スクリプトでオブジェクトの参照に使用する名前を指定します。オブジェクト ID は、先頭を英字にする必要がありますが、その後は英数字とアンダースコア (_) を使うことができます。 Windows スクリプト コンポーネントのスコープ全体にわたって、オブジェクト ID は一意でなければなりません。
GUID
省略可能です。オブジェクトが登録されているクラス ID (GUID) の参照を指定します。
progID
省略可能です。オブジェクトのプログラム ID を指定します。プログラム ID は、クラス ID の代わりに使用できます。

解説

<object> 要素を使ってグローバルに公開したオブジェクトは、Windows スクリプト コンポーネント内のスクリプトで CreateObject() などの関数を使わずに使用できます。<object> 要素を使用すると、オブジェクトをグローバル スコープで利用し、スクリプティング ツールでオブジェクトのメンバに関する入力支援機能を提供することができます。

classid または progid を指定する必要があります。

使用例

<job>
<obect id="fso" progid="Scripting.FileSystemObject"/>
<script language="Jscript">

var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("これはテストです。");
a.Close();

</script>
</job>

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <package> 要素


<package> 要素 (Windows Script Host)

Windows Script Host

<package> 要素

Windows Script Host コントロール (*.wsf) ファイルで、複数のジョブ定義を囲みます。

<package>
   1 つ以上のジョブのコード
</package>

解説

.wsf ファイルに含まれているジョブが 1 つの場合、<package> 要素は省略可能です。

使用例

次のコードは、2 種類のスクリプト言語を使用して 2 つのジョブを 1 つの .wsf ファイルに組み込む例です。

<package>
   <job id="DoneInVBS">
   <?job debug="true"?>
      <script language="VBScript">
         WScript.Echo "これは VBScript です。"
      </script>
   </job>

   <job id="DoneInJS">
   <?job debug="true"?>
      <script language="JScript">
         WScript.Echo("これは JScript です。");
      </script>
   </job>
</package>

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <object> 要素


<reference> 要素 (Windows Script Host)

Windows Script Host

<reference> 要素

外部のタイプ ライブラリへの参照を定義します。

<reference [object="progID"|guid="typelibGUID"] [version="version"] />

引数

progID
タイプ ライブラリを導出できるプログラム ID です。バージョン番号 (ADO.Recordset.2.0 など)、タイプ ライブラリの明示的なプログラム ID、タイプ ライブラリを組み込む実行可能ファイル (.DLL など) のプログラム ID のいずれかを指定します。オブジェクト属性を使用する場合、プログラム ID からバージョンを導出できるため、バージョン属性を指定する必要はありません。また、オブジェクト属性を指定する場合、guid 属性を同時に指定することはできません。
typelibGUID
参照するタイプ ライブラリの GUID です。guid 属性を指定する場合、オブジェクト属性を同時に指定することはできません。
version
省略可能です。使用するタイプ ライブラリのバージョン番号を、<major version>[.<minor version>] という形式で指定します。バージョンを指定しない場合は、既定値 1.0 が使用されます。ただし、バージョンを指定しなくても、オブジェクト属性を使ってタイプ ライブラリを指定すると、指定したプログラム ID に対応するレジストリ キーからバージョンが導出されます。レジストリ キーが見つからない場合は、既定値 1.0 が使用されます。

解説

Windows スクリプト コンポーネントでタイプ ライブラリを参照すると、スクリプトのタイプ ライブラリに定義された定数を使用できます。<reference> 要素を使用すると、特定のプログラム ID またはタイプ ライブラリ名に関連付けられたタイプ ライブラリが検索され、使用できるようになります。タイプ ライブラリの情報は、.tlb、.olb、.dll ファイルのいずれかに保存されています。

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <object> 要素 | <package> 要素


<resource> 要素 (Windows Script Host)

Windows Script Host

<resource> 要素

スクリプトにハードコード化すべきでないテキストデータまたは数値データを切り離します。

<resource id="resourceID">
   テキストまたは数値
</resource>

引数

resourceID
スクリプト内のリソースに対する一意の識別子です。

解説

<resource> 要素を使用すると、スクリプトで参照する Windows スクリプト ファイル内の文字列または数値をほかの部分と区別できます。たとえば、<resource> 要素は、ほかの言語にローカライズされる可能性のある文字列を保持するために使用します。

リソースの値を取得するには、使用するリソースの ID を指定して getResource メソッドを呼び出します。

要素で囲んだテキストは、タブ、改行などの空白文字を含めて、すべてそのまま使用されます。

使用例

次のコードは、リソース errNonNumeric を定義し、変数 upperBound が数値でない場合にリソース errNonNumeric の値を返す例です。

<resource id="errNonNumeric">
   ここで、数値以外の値を渡します。
</resource>

<script language="VBScript">
   <![CDATA[
      Function getRandomNumber(upperBound)
         If IsNumeric(upperBound) Then
            getRandomNumber = CInt(upperBound * Rnd + 1)
         Else
            getRandomNumber=getResource("errNonNumeric")
         End If
      End Function
   ]]>
</script>

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <object> 要素 | <package> 要素 | getResource メソッド


<runtime> 要素

スクリプトが受け取る複数の実行時引数をグループ化します。

<runtime>
    <named 属性などの記述 />
    <unnamed 属性などの記述 />
    <example>Example Text</example>
    �
</runtime>

解説

<runtime> 要素で囲まれた情報は、ShowUsage メソッドでスクリプトの実行時パラメータを表示するときに使用されます。

<runtime> 要素は、1 組の job タグで囲まれているので、定義した実行時引数はそのジョブにのみ適用されます。

メモ WSH 5.6 では、<runtime> で囲まれたデータを自己文書化と ShowUsage で表示するデータの書式設定にのみ使用します。<runtime> 要素に含まれている引数に設定されている値は、強制適用されません。つまり、指定された引数がコマンド ラインから欠落していてもエラーになりません。<runtime> が .wsf ファイルに含まれている場合は、"/?" 引数付きでスクリプトを実行すると、Usage (使用法) が表示され、その時点でスクリプトが終了します。

使用例

ここでは、<runtime> 要素を使ったスクリプトのサンプルを示します。

<job>
    <runtime>
        <named
            name="server"
            helpstring="スクリプトを実行するサーバー"
            type="string"
            required="true"
        />
    </runtime>
<script language="JScript">
  if (!WScript.Arguments.Named.Exists("server"))
  {
    WScript.Arguments.ShowUsage();
  }
// ... ここにスクリプトを記述します。
</script>
</job>

参 照

ShowUsage メソッド | <named> 要素 | <unnamed> 要素 | <description> 要素 | <example> 要素


<script> 要素 (Windows Script Host)

Windows Script Host

<script> 要素

Windows スクリプト ファイル (*.wsf ファイル) の動作を定義するスクリプトを含めます。

<script language="language" [src="strFile"]>
     ここにスクリプトを記述します。
</script>

引数

language
Microsoft Visual Basic® Scripting Edition (VBScript)、Microsoft JScript® など、<script> ブロックで使用するスクリプト言語の名前です。
strFile
<script> ブロックにインクルードするスクリプト ファイルの名前です。

解説

XML の構文チェックが有効でない場合、XML パーサーで <script> 要素の内側の行がすべて無視されます。ただし、スクリプト コンポーネント ファイルの先頭で <?XML?> を宣言して XML の構文チェックを有効にすると、スクリプトで使用する ">" や "<" などの記号は XML の区切り文字と見なされます。

XML の構文に厳密に従うファイルを作成する場合は、スクリプト要素で使用する文字が XML の予約文字と見なされないようにする必要があります。そのためには、実際はスクリプトになっている部分を <![CDATA[ ... ]]> セクションで囲みます。

メモ CDATA セクションを使用する場合は、必ず <?XML?> 宣言も使用します。

使用例

次のコードは、2 種類のスクリプト言語を使用して 2 つのジョブを 1 つの .wsf ファイルに組み込む例です。

<package>
   <job id="DoneInVBS">
   <?job debug="true"?>
      <script language="VBScript">
         WScript.Echo "これは VBScript です。"
      </script>
   </job>

   <job id="DoneInJS">
   <?job debug="true"?>
      <script language="JScript">
         WScript.Echo("これは JScript です。");
      </script>
   </job>
</package>

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <object> 要素 | <package> 要素 | <resource> 要素 | <?XML?> 要素


<unnamed> 要素

スクリプトの名前なし引数を記述します。

<unnamed
   name       = 名前なし引数名
   helpstring = ヘルプ文字列
   many       = ブール型の値
   required   = ブール型の値または整数値
/>

引数

name
Usage (使用法) でこの引数を表すために使用する文字列です。この値は、ほかの用途には使用されません。
helpstring
引数のヘルプ説明文を表す文字列です。WSH ランタイムでは、ShowUsage メソッドまたは /? 引数を使用してヘルプ説明文を表示できます。
many
これは省略可能です。ブール型の値です。true に設定すると、required 属性で指定されている回数を超えて、この引数を繰り返すことが可能になります。true に設定しなければ、引数の必要数は、required 属性で指定したとおりの数になります。詳細については、下の例を参照してください。
required
これは省略可能です。この引数をコマンド ライン上で繰り返す回数を示す整数値です。

解説

<unnamed> 要素は、1 組の runtime タグ内に含まれます。

たとえば、server という名前の引数を定義すると、コマンド ライン引数として /server が追加され、同時に、server という名前の引数が WSHNamed 引数コレクションに追加されます。

メモ unnamed 要素の name 属性は、表示目的でのみ使用されます。

"required" 属性を設定すると、ブール型の値は整数に変換されます。"true" は 1 に、"false" は0 になります。

使用例

ここでは、いくつかの例を通して、各種属性が unnamed 要素の Usage (使用法) にどのように反映されるかを示します。まず、単純な例を示します。

<runtime>
<unnamed
  name="filename"
  helpstring="処理するファイル"
  many="false"
  required="true"
</>
</runtime>

この場合、次のような結果が得られます。

Usage: example.wsf filename

Options:

filename : 処理するファイル

上の例を下のように変更したとします。

<runtime>
<unnamed
  name="filename"
  helpstring="処理するファイル (複数)"
  many="false"
  required="3"
</ >
</runtime>

この場合、出力内容は次のように変化します。

Usage: example.wsf filename1 filename2 filename3

Options:

filename : 処理するファイル (複数)

many スイッチを使うと、示されているより多くのファイルを指定できる場合に省略記号が表示されるようになります。上の例を次のように変更したとします。

<runtime>
<unnamed
  name="filename"
  helpstring="処理するファイル (複数可)"
  many="true"
  required="1"
</>
</runtime>

この場合、出力内容は次のように変化します。

Usage: example.wsf filename1 [filename2...]

Options:

filename: 処理するファイル (複数可)

参 照

ShowUsage メソッド | <runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素


<usage> 要素

既定の Usage (使用法) 表示を独自の内容で置き換えることができます。

<usage>
     ここにスクリプトを記述します。
</usage>

解説

<usage> 要素は、開発者が Usage (使用法) に含めるテキストを指定する要素であるという点では、<example> 要素および <description> 要素に似ていますが、<usage> 要素が存在すると、<runtime> 要素内のほかのテキストがすべて無視され、<usage> 要素内のテキストだけが表示されるという点が異なります。つまり、Usage 表示を完全に置き換えることができます。

メモ <usage> 要素は、常に <runtime> 要素で囲む必要があります。

使用例

ここでは、<usage> 要素を使ったスクリプトのサンプルを示します。

<job>
<runtime>
<named name="arg1" helpstring="the first arg"/>
<usage>
ここに使用法を示すテキストが入ります。
</usage>
</runtime>
<script language="vbscript">
WScript.Arguments.ShowUsage
</script>
</job>

この場合、次のような出力が得られます。

ここに使用法を示すテキストが入ります。

参 照

<runtime> 要素 | <named> 要素 | <description> 要素 | <example> 要素 | <package> 要素 | <resource> 要素 | <?XML?> 要素


オブジェクト

トピック

WScript オブジェクト
WSH オブジェクト モデルに含まれているほとんどのオブジェクト、メソッド、およびプロパティにアクセスできます。
WshArguments オブジェクト
コマンド ライン パラメータのコレクション全体に、それらが入力されたとおりの順番でアクセスできます。
WshController オブジェクト
リモート スクリプト プロセスを作成する CreateScript() メソッドを公開します。
WshEnvironment オブジェクト
Microsoft Windows システム環境変数のコレクションにアクセスできます。
WshNamed オブジェクト
WshArguments オブジェクト内の名前付きコマンド ライン スクリプト引数にアクセスできます。
WshNetwork オブジェクト
コンピュータが接続されているネットワーク上の共有リソースにアクセスできます。
WshRemote オブジェクト
リモート スクリプト プロセスにアクセスできます。
WshRemoteError オブジェクト
スクリプト エラーが発生してリモート スクリプト (WshRemote オブジェクト) が異常終了した場合にエラー情報を公開します。
WshScriptExec オブジェクト
Exec() で実行したスクリプトに関するステータス情報およびエラー情報にアクセスできます。また、StdIn、StdOut、StdErr の各チャネルにアクセスできます。
WshShell オブジェクト
Windows のネイティブ シェル機能にアクセスできます。
WshShortcut オブジェクト
ショートカットをプログラムで作成できます。
WshSpecialFolders オブジェクト
Windows の専用フォルダにアクセスできます。
WshUnnamed オブジェクト
WshArguments オブジェクト内の名前なしコマンド ライン スクリプト引数にアクセスできます。
WshUrlShortcut オブジェクト
インターネット リソースへのショートカットをプログラムで作成できます。

参 照

WSH リファレンス
WSH リファレンスで説明されている要素の一覧です。
WSH の基本
WSH の基本概念を説明します。


Scripting.Signer オブジェクト

スクリプト作成者は、Scripting.Signer オブジェクトを使ってスクリプトにデジタル署名を付加できます。また、受信者は、このオブジェクトを使って署名者の身元が信頼がおけるものであることを確認できます。

解説

Scripting.Signer オブジェクトを使用するには、有効な証明書が必要です。

使用例

次の JScript コードでは、Scripting.Signer オブジェクトを使用してスクリプトにデジタル署名を付加しています。

<job>
<runtime>
   <named name="file" helpstring="the file to sign" required="true" type="string"/>
   <named name="cert" helpstring="the name of the signing certificate" required="true" type="string"/>
   <named name="store" helpstring="the name of the certificate store" required="false" type="string"/>
</runtime>
<script language="JScript">
   var Signer, File, Cert, Store = "my";
   if (!(WScript.Arguments.Named.Exists("cert") && WScript.Arguments.Named.Exists("file")))
   {
      WScript.Arguments.ShowUsage();
      WScript.Quit();
   }
   Signer = new ActiveXObject("Scripting.Signer");
   File  = WScript.Arguments.Named("file");
   Cert  = WScript.Arguments.Named("cert");
   if (WScript.Arguments.Named.Exists("store"))
   {
      Store = WScript.Arguments.Named("store");
   }

    Signer.SignFile(File, Cert, Store);
</script>
</job>

参 照

スクリプトに署名する | Sign メソッド | SignFile メソッド | Verify メソッド | VerifyFile メソッド


Scripting.Signer オブジェクトのメソッド

メソッド

Sign メソッド

SignFile メソッド

Verify メソッド

VerifyFile メソッド


WScript オブジェクト

Windows Script Host のオブジェクト モデルのルート オブジェクトへのアクセスを提供します。

解説

WScript オブジェクトは Windows Script Host のオブジェクト モデル階層のルート オブジェクトです。ルート オブジェクトはインスタンス化しなくても、そのプロパティおよびメソッドを呼び出すことができます。ルート オブジェクトは任意のスクリプト ファイルから、いつでも利用できます。WScript オブジェクトを使用すると次のような情報にアクセスできます。

  • コマンド ライン引数
  • スクリプト ファイル名
  • ホスト ファイル名
  • ホスト バージョン情報

WScript オブジェクトを使用すると、次のことを実行できます。

  • オブジェクトの作成
  • オブジェクトへの接続
  • オブジェクトの接続解除
  • イベントの同期
  • プログラミングによるスクリプトの実行停止
  • 既定の出力デバイス (Windows ダイアログ ボックスまたはコマンド コンソール) への情報の出力

WScript オブジェクトを使用すると、スクリプトの実行モード (インタラクティブまたはバッチ) を設定できます。

使用例

WScript オブジェクトは Windows Script Host オブジェクト モデルのルート オブジェクトのため、多数のプロパティおよびメソッドが適用されます。各プロパティおよびメソッドの構文については、下記のリンクを参照してください。

プロパティ

Arguments プロパティ | FullName プロパティ (WScript Object) | Interactive プロパティ | Name プロパティ | Path プロパティ | ScriptFullName プロパティ | ScriptName プロパティ | StdErr プロパティ | StdIn プロパティ | StdOut プロパティ | Version プロパティ

メソッド

CreateObject メソッド | ConnectObject メソッド | DisconnectObject メソッド | Echo メソッド | GetObject メソッド | Quit メソッド | Sleep メソッド

参 照

スクリプトを実行する | WshShell オブジェクト | WshNetwork オブジェクト


WScript オブジェクトのプロパティとメソッド

プロパティ

Arguments プロパティ

FullName プロパティ

Name プロパティ

Path プロパティ

ScriptFullName プロパティ

ScriptName プロパティ

StdErr プロパティ

StdIn プロパティ

StdOut プロパティ

Version プロパティ

メソッド

CreateObject メソッド

ConnectObject メソッド

DisconnectObject メソッド

Echo メソッド

GetObject メソッド

Quit メソッド

Sleep メソッド


WshArguments オブジェクト

Arguments PropertyWScript Object

コマンド ライン パラメータのコレクション全体へのアクセスを提供します。パラメータは、ユーザーが入力した順に設定されます。

解説

WshArguments オブジェクトは、WScript オブジェクトの Arguments プロパティ (WScript.Arguments) によって返されるコレクションです。WshArguments オブジェクトのプロパティのうち、2 つはフィルタ処理された引数のコレクションです。そのうちの 1 つには名前付き引数 (このプロパティをクエリすると WshNamed オブジェクトが返されます)、もう 1 つには名前なし引数 (このプロパティをクエリすると WshUnnamed オブジェクトが返されます) が含まれています。コマンド ラインの引数セットにアクセスするには、次の 3 とおりの方法があります。

  • 引数セット全体 (名前付き引数および名前なし引数) にアクセスするには WshArguments オブジェクトを使用します。
  • 名前付き引数にアクセスするには WshNamed オブジェクトを使用します。
  • 名前なし引数にアクセスするには WshUnnamed オブジェクトを使用します。

使用例

次のコードは、WshArguments オブジェクト内のコマンド ライン パラメータを表示する例です。

[VBScript]
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
   WScript.Echo objArgs(I)
Next
[JScript]
objArgs = WScript.Arguments;
for (i = 0; i < objArgs.length; i++)
{
   WScript.Echo(objArgs(i));
}

プロパティ

Item プロパティ | Length プロパティ (WshArguments オブジェクト) | Count プロパティ | Named プロパティ | Unnamed プロパティ

メソッド

Count メソッド | ShowUsage メソッド

参 照

Arguments プロパティ | WshNamed オブジェクト | WshUnnamed オブジェクト


WshArguments オブジェクトのプロパティとメソッド

プロパティ

Item プロパティ

Length プロパティ

メソッド

Count メソッド


WshController オブジェクト

'WScript Object

(リモート スクリプト プロセスを作成するために) CreateScript() メソッドへのアクセスを提供します。

使用例

次のコードは、コントローラ オブジェクトを使って WshRemote オブジェクトを作成する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("remote1.js")
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

メソッド

CreateScript メソッド

参 照

CreateObject メソッド


WshController オブジェクトのメソッド

メソッド

CreateScript メソッド


WshEnvironment オブジェクト

Environment PropertyWshShell Object

Windows 環境変数のコレクションへのアクセスを提供します。

解説

WshEnvironment オブジェクトは環境変数のコレクションであり、WshShell オブジェクトの Environment プロパティによって返されます。このコレクションには、環境変数セット全体 (名前付き変数および名前なし変数) が含まれます。個々の環境変数 (およびその値) をこのコレクションから取得するには、環境変数名をインデックスとして使用します。

使用例

次のコードは、環境変数を表示する例です。

[VBScript]
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");
var WshSysEnv = WshShell.Environment("SYSTEM");
WScript.Echo(WshSysEnv("NUMBER_OF_PROCESSORS"));

プロパティ

Item プロパティ | Length プロパティ (WshEnvironment オブジェクト)

メソッド

Count メソッド | Remove メソッド

参 照

Environment プロパティ


WshEnvironment オブジェクトのプロパティとメソッド

プロパティ

Item プロパティ

Length プロパティ

メソッド

Count メソッド

Remove メソッド


WshNamed オブジェクト

Named PropertyWshArguments Object

コマンド ラインの名前付き引数へのアクセスを提供します。

解説

WshArguments オブジェクトの Named プロパティは、名前付き引数のコレクションである WshNamed オブジェクトを返します。このコレクションでは、引数名をインデックスとして使用して個々の引数の値を取得します。コマンド ラインの引数セットにアクセスするには、次の 3 とおりの方法があります。

  • 引数セット全体 (名前付き引数および名前なし引数) にアクセスするには WshArguments オブジェクトを使用します。
  • 名前付き引数にアクセスするには WshNamed オブジェクトを使用します。
  • 名前なし引数にアクセスするには WshUnnamed オブジェクトを使用します。

使用例

次のコードは名前付きおよび名前なしコマンドライン引数の数を表示する例です。

<package>
<job id="JS">
<script language="JScript">

var argsNamed = WScript.Arguments.Named;
var argsUnnamed = WScript.Arguments.Unnamed;

WScript.Echo("There are " + argsNamed.length + " named arguments.");
WScript.Echo("There are " + argsUnnamed.length + " unnamed arguments.");

</script>
</job>

<job id="VBS">
<script language="VBScript">

Dim argsNamed, argsUnnamed
Set argsNamed = WScript.Arguments.Named
Set argsUnnamed = WScript.Arguments.Unnamed

WScript.Echo "There are " & argsNamed.Count & " named arguments."
WScript.Echo "There are " & argsUnnamed.Count & " unnamed arguments."

</script>
</job>
</package>

プロパティ

Item プロパティ | Length プロパティ

メソッド

Count メソッド | Exists メソッド

参 照

WshArguments オブジェクト | WshUnnamed オブジェクト


WshNamed オブジェクトのプロパティとメソッド

プロパティ

Item プロパティ

Length プロパティ

メソッド

Count メソッド

Exists メソッド


WshNetwork オブジェクト

WScript Object

コンピュータが接続されているネットワーク上の共有リソースへのアクセスを提供します。

解説

WshNetwork オブジェクトを作成すると、ネットワーク共有やネットワーク プリンタへの接続/接続解除、ネットワーク共有の割り当て/割り当て解除、ネットワーク上のユーザー情報へのアクセスなどを行うことができます。

使用例

次のコードは WshNetwork を使用して、現在のコンピュータ システムのドメイン名、コンピュータ名、ユーザー名を表示する例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         WScript.Echo "ドメイン = " & WshNetwork.UserDomain
         WScript.Echo "コンピュータ名 = " & WshNetwork.ComputerName
         WScript.Echo "ユーザー名 = " & WshNetwork.UserName
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         WScript.Echo("ドメイン = " + WshNetwork.UserDomain);
         WScript.Echo("コンピュータ名 = " + WshNetwork.ComputerName);
         WScript.Echo("ユーザー名 = " + WshNetwork.UserName);
      </script>
   </job>
</package>

プロパティ

ComputerName プロパティ | UserDomain プロパティ | UserName プロパティ

メソッド

AddWindowsPrinterConnection メソッド | AddPrinterConnection メソッド | EnumNetworkDrives メソッド | EnumPrinterConnection メソッド | MapNetworkDrive メソッド | RemoveNetworkDrive メソッド | RemovePrinterConnection メソッド | SetDefaultPrinter メソッド

参 照

スクリプトを実行する | WScript オブジェクト


WshNetwork オブジェクトのプロパティとメソッド

プロパティ

ComputerName プロパティ

UserDomain プロパティ

UserName プロパティ

メソッド

AddPrinterConnection メソッド

EnumNetworkDrives メソッド

EnumPrinterConnection メソッド

MapNetworkDrive メソッド

RemoveNetworkDrive メソッド

RemovePrinterConnection メソッド

SetDefaultPrinter メソッド


WshRemote オブジェクト

WshController Object

リモート スクリプト プロセスへのアクセスを提供します。

解説

WshRemote オブジェクトを使用すると、ネットワーク上のコンピュータ システムをリモート管理できます。このオブジェクトは WSH スクリプト、つまり .wsh、.wsf、.js、.vbs、.jse、.vbe のいずれかの拡張子を持つスクリプト ファイルを表しています。実行するスクリプトのインスタンスは 1 つのプロセスになります。このプロセスは、ローカル コンピュータおよびリモート コンピュータのいずれでも実行できます。ネットワーク パスを指定しないと、ローカルで実行されます。WSHRemote オブジェクトを作成 (CreateScript() メソッド使用) すると、対応するスクリプトが対象のコンピュータ システムにコピーされます。コピー先のシステムで、スクリプトがすぐに実行されるわけではありません。WSHRemote のメソッドである Execute が呼び出されてから、スクリプト実行が開始されます。この WshRemote オブジェクト インターフェイスを介して、ユーザー定義スクリプトからほかのプログラムやスクリプトを操作できます。また、外部アプリケーションからリモート スクリプトを操作することも可能です。WshRemote オブジェクトは DCOM 経由で非同期に動作します。

使用例

次のコードは、WshRemote オブジェクトを使ってリモート スクリプトを開始する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

プロパティ

Status プロパティ | Error プロパティ

メソッド

Execute メソッド | Terminate メソッド

イベント

Start イベント | End イベント | Error イベント

参 照

WshController オブジェクト


WshRemote オブジェクトのプロパティ、メソッド、およびイベント

プロパティ

Status プロパティ

Error プロパティ

メソッド

Execute メソッド

Terminate メソッド

イベント

Start イベント

End イベント

Error イベント


WshRemoteError オブジェクト

Error PropertyWshRemote Object

リモート スクリプト (WshRemote オブジェクト) がスクリプト エラーが原因で終了したときのエラー情報へのアクセスを提供します。

解説

WshRemoteError オブジェクトは WshRemote オブジェクトの Error プロパティから返されます。

使用例

次のコードは、WshRemoteError オブジェクトを使ってスクリプト内のエラー発生箇所とエラーの説明を表示する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

WScript.DisconnectObject RemoteScript

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error " & theError.Number & " - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

WScript.DisconnectObject(RemoteScript);

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error " + theError.Number + " - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

プロパティ

Description プロパティ | Line プロパティ | Character プロパティ | SourceText プロパティ | Source プロパティ | Number プロパティ

参 照

WshRemote オブジェクト


WshRemoteError オブジェクトのプロパティ

プロパティ

Description プロパティ

Line プロパティ

Character プロパティ

SourceText プロパティ

Source プロパティ

Number プロパティ


WshScriptExec オブジェクト

Exec MethodWshShell Object

Exec を使って実行したスクリプトのステータス情報を提供します。また、StdIn、StdOut、および StdErr の各ストリームへのアクセスも提供します。

解説

WshScriptExec オブジェクトは WshShell オブジェクトの Exec メソッドによって返されます。これは、スクリプトまたはプログラムの実行終了後または実行開始前のいずれかに行われます。

使用例

次のコードは、calc.exe を実行し、実行後のステータス情報を表示する例です。

[VBScript]
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("calc")

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

WScript.Echo oExec.Status
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("calc");

while (oExec.Status == 0)
{
     WScript.Sleep(100);
}

WScript.Echo(oExec.Status);

プロパティ

Status プロパティ | StdOut プロパティ | StdIn プロパティ | StdErr プロパティ

メソッド

Terminate メソッド

参 照

WScript オブジェクト | Exec メソッド


WshScriptExec オブジェクトのプロパティとメソッド

プロパティ

ExitCode プロパティ

ProcessID プロパティ

Status プロパティ

StdOut プロパティ

StdIn プロパティ

StdErr プロパティ

メソッド

Terminate メソッド


WshShell オブジェクト

WScript Object

ネイティブの Windows シェルへのアクセスを提供します。

解説

WshShell オブジェクトを作成すると、ローカルでのプログラム実行、レジストリ内容の操作、ショートカットの作成、システム フォルダへのアクセスなどを行うことができます。WshShell オブジェクトは Environment コレクションを提供します。このコレクションにより、WINDIR、PATH、PROMPT などの環境変数の操作が可能となります。

使用例

次のコードは、実行中のスクリプトへのショートカットを作成する例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "CTRL+SHIFT+F"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "Shortcut Script"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut Script.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "CTRL+SHIFT+F";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "Shortcut Script";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
      </script>
   </job>
</package>

プロパティ

CurrentDirectory プロパティ | Environment プロパティ | SpecialFolders プロパティ

メソッド

AppActivate メソッド | CreateShortcut メソッド | ExpandEnvironmentStrings メソッド | LogEvent メソッド | Popup メソッド | RegDelete メソッド | RegRead メソッド | RegWrite メソッド | Run メソッド | SendKeys メソッド | Exec メソッド

参 照

スクリプトを実行する


WshShell オブジェクトのプロパティとメソッド

プロパティ

CurrentDirectory プロパティ

Environment プロパティ

SpecialFolders プロパティ

メソッド

AppActivate メソッド

CreateShortcut メソッド

ExpandEnvironmentStrings メソッド

LogEvent メソッド

Popup メソッド

RegDelete メソッド

RegRead メソッド

RegWrite メソッド

Run メソッド

SendKeys メソッド


WshShortcut オブジェクト

WshShell Object

ショートカットへのオブジェクト参照を作成します。

使用例

次のコードは、実行中のスクリプトへのショートカットを作成する例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "CTRL+SHIFT+F"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "Shortcut Script"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut Script.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "CTRL+SHIFT+F";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "Shortcut Script";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
      </script>
   </job>
</package>

プロパティ

Arguments プロパティ | Description プロパティ | FullName プロパティ (WshShortcut オブジェクト) | Hotkey プロパティ | IconLocation プロパティ | TargetPath プロパティ | WindowStyle プロパティ | WorkingDirectory プロパティ

メソッド

Save メソッド

参 照

スクリプトを実行する | CreateShortcut メソッド


WshShortcut オブジェクトのプロパティとメソッド

プロパティ

Arguments プロパティ

Description プロパティ

FullName プロパティ

Hotkey プロパティ

IconLocation プロパティ

TargetPath プロパティ

WindowStyle プロパティ

WorkingDirectory プロパティ

メソッド

Save メソッド


WshSpecialFolders オブジェクト

SpecialFolders PropertyWshShell Object

Windows の特殊フォルダのコレクションへのアクセスを提供します。

解説

WshShell オブジェクトの SpecialFolders プロパティは、特殊フォルダのコレクションである WshSpecialFolders オブジェクトを返します。このコレクションには、[デスクトップ] フォルダ、[スタート メニュー] フォルダ、個人用ドキュメントのフォルダなど、Windows の特殊フォルダへの参照が含まれています。このコレクションでは、フォルダ名をインデックスとして指定して、特殊フォルダへのパスを取得します。特殊フォルダへのパスは使用環境によって異なります。また、特殊フォルダ内に格納される情報は、コンピュータ システムにログオンするユーザーごとに異なります。同一コンピュータ システム上で複数のユーザーがアカウントを所有している場合、ハードディスクには複数の特殊フォルダ セットが格納されます。

使用できる特殊フォルダは次のとおりです。

  • AllUsersDesktop
  • AllUsersStartMenu
  • AllUsersPrograms
  • AllUsersStartup
  • Desktop
  • Favorites
  • Fonts
  • MyDocuments
  • NetHood
  • PrintHood
  • Programs
  • Recent
  • SendTo
  • StartMenu
  • Startup
  • Templates

使用例

次のスクリプトは、WshSpecialFolders オブジェクトの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "CTRL+SHIFT+F"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "Shortcut Script"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut Script.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "CTRL+SHIFT+F";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "Shortcut Script";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
      </script>
   </job>
</package>

プロパティ

Item プロパティ

メソッド

Count メソッド

参 照

スクリプトを実行する | SpecialFolders プロパティ


WshSpecialFolders オブジェクトのプロパティとメソッド

プロパティ

Item プロパティ

Length プロパティ

メソッド

Count メソッド


WshUnnamed オブジェクト

Unnamed PropertyWshArguments Object

コマンド ラインの名前なし引数へのアクセスを提供します。

解説

WshUnnamed オブジェクトは、WshArguments オブジェクトの Unnamed プロパティによって返される読み取り専用のコレクションです。このコレクション内の各引数の値を取得するには 0 から始まるインデックスを使用します。WshArguments オブジェクトのプロパティのうち、2 つはフィルタ処理された引数のコレクションです。そのうちの 1 つには名前付き引数 (WshNamed オブジェクト)、もう 1 つには名前なし引数 (WshUnnamed オブジェクト) が含まれています。コマンド ラインの引数セットにアクセスするには、次の 3 とおりの方法があります。

  • 引数セット全体 (名前付き引数および名前なし引数) にアクセスするには WshArguments オブジェクトを使用します。
  • 名前付き引数にアクセスするには WshNamed オブジェクトを使用します。
  • 名前なし引数にアクセスするには WshUnnamed オブジェクトを使用します。

使用例

次のコードは名前付きおよび名前なしコマンドライン引数の数を表示する例です。

<package>
<job id="JS">
<script language="JScript">

var argsNamed = WScript.Arguments.Named;
var argsUnnamed = WScript.Arguments.Unnamed;

WScript.Echo("There are " + argsNamed.length + " named arguments.");
WScript.Echo("There are " + argsUnnamed.length + " unnamed arguments.");

</script>
</job>

<job id="VBS">
<script language="VBScript">

Dim argsNamed, argsUnnamed
Set argsNamed = WScript.Arguments.Named
Set argsUnnamed = WScript.Arguments.Unnamed

WScript.Echo "There are " & argsNamed.Count & " named arguments."
WScript.Echo "There are " & argsUnnamed.Count & " unnamed arguments."

</script>
</job>
</package>

プロパティ

Item プロパティ | Length プロパティ (WshArguments オブジェクト)

メソッド

Count メソッド

参 照

WshArguments オブジェクト | WshNamed オブジェクト


WshUnnamed オブジェクトのプロパティとメソッド

プロパティ

Item プロパティ

Length プロパティ

メソッド

Count メソッド


WshUrlShortcut オブジェクト

WshShell Object

URL ショートカットへのオブジェクト参照を作成します。

解説

WshUrlShortcut オブジェクトは WshShell オブジェクトの子オブジェクトです。WshUrlShortcut オブジェクトを作成するには、WshShell のメソッドである CreateShortcut を使用します (例 : WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk"))。

使用例

次のコードは、www.microsoft.com への URL ショートカットを作成します。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\Microsoft Web Site.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\Microsoft Web Site.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

プロパティ

FullName プロパティ (WshUrlShortcut オブジェクト) | TargetPath プロパティ

メソッド

Save メソッド

参 照

スクリプトを実行する | CreateShortcut メソッド


WshUrlShortcut オブジェクトのプロパティとメソッド

プロパティ

FullName プロパティ

TargetPath プロパティ

メソッド

Save メソッド


プロパティ

トピック

Arguments プロパティ
WshArguments オブジェクトを返します。
AtEndOfLine プロパティ
入力行の末尾に達したかどうかを示すブール型の値を返します。
AtEndOfStream プロパティ
入力ストリームの末尾に達したかどうかを示すブール型の値を返します。
Character プロパティ
コード行の中でエラーがある位置の文字を報告します。
Column プロパティ
入力ストリーム内における現在の文字位置を示すカラム番号を返します。
ComputerName プロパティ
コンピュータの名前を返します。
CurrentDirectory プロパティ
アクティブなスクリプトの現在の作業フォルダを設定または取得できます。
Description プロパティ
ショートカットの説明を返します。
Environment プロパティ
WshEnvironment オブジェクトを返します。
Error プロパティ (WshRemote)
WshRemoteError オブジェクトを公開します。
ExitCode プロパティ
Exec() メソッドで実行したスクリプトやプログラムによって設定された終了コードを返します。
FullName プロパティ
完全修飾パス名を返します。
Hotkey プロパティ
ショートカットに対するキーの組み合わせの割り当てを設定および取得できます。
IconLocation プロパティ
ショートカットに対するアイコンの割り当てを設定および取得できます。
Interactive プロパティ
スクリプト モードをプログラムで設定および取得できます。
Item プロパティ
指定された項目をコレクションから公開します。
Item プロパティ (WshNamed)
WshNamed オブジェクト内の項目にアクセスできます。
Item プロパティ (WshUnnamed)
0 を基数とするインデックスを使用して項目を取得します。
Length プロパティ
コレクションに含まれている項目の数を返します。
Line プロパティ (WScript)
入力ストリーム内の現在の行番号を返します。
Line プロパティ (WshRemote)
スクリプト内でエラーの原因となったステートメントが含まれている行を特定します。
Name プロパティ
WScript オブジェクト (ホスト実行可能ファイル) の呼び名を返します。
Number プロパティ
スクリプト エラーを表すエラー番号を報告します。
Path プロパティ
WScript オブジェクト (ホスト実行可能ファイル) が格納されているディレクトリの名前を返します。
ProcessID プロパティ
WshScriptEcec オブジェクトから起動したプロセスのプロセス ID (PID) を返します。
ScriptFullName プロパティ
現在実行中のスクリプトのフル パス名を返します。
ScriptName プロパティ
現在実行中のスクリプトのファイル名を返します。
Source プロパティ
スクリプト エラーが発生した COM オブジェクトを判別します。
SourceText プロパティ
ソース コード内でエラーの原因になった行を返します。
SpecialFolders プロパティ
WshSpecialFolders オブジェクトを返します。
Status プロパティ (WshRemote)
リモート スクリプトの現在の実行状態を報告します。
Status プロパティ (WshScriptExec)
Exec() メソッドで実行したスクリプトに関するステータス情報を返します。
StdErr プロパティ (WScript)
現在のスクリプトの書き込み専用エラー出力ストリームを公開します。
StdErr プロパティ (WshScriptExec)
Exec オブジェクトの読み取り専用 stderr 出力ストリームを公開します。
StdIn プロパティ (WScript)
現在のスクリプトの読み取り専用入力ストリームを公開します。
StdIn プロパティ (WshScriptExec)
Exec オブジェクトの書き込み専用 stdin 入力ストリームを公開します。
StdOut プロパティ (WScript)
現在のスクリプトの書き込み専用出力ストリームを公開します。
StdOut プロパティ (WshScriptExec)
Exec オブジェクトの書き込み専用 stdout 出力ストリームを公開します。
TargetPath プロパティ
ショートカットのリンク先の実行可能ファイルのパスを設定および取得できます。
UserDomain プロパティ
ユーザーのドメイン名を返します。
UserName プロパティ
ユーザーの名前を返します。
Version プロパティ
WSH のバージョンを返します。
WindowStyle プロパティ
ショートカットに適用するウィンドウ スタイルを設定および取得できます。
WorkingDirectory プロパティ
ショートカットに適用する作業ディレクトリを設定および取得できます。

参 照

WSH 言語
WSH リファレンスで説明されている要素の一覧です。
WSH の基本
WSH の基本概念を説明します。


Arguments プロパティ (Shortcut オブジェクト)

ショートカットの引数を設定または識別します。

object.Arguments

引数

object
WshShortcut オブジェクトです。

解説

Arguments プロパティは文字列を返します。

使用例

次のコードは、Arguments プロパティに値を設定する例です。

[VBScript]
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "Ctrl+Alt+f"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Arguments = "C:\myFile.txt"
oShellLink.Save
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");
var strDesktop = WshShell.SpecialFolders("Desktop");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut Script.lnk");
oShellLink.TargetPath = WScript.ScriptFullName;
oShellLink.WindowStyle= 1;
oShellLink.Hotkey= "Ctrl+Alt+f";
oShellLink.IconLocation= "notepad.exe, 0";
oShellLink.Description= "Shortcut Script";
oShellLink.WorkingDirectory= strDesktop;
oShellLink.Arguments = "C:\\myFile.txt"; oShellLink.Save();

参 照

WshShortcut オブジェクト | WshShell オブジェクト | CreateShortcut メソッド


Arguments プロパティ (WScript オブジェクト)

WshArguments オブジェクト (引数のコレクション) を返します。

object.Arguments

引数

object
WScript オブジェクトです。

解説

Arguments プロパティには WshArguments オブジェクト (引数のコレクション) が格納されます。このコレクションから個々の引数を取得するには、ゼロから始まるインデックスを使用します。

使用例

次のコードは、スクリプトのコマンドライン パラメータをすべて表示する例です。

[VBScript]
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
   WScript.Echo objArgs(I)
Next
[JScript]
objArgs = WScript.Arguments;
for (i = 0; i < objArgs.length; i++)
{
   WScript.Echo(objArgs(i));
}

参 照

WScript オブジェクト | WshArguments オブジェクト | WshNamed オブジェクト | WshUnnamed オブジェクト


AtEndOfLine プロパティ (Windows Script Host)

Windows Script Host

AtEndOfLine プロパティ

入力ストリーム内の行末に達したかどうかを示すブール値を返します。

object.AtEndOfLine

引数

object
StdIn テキスト ストリーム オブジェクトです。

解説

AtEndOfLine プロパティには、入力ストリーム内の行末に達したかどうかを示すブール値が格納されます。AtEndOfLine プロパティは、ストリーム ポインタが入力ストリーム内の行末記号の直前を指している場合は True を返し、それ以外の場合は False を返します。StdIn、StdOut、および StdErr のプロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe を使ってスクリプトを実行すると、エラーが発生します。

使用例

次のサンプルは、キーボードから入力されるテキストを 1 行読み込み、表示する例です。

[VBScript]
Dim Input
Input = ""

Do While Not WScript.StdIn.AtEndOfLine
   Input = Input & WScript.StdIn.Read(1)
Loop
WScript.Echo Input
[JScript]
var input = "";
while (!WScript.StdIn.AtEndOfLine)
{
   input += WScript.StdIn.Read(1);
}
WScript.Echo(input);

参 照

StdIn プロパティ | エラー メッセージ


AtEndOfStream プロパティ (Windows Script Host)

Windows Script Host

AtEndOfStream プロパティ

入力ストリームの最後に達したかどうかを示すブール値を返します。

object.AtEndOfStream

引数

object
StdIn テキスト ストリーム オブジェクトです。

解説

AtEndOfStream プロパティには、入力ストリームの最後に達したかどうかを示すブール値が格納されます。AtEndOfStream プロパティは、ストリーム ポインタが入力ストリームの最後を指している場合は True を返し、それ以外の場合は False を返します。StdIn、StdOut、および StdErr のプロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe を使ってスクリプトを実行すると、エラーが発生します。

使用例

次のコードは、"dir" から標準のディレクトリのリストを読み込み、実際の入力ではない上下の行を削除し、ディレクトリ入力を 1 行おきに出力する AtEndOfStream プロパティの使用例です。

[VBScript]
Dim StdIn, StdOut, Str1, Str2

Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut

Str1 = ""
Str2 = ""For i = 0 to 4
   StdIn.SkipLine
Next

i = 0
Do While Not StdIn.AtEndOfStream
     If i >= 2 Then
          StdOut.WriteLine Str1
     End If
     i = i + 1
     Str1 = Str2
     Str2 = StdIn.ReadLine
Loop
[JScript]
var stdin = WScript.StdIn;
var stdout = WScript.StdOut;
var str1, str2 = "";
var i;
for (i = 0; i < 5; i++)
     stdin.SkipLine();
i = 0;
while (!stdin.AtEndOfStream)
{
     if (i++ >= 2)
     {
          stdout.WriteLine(str1);
     }
     str1 = str2;
     str2 = stdin.ReadLine();
}

参 照

StdIn プロパティ | エラー メッセージ


BuildVersion プロパティ

Windows Script Host ビルド バージョン番号を返します。

Object.BuildVersion

引数

Object
WScript オブジェクトです。

解説

BuildVersion プロパティは整数値を返します。

Windows Script Host のフル バージョン番号は、製品リリース バージョン番号 + ビルド バージョン番号の形式で表されます。たとえば、Windows Script Host の製品リリース バージョン番号が 5.6 でビルド バージョン番号が 6626 の場合、フル バージョン番号は 5.6.6626 になります。

使用例

次のコードは、Windows Script Host のフル バージョン番号を返す例です。フル バージョン番号は、製品リリース バージョン番号 + ビルド バージョン番号の形式で表されます。

WScript.Echo WScript.Version & "." & WScript.BuildVersion;

参 照

Version プロパティ


Character プロパティ

エラーを含むコード行内の特定の文字をレポートします。

Object.Character

引数

Object
WshRemoteError オブジェクトです。

解説

Character プロパティは符号付き長整数を返します。

特定の文字位置に関連付けられないエラーもあります。たとえば Expected End If などのエラーです。この場合は行自体が存在しません (コード行がありません)。この場合、Character プロパティはゼロ (0) を返します。

文字位置のオフセットは 1 です (行の先頭文字の位置が 1 になります)。

使用例

次のコードは、エラーが発生したコード行の文字を WshRemoteError オブジェクトが公開する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

参 照

WshRemote オブジェクト | WshRemoteError オブジェクト | Line プロパティ| Description プロパティ | SourceText プロパティ | Number プロパティ | Source プロパティ


Column プロパティ (Windows Script Host)

Windows Script Host

Column プロパティ

入力ストリームの現在の文字位置を示すカラム番号を返します。

object.Column

引数

object
StdIn テキスト ストリーム オブジェクトです。

解説

Column プロパティには、入力ストリーム内の現在の文字位置のカラム番号を示す読み取り専用の整数値が格納されます。改行文字が書き込まれると (ほかの文字が書き込まれていなくても)、Column プロパティの値は 1 になります。StdIn、StdOut、および StdErr のプロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe を使ってスクリプトを実行すると、エラーが発生します。

使用例

次のコードは、キーボードからの入力を 20 文字ずつの行に分ける Column プロパティの使用例です。

[VBScript]
Dim Input
Input = ""

Do While Not WScript.StdIn.AtEndOfLine
   Input = Input & WScript.StdIn.Read(1)
   If (WScript.StdIn.Column - 1) Mod 20 = 0 Then
      Input = Input & vbCrLf
   End If
Loop
WScript.Echo Input
[JScript]
var input = "";
while (!WScript.StdIn.AtEndOfLine)
{
   input += WScript.StdIn.Read(1);
   if ((WScript.StdIn.Column - 1) % 20 == 0)
   input += "\n";
}
WScript.Echo(input);

参 照

StdIn プロパティ | エラー メッセージ


ComputerName プロパティ

コンピュータ名の文字列表現を提供します。

object.ComputerName

引数

object
WshNetwork オブジェクトです。

解説

ComputerName プロパティには、コンピュータ システムの名前を示す文字列値が格納されます。

使用例

次のコードは、ComputerName プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         WScript.Echo "Domain = " & WshNetwork.UserDomain
         WScript.Echo "Computer Name = " & WshNetwork.ComputerName
         WScript.Echo "User Name = " & WshNetwork.UserName
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         WScript.Echo("Domain = " + WshNetwork.UserDomain);
         WScript.Echo("Computer Name = " + WshNetwork.ComputerName);
         WScript.Echo("User Name = " + WshNetwork.UserName);
         }
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshNetwork オブジェクト


CurrentDirectory プロパティ

現在アクティブになっているディレクトリを取得または変更します。

object.CurrentDirectory

引数

object
WshShell オブジェクトです。

解説

CurrentDirectory は、アクティブなプロセスの現在の作業ディレクトリへの絶対パスを含む文字列を返します。

使用例

次のコードは、現在アクティブになっているディレクトリを表示する例です。

[VBScript]
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.CurrentDirectory
[JScript]
var WshShell = WScript.CreateObject ("WScript.Shell");
WScript.Echo (WshShell.CurrentDirectory);

参 照

WshShell オブジェクト


Description プロパティ (Windows Script Host)

Windows Script Host

Description プロパティ

ショートカットの説明を返します。

object.Description

引数

object
WshShortcut オブジェクトです。

解説

Description プロパティには、ショートカットを説明する文字列値が格納されます。

使用例

次のコードは、Description プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshShortcut オブジェクト


Description プロパティ (WshRemoteError)

リモート スクリプトが終了する原因となったエラーの簡単な説明を保有します。

Object.Description

引数

Object
WshRemoteError オブジェクトです。

解説

Description プロパティは文字列を返します。

エラーの説明を取得できない場合、Description プロパティは空の文字列を返します。

使用例

次のコードは、WshRemoteError オブジェクトがエラーの説明を公開する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

参 照

WshRemote オブジェクト | WshRemoteError オブジェクト | Line プロパティ | Character プロパティ | SourceText プロパティ | Number プロパティ | Source プロパティ


Environment プロパティ

WshEnvironment オブジェクト (環境変数のコレクション) を返します。

object.Environment ([strType])

引数

object
WshShell オブジェクトです。
strType
省略可能です。環境変数の種類を指定します。

解説

Environment プロパティには、WshEnvironment オブジェクト (環境変数のコレクション) が格納されます。strType を指定する場合、環境変数の存在場所を示す値として System、User、Volatile、または Process のいずれかを使用できます。strType を使用しない場合、Environment プロパティは、使用するオペレーティング システムごとに異なる種類の環境変数を返します。

環境変数の種類 | オペレーティング システム
System | Microsoft Windows NT/2000
Process | Windows 95/98/Me
メモ Windows 95/98/Me の場合、使用できる strType は Process に限定されます。

次の表には、Windows オペレーティング システムに用意されている一部の変数が示されています。スクリプトを使用して、ほかのアプリケーションで設定された環境変数にアクセスできます。

メモ 次の変数は Volatile タイプでは使用できません。
名前 | 説明 | システム | ユーザー | プロセス (NT/ 2000) | プロセス (98/ME)
NUMBER_OF_PROCESSORS | コンピュータで動作しているプロセッサの数。 | X | - | X | -
PROCESSOR_ARCHITECTURE | ユーザーのワークステーションに搭載されているプロセッサの種類。 | X | - | X | -
PROCESSOR_IDENTIFIER | ユーザーのワークステーションに搭載されているプロセッサの ID。 | X | - | X | -
PROCESSOR_LEVEL | ユーザーのワークステーションに搭載されているプロセッサのレベル。 | X | - | X | -
PROCESSOR_REVISION | ユーザーのワークステーションに搭載されているプロセッサのバージョン。 | X | - | X | -
OS | ユーザーのワークステーションのオペレーティング システム。 | X | - | X | -
COMSPEC | コマンド プロンプト (通常は cmd.exe) の実行可能ファイル。 | X | - | X | X
HOMEDRIVE | プライマリ ローカル ドライブ (通常は C ドライブ)。 | - | - | X | -
HOMEPATH | 既定のユーザー用ディレクトリ (通常は Windows 2000 の \users\default)。 | - | - | X | -
PATH | PATH 環境変数。 | X | X | X | X
PATHEXT | 実行可能ファイルの拡張子 (通常は .com、.exe、.bat、または .cmd)。 | X | - | X | -
PROMPT | コマンド プロンプト (通常は $P$G)。 | - | - | X | X
SYSTEMDRIVE | システム ディレクトリがあるローカル ドライブ (通常は c:\)。 | - | - | X | -
SYSTEMROOT | システム ディレクトリ (たとえば c:\winnt)。WINDIR と同じです。 | - | - | X | -
WINDIR | システム ディレクトリ (たとえば c:\winnt)。SYSTEMROOT と同じです。 | X | - | X | X
TEMP | 一時ファイルを保存するディレクトリ (たとえば c:\temp)。 | - | X | X | X
TMP | 一時ファイルを保存するディレクトリ (たとえば c:\temp)。 | - | X | X | X

使用例

次のコードは、NUMBER_OF_PROCESSORS システム環境変数を取得する例です。

[VBScript]
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");
var WshSysEnv = WshShell.Environment("SYSTEM");
WScript.Echo(WshSysEnv("NUMBER_OF_PROCESSORS"));

参 照

WshEnvironment オブジェクト

対象: WshShell オブジェクト


Error プロパティ (WshRemote)

リモート スクリプトが途中で終了する原因となったエラーの情報を保持する WshRemoteError オブジェクトを公開します。

Object.Error

引数

Object
WshRemote オブジェクトです。

解説

Error プロパティは WshRemoteError オブジェクトを返します。

使用例

次のコードは、WshRemote オブジェクトの Error プロパティが WshRemoteError オブジェクトを公開する例です。WshRemoteError オブジェクトはエラーの行、文字、および説明を公開します。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);    WScript.Quit(-1);
}

参 照

WshController オブジェクト | WshRemote オブジェクト | WshRemoteError オブジェクト | Status プロパティ | Execute メソッド | Terminate メソッド | Start イベント | End イベント | Error イベント


ExitCode プロパティ

Exec() メソッドを使って実行されたスクリプトまたはプログラムにより設定された終了コードを返します。

Object.ExitCode

引数

Object
WshScriptExec オブジェクトです。

解説

実行可能ファイルは実行終了時に終了コードを設定します。これにはプロセス終了時のステータス情報が含まれます。また、この終了コードを使って、呼び出し元にエラー コード (または、その他の情報) を送信する場合もあります。プロセスが完了していない場合、ExitCode プロパティは 0 を返します。ExitCode が返す値は、呼び出されたアプリケーションの種類によって異なります。

使用例

次のコードは ExitCode プロパティの使用例です。

[VBScript]
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec    = WshShell.Exec("%comspec% /c dire")

Function ReadAllFromAny(oExec)

     If Not oExec.StdOut.AtEndOfStream Then
          ReadAllFromAny = oExec.StdOut.ReadAll
          Exit Function
     End If

     If Not oExec.StdErr.AtEndOfStream Then
          ReadAllFromAny = oExec.StdErr.ReadAll
          Exit Function
     End If

     ReadAllFromAny = -1
End Function

Dim allInput, tryCount

allInput = ""
tryCount = 0

Do While True

     Dim input
     input = ReadAllFromAny(oExec)

     If -1 = input Then
          If tryCount > 10 And oExec.Status = 1 Then
               Exit Do
          End If
          tryCount = tryCount + 1
          WScript.Sleep 100
     Else
          allInput = allInput & input
          tryCount = 0
     End If
Loop

If oExec.ExitCode <> 0 Then
     WScript.Echo "Warning: Non-zero exit code"
End If

WScript.Echo allInput
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
var oExec    = WshShell.Exec("%comspec% /c dire");

function ReadAllFromAny(oExec)
{
     if (!oExec.StdOut.AtEndOfStream)
          return oExec.StdOut.ReadAll();

     if (!oExec.StdErr.AtEndOfStream)
          return oExec.StdErr.ReadAll();

     return -1;
}

var allInput = "";
var tryCount = 0;

while (true)
{
     var input = ReadAllFromAny(oExec);
     if (-1 == input)
     {
          if (tryCount++ > 10 && oExec.Status == 1)
               break;
          WScript.Sleep(100);
     }
     else
     {
          allInput += input;
          tryCount = 0;
     }
}

if (oExec.ExitCode != 0)
{
     WScript.Echo("Warning: Non-zero exit code");
}

WScript.Echo(allInput);

参 照

Exec メソッド | WshScriptExec オブジェクト


FullName プロパティ (WScript オブジェクト)

ホストの実行可能ファイル (CScript.exe または WScript.exe) への絶対パスを返します。

object.FullName

引数

object
WScript オブジェクトです。

解説

FullName プロパティは、ホストの実行可能ファイルへの絶対パスを表す読み取り専用の文字列値です。

使用例

次の JScript コードは、FullName プロパティの使用例です。

WScript.Echo (WScript.FullName);

次の出力結果が得られます。

C:\WINNT\System32\cscript.exe

参 照

Path プロパティ

対象: WScript オブジェクト | WshShortcut オブジェクト | WshUrlShortcut オブジェクト


FullName プロパティ (WshShortcut オブジェクト)

ショートカット オブジェクトのリンク先への絶対パスを返します。

object.FullName

引数

object
WshShortcut オブジェクトです。

解説

FullName プロパティには、ショートカットのリンク先への絶対パスを示す読み取り専用の文字列値が格納されます。

使用例

次のコードは、ショートカットへの絶対パスを取得する例です。

[VBScript]
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
WScript.Echo oShellLink.FullName
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
strDesktop = WshShell.SpecialFolders("Desktop");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut Script.lnk");
oShellLink.TargetPath = WScript.ScriptFullName;
oShellLink.WindowStyle = 1;
oShellLink.Hotkey = "CTRL+SHIFT+F";
oShellLink.IconLocation = "notepad.exe, 0";
oShellLink.Description = "Shortcut Script";
oShellLink.WorkingDirectory = strDesktop;
oShellLink.Save();
WScript.Echo(oShellLink.FullName);

参 照

Path プロパティ | WScript オブジェクト | WshShortcut オブジェクト | WshUrlShortcut オブジェクト


FullName プロパティ (WshUrlShortcut オブジェクト)

ショートカット オブジェクトのリンク先への絶対パスを返します。

object.FullName

引数

object
WshShortcut オブジェクトです。

解説

読み取り専用の文字列値です。

FullName プロパティは、ショートカットのリンク先への絶対パスを示す読み取り専用の文字列値です。

使用例

次のコードは、URL ショートカットへの絶対パスを取得する例です。

[VBScript]
set oUrlLink = WshShell.CreateShortcut(strDesktop & "\Microsoft Web Site.url")
oUrlLink.TargetPath = "http://www.microsoft.com"
oUrlLink.Save
WScript.Echo oUrlLink.FullName
[JScript]
var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\Microsoft Web Site.url");
oUrlLink.TargetPath = "http://www.microsoft.com";
oUrlLink.Save();
WScript.Echo (oUrlLink.FullName);

参 照

Path プロパティ | WScript オブジェクト | WshShortcut オブジェクト | WshUrlShortcut オブジェクト


Hotkey プロパティ

キーの組み合わせをショートカットに割り当てるか、割り当てられたキーの組み合わせを識別します。

object.Hotkey = strHotkey

引数

object
WshShortcut オブジェクトです。
strHotkey
ショートカットに割り当てるキーの組み合わせを表す文字列です。

構文

strHotkey の構文は次のとおりです。

[KeyModifier]KeyName
KeyModifier
Alt +、Ctrl +、Shift +、Ext + のいずれかを指定できます。

メモ Ext + は "拡張キー" を意味しています。これは、将来、新しい種類の Shift キーが文字セットに追加された場合のために用意されています。

KeyName
a ... z、 0 ... 9、F1 � F12 などを指定できます。

KeyName では、大文字と小文字は区別されません。

解説

ホットキーは特定のキーの組み合わせであり、それらのキーがすべて同時に押されたときにショートカットが起動されます。

  • ホットキーを使用すると、システムのデスクトップ上にあるショートカットや Windows の [スタート] メニュー内のショートカットを起動できます。
    メモ ホットキーは "キーボード ショートカット" とも呼ばれます。

Windows 2000 では、有効なホットキーは必ず Ctrl + Alt で始まります。

使用例

次のコードは、HotKey プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshSpecialFolders オブジェクト | WshShortcut オブジェクト


IconLocation プロパティ

アイコンをショートカットに割り当てるか、割り当てられたアイコンを識別します。

object.IconLocation = strIconLocation

引数

object
WshShortcut オブジェクトです。
strIconLocation
アイコンの格納場所を示す文字列です。この文字列には、絶対パスと、アイコンに関連付けられているインデックスを含める必要があります。詳細については使用例を参照してください。

解説

文字列です。

使用例

次のコードは、IconLocation プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"  ' ゼロはインデックスです。
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";  //ゼロはインデックスです。
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshShortcut オブジェクト


Interactive プロパティ

スクリプトのモードを設定または識別します。

object.Interactive

引数

object
WScript オブジェクトです。

解説

Interactive プロパティはブール値を返します。

"バッチ" と "インタラクティブ" の 2 つのモードがあります。インタラクティブ モード (既定) では、スクリプトとユーザーとの対話機能が提供され、Windows Script Host に対する入出力が有効になります。スクリプトは、情報をダイアログ ボックスに対してエコーしたり、ユーザーの入力を待機することができます。バッチ モードでは、このようなユーザーとの対話はサポートされません。WSH に対する入出力は無効になります。また、Windows Script Host コマンド ラインのスイッチ //I (インタラクティブ) と //B (バッチ) を使って、スクリプトのモードを設定することもできます。

使用例

次の JScript コードは、スクリプトのモードを表示する例です。

WScript.Echo WScript.Interactive;

次の JScript コードは、スクリプトのモードを "バッチ" に設定する例です。

WScript.Interactive = false;

参 照

WScript オブジェクト


Item プロパティ (Windows Script Host)

Windows Script Host

Item プロパティ

コレクションから、指定されたアイテムを返します。

Object.Item(natIndex)

引数

object
EnumNetworkDrive メソッドか EnumPrinterConnections メソッドの結果、または Environment プロパティか SpecialFolders プロパティが返すオブジェクトです。
natIndex
取得するアイテムです。

解説

Item は、各コレクションの既定のプロパティです。EnumNetworkDrive コレクションと EnumPrinterConnections コレクションの場合、index は整数です。Environment コレクションと SpecialFolders コレクションの場合、index は文字列です。

WshShell.SpecialFolders.Item("strFolderName") では、要求したフォルダ (strFolderName) を使用できない場合に VBScript で "Empty"、JScript で "undefined" が返されます。

次の表は、特定フォルダと、そのフォルダをサポートする Windows のバージョンです。

フォルダ | Windows のバージョン
AllUsersDesktop | Windows 2000
AllUsersStartMenu | Windows 2000
AllUsersPrograms | Windows 2000
AllUsersStartup | Windows 2000
Desktop | Windows 98/ME、Windows 2000
Favorites | Windows 98/ME、Windows 2000
Fonts | Windows 98/ME、Windows 2000
My Documents | Windows 98/ME、Windows 2000
NetHood | Windows 98/ME、Windows 2000
PrintHood | Windows 98/ME、Windows 2000
Programs | Windows 98/ME、Windows 2000
Recent | Windows 98/ME、Windows 2000
SendTo | Windows 98/ME、Windows 2000
Start Menu | Windows 98/ME、Windows 2000
StartupB | Windows 2000
Templates | Windows 2000

使用例

次のコードは、ドライブおよびプリンタのネットワーク マッピング情報を表示する例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         Set oDrives = WshNetwork.EnumNetworkDrives
         Set oPrinters = WshNetwork.EnumPrinterConnections
         WScript.Echo "Network drive mappings:"
         For i = 0 to oDrives.Count - 1 Step 2
            WScript.Echo "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
         Next
         WScript.Echo
         WScript.Echo "Network printer mappings:"
         For i = 0 to oPrinters.Count - 1 Step 2
            WScript.Echo "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
         Next
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         var oDrives = WshNetwork.EnumNetworkDrives();
         var oPrinters = WshNetwork.EnumPrinterConnections();
         WScript.Echo();
         WScript.Echo("Network drive mappings:");
         for(i = 0; i < oDrives.length; i += 2){
            WScript.Echo("Drive " + oDrives.Item(i) + " = " + oDrives.Item(i + 1));
         }
         WScript.Echo();
         WScript.Echo("Network printer mappings:");
         for(i = 0; i < oPrinters.length; i += 2){
            WScript.Echo("Port " + oPrinters.Item(i) + " = " + oPrinters.Item(i + 1));
         }
      </script>
   </job>
</package>

参 照

EnumNetworkDrive メソッド | EnumPrinterConnections メソッド | Environment プロパティ | SpecialFolders プロパティ


Item プロパティ (WshNamed)

WshNamed オブジェクト内のアイテムへのアクセスを提供します。

Object.Item(key)

引数

Object
WshNamed オブジェクトです。
key
取得するアイテムの名前です。

解説

Item プロパティは文字列を返します。コレクションの場合、このプロパティは指定されたキーに基づいて特定のアイテムを返します。コマンド ラインから引数を入力する際に文字列引数で空白を使用するには、文字列を引用符で囲みます。次の例を参考にしてください。
myscript.vbs /stringarg:"This string has spaces"

WshNamed コレクション内では引用符は取り除かれます。ある引数が WshNamed コレクション内に存在するには、その引数がコマンド ラインから入力される必要があります。単純な引数や空の文字列など値を持たない引数の場合は、Item プロパティは空の文字列を返します。存在しない名前付き引数を Item プロパティに指定するとエラーが発生します。特定の引数について存在有無をチェックするには Exists メソッドを使用します。

使用例 1

次の例では、スクリプト実行時に名前付き引数が 2 つ指定されています。スクリプト内のコードを実行すると、それらの名前付き引数が出力されます。名前付き引数コレクション内のインデックスとして、Item プロパティを使用しています。

コマンド プロンプトに次の行を入力してスクリプトを実行します。

myScript.vbs /c:arg1 /d:arg2

次のコードはスクリプト内部で実行されます。

WScript.Echo WScript.Arguments.Named.Item("c")
WScript.Echo WScript.Arguments.Named.Item("d")

引数が次のように出力されます。

arg1
arg2

参 照

WshNamed オブジェクト | WshUnnamed オブジェクト | Count メソッド | Item プロパティ | Exists メソッド


Item プロパティ (WshUnnamed)

ゼロから始まるインデックスを使って特定のアイテムを返します。

Object.Item(key)

引数

Object
WshUnnamed オブジェクトです。
key
コレクションまたは WshUnnamed オブジェクトのいずれかに関連付けられます。

解説

Item プロパティは文字列を返します。コレクションの場合には、このプロパティは指定されたキーに基づいて特定のアイテムを返します。

名前なしオブジェクトではアイテムに名前が付いていないため、WshUnnamed 引数の名前を渡すことはできません。

WshUnnamed 引数の各アイテムは、コマンド ラインから入力した順番に格納されます。

WshUnnamed 引数をコマンド ラインから入力する際に文字列引数で空白を使用するには、文字列を引用符で囲みます。

WshUnnamed コレクション内では引用符は取り除かれます。

使用例

次のコードは、Item プロパティを使って WshUnnamed コレクション内のアイテムを返す例です。この例では、スクリプト実行時に名前なし引数が 2 つ指定されています。スクリプト内のコードを実行すると、それらの名前なし引数が出力されます。名前なし引数コレクション内のインデックスとして、Item プロパティを使用しています。

コマンド プロンプトに次の行を入力してスクリプトを実行します。

myScript.vbs arg1 arg2

次のコードがスクリプト内部で実行されます。

WScript.Echo WScript.Arguments.Unnamed.Item(0)
WScript.Echo WScript.Arguments.Unnamed.Item(1)

引数が次のように出力されます。

arg1
arg2

参 照

Arguments プロパティ | WshUnnamed オブジェクト | WshUnnamed オブジェクト | Count メソッド | Item プロパティ (WshNamed) | Exists メソッド


length プロパティ (WshArguments オブジェクト)

特定のスクリプトのコマンド ライン パラメータの個数 (引数コレクション内のアイテム数) を返します。

object.length

引数

object
WshArguments オブジェクトです。

解説

length プロパティは読み取り専用の整数値であり、JScript でスクリプトを記述する際に使用します。このプロパティは VBScript の Count メソッドに類似しています。

参 照

WshArguments オブジェクト | Arguments プロパティ | Count メソッド


length プロパティ (WshEnvironment オブジェクト)

ローカル コンピュータ システム上に存在する Windows 環境変数の個数 (Environment コレクション内のアイテム数) を返します。

object.length

引数

object
WshEnvironment オブジェクトです。

解説

length プロパティは読み取り専用の整数値であり、JScript でスクリプトを記述する際に使用します。このプロパティは VBScript の Count メソッドに類似しています。

参 照

WshEnvironment オブジェクト | Count メソッド


length プロパティ (WshSpecialFolders オブジェクト)

ローカル コンピュータ システム上に存在する Windows の特定フォルダの数 (SpecialFolders コレクション内のアイテム数) を返します。

object.length

引数

object
WshSpecialFolders オブジェクトです。

解説

length プロパティは読み取り専用の整数値であり、JScript でスクリプトを記述する際に使用します。このプロパティは VBScript の Count メソッドに類似しています。

参 照

WshSpecialFolders オブジェクト | Count メソッド


Line プロパティ (WScript)

入力ストリームの現在の行番号を返します。

object.strStream.Line

引数

object
WScript オブジェクトです。
strStream
StdIn プロパティです。

解説

このプロパティは読み取り専用です。

ストリームを初めて開いた後、何か書き込むまで、Line の内容は 1 です。

StdIn、StdOut、および StdErr のプロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe を使ってスクリプトを実行すると、エラーが発生します。

使用例

次のコードは、Line プロパティの使用例です。

[VBScript]
Dim StdIn, StdOut
Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut

Do While Not StdIn.AtEndOfStream
     str = StdIn.ReadLine
     StdOut.WriteLine "Line " & (StdIn.Line - 1) & ": " & str
Loop
[JScript]
var stdin = WScript.StdIn;
var stdout = WScript.StdOut;

while (!stdin.AtEndOfStream)
{
     var str = stdin.ReadLine();
     stdout.WriteLine("Line " + (stdin.Line - 1) + ": " + str);
}

参 照

エラー メッセージ | StdIn プロパティ


Line プロパティ (WshRemoteError)

スクリプト内のエラーを含む行を識別します。

Object.Line

引数

Object
WshRemoteError オブジェクトです。

解説

Line プロパティは符号なし長整数を返します。

特定行で発生しないエラーが存在することに注意してください。たとえば Expected End If などのエラーです。この場合は行自体が存在しません (コード行がありません)。この場合、Line プロパティはゼロ (0) を返します。

使用例

次のコードは、エラーが発生した行を WshRemoteError オブジェクトが公開する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

参 照

WshRemote オブジェクト | WshRemoteError オブジェクト | Character プロパティ | Description プロパティ | Line プロパティ | SourceText プロパティ | Number プロパティ | Source プロパティ


Name プロパティ (WScript オブジェクト)

WScript オブジェクト (ホスト実行可能ファイル) の名前を返します。

object.Name

引数

object
WScript オブジェクトです。

解説

Name プロパティは読み取り専用の文字列値です。

使用例

次の JScript コードは、Name プロパティの使用例です。

WScript.Echo (WScript.Name);

参 照

WScript オブジェクト


Named プロパティ

WshNamed オブジェクト (名前付き引数のコレクション) を返します。

Object.Named

引数

Object
WshArguments オブジェクトです。

解説

Named プロパティは、名前付き引数のコレクションである WshNamed コレクションを返します。特定の引数がコレクション内に含まれているかどうかを調べたり、その引数の値にアクセスしたりするには、引数の名前を使用します。

使用例

次のコードは、名前付きおよび名前なしコマンド ライン引数の数を表示する例です。

<package>
<job id="JS">
<script language="JScript">

var argsNamed = WScript.Arguments.Named;
var argsUnnamed = WScript.Arguments.Unnamed;

WScript.Echo("There are " + argsNamed.length + " named arguments.");
WScript.Echo("There are " + argsUnnamed.length + " unnamed arguments.");

</script>
</job>

<job id="VBS">
<script language="VBScript">

Dim argsNamed, argsUnnamed
Set argsNamed = WScript.Arguments.Named
Set argsUnnamed = WScript.Arguments.Unnamed

WScript.Echo "There are " & argsNamed.Count & " named arguments."
WScript.Echo "There are " & argsUnnamed.Count & " unnamed arguments."

</script>
</job>
</package>

参 照

WshArguments オブジェクト | WshNamed オブジェクト | Unnamed プロパティ


Number プロパティ (Windows Script Host)

Windows Script Host

Number プロパティ

特定のスクリプト エラーを表すエラー番号をレポートします。

Object.Number

引数

Object
WshRemoteError オブジェクトです。

解説

Number プロパティは符号なし長整数を返します。

使用例

次のコードは、WshRemoteError オブジェクトがエラー番号を公開する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error " & theError.Number & " - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error " + theError.Number + " - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

参 照

WshRemote オブジェクト | WshRemoteError オブジェクト | Description プロパティ | Line プロパティ | Character プロパティ| SourceText プロパティ| Source プロパティ


Path プロパティ (Windows Script Host)

Windows Script Host

Path プロパティ

ホスト実行可能ファイル (CScript.exe または WScript.exe) の格納先ディレクトリの名前を返します。

object.Path

引数

object
WScript オブジェクトです。

解説

Path プロパティは読み取り専用の文字列値です。

使用例

次の VBScript コードは、実行可能ファイルがあるディレクトリをエコーする例です。

WScript.Echo (WScript.Path);

参 照

FullName プロパティ | WScript オブジェクト


ProcessID プロパティ

WshScriptExec オブジェクトによって起動されたプロセスのプロセス ID (PID) です。

Object.ProcessID

引数

Object
WshScriptExec オブジェクトです。

解説

アプリケーションをアクティブにする場合、ProcessID プロパティを (AppActivate メソッドの引数として) 使用します。

使用例

次のコードは、ProcessID プロパティを使って電卓およびメモ帳アプリケーションをアクティブにする例です。

[VBScript]
Sub delayedSendKeys(str)
     WScript.Sleep 100
     WshShell.SendKeys str
End Sub

Dim WshShell, oCalc, oNotepad
Set WshShell = CreateObject("WScript.Shell")
Set oCalc = WshShell.Exec("calc")
Set oNotepad = WshShell.Exec("notepad")
WScript.Sleep 500

WshShell.AppActivate oCalc.ProcessID
delayedSendKeys "1{+}1~"
delayedSendKeys "^C"
delayedSendKeys "%{F4}"

WshShell.AppActivate oNotepad.ProcessID
delayedSendKeys "1 {+} 1 = ^V"
[JScript]
function delayedSendKeys(str)
{
     WScript.Sleep(100);
     WshShell.SendKeys(str);
}

var WshShell = new ActiveXObject("WScript.Shell");
var oCalc = WshShell.Exec("calc");
var oNotepad = WshShell.Exec("notepad");
WScript.Sleep(500);

WshShell.AppActivate(oCalc.ProcessID);
delayedSendKeys("1{+}1~");
delayedSendKeys("^C");
delayedSendKeys("%{F4}");

WshShell.AppActivate(oNotepad.ProcessID);
delayedSendKeys("1 {+} 1 = ^V");

参 照

WshScriptExec オブジェクト | AppActivate メソッド


RelativePath プロパティ

ショートカットの相対パスの割り当てまたは識別を行います。

object.RelativePath

引数

object
WshShortcut オブジェクトです。

解説

文字列です。

使用例

次のコードは、ショートカットの相対パスを表示する例です。

[VBScript]
Dim WshShell, WshShortcut
Set WshShell = WScript.CreateObject ("WScript.Shell")
Set WshShortcut = WshShell.CreateShortcut("MyScript.lnk")
WshShortcut.RelativePath = "C:\Scripts\"
[JScript]
var WshShell = WScript.CreateObject ("WScript.Shell");
var WshShortcut = WshShell.CreateShortcut("MyScript.lnk");
WshShortcut.RelativePath = "C:\\Scripts\\";

参 照

WshShortcut オブジェクト


ScriptFullName プロパティ

実行中のスクリプトへの絶対パスを提供します。

object.ScriptFullName

引数

object
WScript オブジェクトです。

解説

ScriptFullName プロパティは読み取り専用の文字列値です。

使用例

次のコードは、ScriptFullName プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | ScriptName プロパティ | WScript オブジェクト


ScriptName プロパティ

実行中のスクリプトのファイル名を提供します。

object.ScriptName

引数

object
WScript オブジェクトです。

解説

ScriptName プロパティは読み取り専用の文字列値です。

使用例

次のコードは、Echo メソッドを使って、実行中のスクリプトの名前を表示する例です。

WScript.Echo WScript.ScriptName

参 照

ScriptFullName プロパティ | WScript オブジェクト


Source プロパティ (Windows Script Host)

Windows Script Host

Source プロパティ

スクリプト エラーの原因となった COM オブジェクトを識別します。

Object.Source

引数

Object
WshRemoteError オブジェクトです。

解説

Source プロパティは文字列を返します。

使用例

次のコードは、スクリプト エラーの原因となった COM オブジェクトを WshRemoteError オブジェクトが公開する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description & vbCrLf & "Source: " & theError.Source
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description + "\nSource: " + theError.Source);
    WScript.Quit(-1);
}

参 照

WshRemote オブジェクト | WshRemoteError オブジェクト | Description プロパティ | Line プロパティ | Character プロパティ| SourceText プロパティ | Number プロパティ


SourceText プロパティ

エラーの原因となったソース コードの行を保有します。

Object.SourceText

引数

Object
WshRemoteError オブジェクトです。

解説

SourceText プロパティは文字列を返します。

ソース テキストはいつでも取得できるとは限りません。取得できなかった場合は、SourceText プロパティは空の文字列を返します。

使用例

次のコードは、エラーが発生したソース コードの行を WshRemoteError オブジェクトが公開する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description & vbCrLf & "Source Text: " & theError.SourceText
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description + "\nSource Text: "_+ theError.SourceText);
    WScript.Quit(-1);
}

参 照

WshRemote オブジェクト | WshRemoteError オブジェクト | Description プロパティ | Line プロパティ | Character プロパティ| Number プロパティ | Source プロパティ


SpecialFolders プロパティ

SpecialFolders オブジェクト (特定フォルダのコレクション) を返します。

object.SpecialFolders(objWshSpecialFolders)

引数

object
WshShell オブジェクトです。
objWshSpecialFolders
取得する特定フォルダの名前です。

解説

  • WshSpecialFolders オブジェクトはコレクションです。このオブジェクトには、デスクトップのフォルダ、[スタート] メニューのフォルダ、個人用ドキュメントのフォルダなど、Windows の特定フォルダ セット全体が格納されます。目的の特定フォルダを取得するには、フォルダ名をコレクション内のインデックスとして使用します。要求したフォルダ (strFolderName) を使用できない場合は、NULL が返されます。たとえば、Windows 95 では、AllUsersDesktop フォルダがないため、strFolderName が AllUsersDesktop と等しい場合に NULL が返されます。

使用できる特定フォルダは次のとおりです。

  • AllUsersDesktop
  • AllUsersStartMenu
  • AllUsersPrograms
  • AllUsersStartup
  • Desktop
  • Favorites
  • Fonts
  • MyDocuments
  • NetHood
  • PrintHood
  • Programs
  • Recent
  • SendTo
  • StartMenu
  • Startup
  • Templates

使用例

次のコードは、SpecialFolders プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshSpecialFolders オブジェクト | WshShell オブジェクト


Status プロパティ (WshRemote)

リモート スクリプトの現在のステータスをレポートします。

Object.Status

引数

Object
WshRemote オブジェクトです。

解説

Status プロパティは読み取り専用の列挙データ型を返します。

値

Status プロパティは次の 3 つの値のいずれかを返します。

戻り値 | 数値 | 説明
NoTask | 0 | リモート スクリプト オブジェクトが作成されましたが、まだ実行されていません。
Running | 1 | リモート スクリプト オブジェクトが実行中です。
Finished | 2 | リモート スクリプト オブジェクトの実行が終了しました。

使用例

次の コードは、リモート スクリプトの実行が正常終了したかどうかをチェックするテスト ブロック内で Status プロパティを使用する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

参 照

WshController オブジェクト | WshRemote オブジェクト | Error プロパティ | Execute メソッド | Terminate メソッド | Start イベント | End イベント | Error イベント


Status プロパティ (WshScriptExec)

Exec() メソッドを使って実行したスクリプトのステータス情報を返します。

Object.Status

引数

Object
WshScriptExec オブジェクトです。

解説

プログラムが非同期的に実行される場合に Status プロパティを使用します。

戻り値

Status プロパティは、次のような列挙型の値を返します。

WshRunning ( = 0)
ジョブはまだ実行中です。
WshFinished ( = 1)
ジョブの実行が完了しました。

使用例

次のコードは、calc.exe を実行し、実行後のステータス情報を表示する例です。

[VBScript]
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("calc")

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

WScript.Echo oExec.Status
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("calc");

while (oExec.Status == 0)
{
     WScript.Sleep(100);
}

WScript.Echo(oExec.Status);

参 照

Exec メソッド | WshScriptExec オブジェクト


StdErr プロパティ (WScript)

現在のスクリプトで使用する書き込み専用のエラー出力ストリームを公開します。

object.StdErr

引数

object
WScript オブジェクトです。

解説

StdErr プロパティは標準エラー出力ストリームのオブジェクトを返します。StdIn、StdOut、および StdErr の各ストリームには、CScript.exe の実行中のみアクセスできます。WScript.exe の実行中にこれらのストリームにアクセスしようとすると、エラーが発生します。

参 照

エラー メッセージ | WScript オブジェクト


StdErr プロパティ (WshScriptExec)

Exec オブジェクトの stderr 出力ストリームへのアクセスを提供します。

Object.StdErr

引数

Object
WshScriptExec オブジェクトです。

解説

Exec で起動されたプロセスから stderr ストリームに送信されたデータを取得する場合に StdErr プロパティを使用します。

使用例

次のコードは、存在しないコマンドを実行した結果を StdErr オブジェクトを使用して表示する例です。

[VBScript]
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec    = WshShell.Exec("%comspec% /c dire")

Function ReadAllFromAny(oExec)

     If Not oExec.StdOut.AtEndOfStream Then
          ReadAllFromAny = oExec.StdOut.ReadAll
          Exit Function
     End If

     If Not oExec.StdErr.AtEndOfStream Then
          ReadAllFromAny = "STDERR: " + oExec.StdErr.ReadAll
          Exit Function
     End If

     ReadAllFromAny = -1
End Function

Dim allInput, tryCount

allInput = ""
tryCount = 0

Do While True

     Dim input
     input = ReadAllFromAny(oExec)

     If -1 = input Then
          If tryCount > 10 And oExec.Status = 1 Then
               Exit Do
          End If
          tryCount = tryCount + 1
          WScript.Sleep 100
     Else
          allInput = allInput & input
          tryCount = 0
     End If
Loop

WScript.Echo allInput
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
var oExec    = WshShell.Exec("%comspec% /c dire");

function ReadAllFromAny(oExec)
{
     if (!oExec.StdOut.AtEndOfStream)
          return oExec.StdOut.ReadAll();

     if (!oExec.StdErr.AtEndOfStream)
          return "STDERR: " + oExec.StdErr.ReadAll();

     return -1;
}

var allInput = "";
var tryCount = 0;

while (true)
{
     var input = ReadAllFromAny(oExec);
     if (-1 == input)
     {
          if (tryCount++ > 10 && oExec.Status == 1)
               break;
          WScript.Sleep(100);
     }
     else
     {
          allInput += input;
          tryCount = 0;
     }
}

WScript.Echo(allInput);

参 照

WshScriptExec オブジェクト | StdIn プロパティ | StdOut プロパティ


StdIn プロパティ (WScript)

現在のスクリプトで使用する読み取り専用の入力ストリームを公開します。

object.StdIn

引数

object
WScript オブジェクトです。

解説

StdIn プロパティは標準入力ストリームのオブジェクトを返します。StdIn、StdOut、および StdErr の各ストリームには、CScript.exe の実行中のみアクセスできます。WScript.exe の実行中にこれらのストリームにアクセスしようとすると、エラーが発生します。

参 照

エラー メッセージ | WScript オブジェクト | Read メソッド | ReadAll メソッド | ReadLine メソッド | Skip メソッド | SkipLine メソッド | AtEndOfLine プロパティ | Close メソッド | Column プロパティ | Line プロパティ (WScript)


StdIn プロパティ (WshScriptExec)

Exec オブジェクトの stdin 入力ストリームを公開します。

Object.StdIn

引数

Object
WshScriptExec オブジェクトです。

解説

Exec で起動されたプロセスにデータを引き渡す場合に StdIn プロパティを使用します。

使用例

次のコードはバッチ ファイルを起動し、ユーザーの入力をうながすプロンプトを表示します。StdIn ストリームからの入力が終了するとバッチ ファイルは完了します。

[VBScript]
Dim WshShell, oExec, input
Set WshShell = CreateObject("WScript.Shell")
Set oExec    = WshShell.Exec("test.bat")
input = ""

Do While True

     If Not oExec.StdOut.AtEndOfStream Then
          input = input & oExec.StdOut.Read(1)
          If InStr(input, "Press any key") <> 0 Then Exit Do
     End If
     WScript.Sleep 100
Loop

oExec.StdIn.Write VbCrLf

Do While oExec.Status <> 1
     WScript.Sleep 100
Loop
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
var oExec    = WshShell.Exec("test.bat");
var input = "";

while (true)
{
     if (!oExec.StdOut.AtEndOfStream)
     {
          input += oExec.StdOut.Read(1);
          if (input.indexOf("Press any key") != -1)
               break;
     }
     WScript.Sleep(100);
}

oExec.StdIn.Write("\n");

while (oExec.Status != 1)
     WScript.Sleep(100);

参 照

WshScriptExec オブジェクト | StdIn プロパティ | StdErr プロパティ


StdOut Property (WScript)

Windows Script Host

StdOut プロパティ (WScript)

現在のスクリプトで使用する書き込み専用の出力ストリームを公開します。

object.StdOut

引数

object
WScript オブジェクトです。

解説

StdOut プロパティは標準出力ストリームのオブジェクトを返します。StdIn、StdOut、および StdErr の各ストリームには、CScript.exe の実行中のみアクセスできます。WScript.exe の実行中にこれらのストリームにアクセスしようとすると、エラーが発生します。

参 照

エラー メッセージ | WScript オブジェクト | Write メソッド | WriteBlankLines メソッド | WriteLine メソッド | Close メソッド | Column プロパティ | Line プロパティ (WScript)


StdOut プロパティ (WshScriptExec)

Exec オブジェクトの書き込み専用の stdout 出力ストリームを公開します。

Object.StdOut

引数

Object
WshScriptExec オブジェクトです。

解説

StdOut プロパティには、スクリプトから標準出力に送信された全情報のコピー (読み取り専用) が格納されます。

使用例

次のコードはバッチ ファイルを起動し、ユーザーの入力をうながすプロンプトを表示します。StdIn ストリームからの入力が終了するとバッチ ファイルは完了します。

[VBScript]
Dim WshShell, oExec, input
Set WshShell = CreateObject("WScript.Shell")
Set oExec    = WshShell.Exec("test.bat")
input = ""

Do While True

     If Not oExec.StdOut.AtEndOfStream Then
          input = input & oExec.StdOut.Read(1)
          If InStr(input, "Press any key") <> 0 Then Exit Do
     End If
     WScript.Sleep 100
Loop

oExec.StdIn.Write VbCrLf

Do While oExec.Status <> 1
     WScript.Sleep 100
Loop
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
var oExec    = WshShell.Exec("test.bat");
var input = "";

while (true)
{
     if (!oExec.StdOut.AtEndOfStream)
     {
          input += oExec.StdOut.Read(1);
          if (input.indexOf("Press any key") != -1)
               break;
     }
     WScript.Sleep(100);
}

oExec.StdIn.Write("\n");

while (oExec.Status != 1)
     WScript.Sleep(100);

参 照

WshScriptExec オブジェクト | StdIn プロパティ | StdErr プロパティ


TargetPath プロパティ

ショートカットの実行可能ファイルへのパスです。

object.TargetPath

引数

object
WshShortcut オブジェクトまたは WshUrlShortcut オブジェクトです。

解説

文字列です。

このプロパティに設定できるのはショートカットのリンク先パスのみです。ショートカットへの引数は Argument プロパティに設定します。

使用例

次のコードは、TargetPath プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshShortcut オブジェクト | WshUrlShortcut オブジェクト


Unnamed プロパティ

WshUnnamed オブジェクト (名前なし引数のコレクション) を返します。

Object.Unnamed

引数

Object
WshArguments オブジェクトです。

解説

Unnamed プロパティは、名前なし引数のコレクションである WshUnnamed コレクションを返します。これらの引数は、コマンド ラインから入力した順番に並べられます。1 番目の名前なし引数はインデックス 0 の位置に格納されています。

使用例

次のコードは、名前付きおよび名前なしコマンド ライン引数の数を表示する例です。

<package>
<job id="JS">
<script language="JScript">

var argsNamed = WScript.Arguments.Named;
var argsUnnamed = WScript.Arguments.Unnamed;

WScript.Echo("There are " + argsNamed.length + " named arguments.");
WScript.Echo("There are " + argsUnnamed.length + " unnamed arguments.");

</script>
</job>

<job id="VBS">
<script language="VBScript">

Dim argsNamed, argsUnnamed
Set argsNamed = WScript.Arguments.Named
Set argsUnnamed = WScript.Arguments.Unnamed

WScript.Echo "There are " & argsNamed.Count & " named arguments."
WScript.Echo "There are " & argsUnnamed.Count & " unnamed arguments."

</script>
</job>
</package>

参 照

WshArguments オブジェクト | WshUnnamed オブジェクト | Named プロパティ


UserDomain プロパティ

ユーザー ドメイン名の文字列表現を提供します。

object.UserDomain

引数

object
WshNetwork オブジェクトです。

解説

文字列です。

UserDomain プロパティが Windows 98 および Windows ME 上で動作するには、USERDOMAIN 環境変数が設定されている必要があります。この変数は既定では設定されていません。

使用例

次のコードは、UserDomain プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         WScript.Echo "Domain = " & WshNetwork.UserDomain
         WScript.Echo "Computer Name = " & WshNetwork.ComputerName
         WScript.Echo "User Name = " & WshNetwork.UserName
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         WScript.Echo("Domain = " + WshNetwork.UserDomain);
         WScript.Echo("Computer Name = " + WshNetwork.ComputerName);
         WScript.Echo("User Name = " + WshNetwork.UserName);
         }
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshNetwork オブジェクト


UserName プロパティ

ユーザー名の文字列表現を提供します。

object.UserName

引数

object
WshNetwork オブジェクトです。

解説

文字列です。

このプロパティをログイン スクリプト内で使用する場合は、「自動ログイン スクリプトを作成する」を参照してください。

使用例

次のコードは、UserName プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         WScript.Echo "Domain = " & WshNetwork.UserDomain
         WScript.Echo "Computer Name = " & WshNetwork.ComputerName
         WScript.Echo "User Name = " & WshNetwork.UserName
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         WScript.Echo("Domain = " + WshNetwork.UserDomain);
         WScript.Echo("Computer Name = " + WshNetwork.ComputerName);
         WScript.Echo("User Name = " + WshNetwork.UserName);
         }
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshNetwork オブジェクト


Version プロパティ

Windows Script Host のバージョンを返します。

object.Version

引数

object
WScript オブジェクトです。

解説

文字列です。

使用例

次のコードは、Echo メソッドを使って Windows Script Host の現在のバージョンを表示する例です。

WScript.Echo WScript.Version

参 照

WScript オブジェクト


WindowStyle プロパティ

ウィンドウ スタイルをショートカットに割り当てるか、ショートカットのウィンドウ スタイルの種類を識別します。

object.WindowStyle = intWindowStyle

引数

object
WshShortcut オブジェクトです。
intWindowStyle
実行中のプログラムのウィンドウ スタイルを設定します。

解説

WindowStyle プロパティは整数を返します。

次の表は intWindowStyle に設定できる値を説明しています。

intWindowStyle | 内容
1 | ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。
3 | ウィンドウをアクティブにし、最大化ウィンドウとして表示します。
7 | ウィンドウを最小化し、次に上位となるウィンドウをアクティブにします。

使用例

次のコードは、WindowStyle プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\\ショートカット スクリプト.lnk ")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshShortcut オブジェクト


WorkingDirectory プロパティ

作業ディレクトリをショートカットに割り当てるか、ショートカットの作業ディレクトリを識別します。

object.WorkingDirectory = strWorkingDirectory

引数

object
WshShortcut オブジェクトです。
strWorkingDirectory
ショートカットを起動するディレクトリです。

解説

文字列です。

使用例

次のコードは、WorkingDirectory プロパティの使用例です。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "Ctrl+Alt+e"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "Ctrl+Alt+e";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する


メソッド

トピック

AddPrinterConnection メソッド
DOS スタイルのプリンタ接続をコンピュータに追加します。
AddWindowsPrinterConnection メソッド
Windows スタイルのプリンタ接続をコンピュータに追加します。
AppActivate メソッド
アプリケーション ウィンドウをアクティブにします。
Close メソッド
開かれているストリームを閉じます。
ConnectObject メソッド
指定したプリフィックスでオブジェクトのイベント ソースを関数に接続します。
Count メソッド
WshNamed オブジェクトまたは WshUnnamed オブジェクトに格納されているスイッチの数を返します。
CreateObject メソッド
strProgID パラメータで指定したオブジェクトを作成します。
CreateScript メソッド
WshRemote オブジェクト (リモート プロセスで実行中のスクリプトのインスタンスを表すオブジェクト) を作成します。
CreateShortcut メソッド
ショートカットまたは URL ショートカットへのオブジェクト参照を作成します。
DisconnectObject メソッド
接続済みのオブジェクトを Windows Script Host から切断します。
Echo メソッド
ダイアログ ボックスまたはコンソールに出力を送ります。
EnumNetworkDrives メソッド
現在のネットワーク ドライブ マッピングを返します。
EnumPrinterConnectionsメソッド
現在のネットワーク プリンタ マッピングを返します。
Exec メソッド
子コマンド シェルでアプリケーションを実行します。stdin、stdout、stderr の各チャネルへのアクセスを可能にし、環境変数の共有を可能にします。
Execute メソッド
リモート スクリプト オブジェクトの実行を開始します。
Exists メソッド
WshNamed オブジェクトに特定のキー値が格納されているかどうかを示します。
ExpandEnvironmentStrings メソッド
要求された環境変数を実行中のプロセスから展開し、結果を文字列として返します。
GetObject メソッド
strProgID パラメータで指定したファイルまたはオブジェクトから Automation オブジェクトを取得します。
getResource メソッド
リソース要素で定義したリソースの値を返します。
LogEvent メソッド
Windows NT イベント ログまたは WSH.log ファイルにイベントを記録します。
MapNetworkDrive メソッド
strRemoteName で指定した共有ポイントをローカル リソース名 strLocalName にマッピングします。
Popup メソッド
strText に格納されているメッセージをポップアップ メッセージ ボックスに表示します。
Quit メソッド
指定したエラー コードを出力して実行を終了します。
Read メソッド
指定した数の文字を入力ストリームから読み出し、結果を文字列として返します。
ReadAll メソッド
入力ストリーム全体を読み出し、結果を文字列として返します。
ReadLine メソッド
入力ストリームから行全体 (改行文字の直前まで) を読み出し、結果を文字列として返します。
RegDelete メソッド
strName で指定したキーまたは値をレジストリから削除します。
RegRead メソッド
strName で指定したレジストリ キーまたはレジストリ値を返します。
RegWrite メソッド
strName で指定したレジストリ キーまたはレジストリ値を設定します。
Remove メソッド
strName で指定した環境変数を削除します。
RemoveNetworkDrive メソッド
strName で指定した現在のリソース接続を削除します。
RemovePrinterConnection メソッド
strName で指定した現在のリソース接続を削除します。
Run メソッド
strCommand を実行する新しいプロセスを作成します。
Save メソッド
指定した場所にショートカットを保存します。
SendKeys メソッド
アクティブ ウィンドウに 1 つまたは複数のキーストロークを送ります。キーボードから入力した場合と同様の結果が得られます。
SetDefaultPrinter メソッド
指定したリモート プリンタを既定のプリンタとして設定します。
ShowUsage メソッド
スクリプトの使用方法を表示します。
Skip メソッド
入力ストリームの読み出し時に指定した数の文字をスキップします。
SkipLine メソッド
入力ストリームの読み出し時に次の行をスキップします。
Sleep メソッド
指定した時間 (ミリ秒単位) が経過するまでスクリプト プロセスを非アクティブ状態にし、その後、実行を続行します。
Terminate メソッド (WshScriptExec)
Exec メソッドで開始したプロセスをスクリプト エンジンに終了させます。
Write メソッド
指定した文字列を出力ストリームに書き込みます。
WriteBlankLines メソッド
指定した数の改行文字を出力ストリームに書き込みます。
WriteLine メソッド
指定した文字列と改行文字を出力ストリームに書き込みます。

参 照

WSH 言語
WSH リファレンスで説明されている要素の一覧です。
WSH の基本
WSH の基本概念を説明します。


AddPrinterConnection メソッド

リモートの MS-DOS ベースのプリンタ接続をコンピュータ システムに追加します。

object.AddPrinterConnection(strLocalName, strRemoteName[,bUpdateProfile][,strUser][,strPassword])

引数

object
WshNetwork オブジェクトです。
strLocalName
接続プリンタに割り当てるローカル名を示す文字列値です。
strRemoteName
リモート プリンタ名を示す文字列値です。
bUpdateProfile
省略可能です。プリンタのマッピング情報を現在のユーザー プロファイルに格納するかどうかを示すブール値です。bUpdateProfile に値 TRUE を指定すると、この割り当てがユーザー プロファイルに保存されます。既定値は FALSE です。
strUser
省略可能です。ユーザー名を示す文字列値です。strUser および strPassword は、現在のユーザー以外のアカウント情報を使ってリモート プリンタを割り当てる場合に使用します。
strPassword
省略可能です。ユーザーのパスワードを示す文字列値です。strUser および strPassword は、現在のユーザー以外のアカウント情報を使ってリモート プリンタを割り当てる場合に使用します。

解説

AddPrinterConnection メソッドを使用すると、ネットワーク プリンタを LPT1 などの MS-DOS プリンタ ポートに追加できます。ただし、このメソッドを使ってリモートの Windows ベースのプリンタ接続を追加することはできません。リモートの Windows ベースのプリンタ接続を追加するには、AddWindowsPrinterConnection メソッドを使用します。

使用例

次のコードは、AddPrinterConnection メソッドを使ってネットワーク プリンタを LPT1 に接続する例です。

[VBScript]
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.AddPrinterConnection "LPT1", "\\Server\Print1"
[JScript]
var WshNetwork = WScript.CreateObject("WScript.Network");
WshNetwork.AddPrinterConnection ("LPT1", "\\\\Server\\Print1");

参 照

WshNetwork オブジェクト | AddWindowsPrinterConnection メソッド | EnumPrinterConnections メソッド | RemovePrinterConnection メソッド | SetDefaultPrinter メソッド


AddWindowsPrinterConnection メソッド

Windows ベースのプリンタ接続をコンピュータ システムに追加します。

Windows NT/2000:
object.AddWindowsPrinterConnection(
   strPrinterPath
)
Windows 9x/Me:
object.AddWindowsPrinterConnection(
   strPrinterPath,
   strDriverName[,strPort]
)

引数

object
WshNetwork オブジェクトです。
strPrinterPath
プリンタ接続へのパスを示す文字列値です。
strDriverName
ドライブ名を示す文字列値です (Windows NT/Windows 2000 では無視されます)。
strPort
省略可能です。プリンタ接続のプリンタ ポートを指定する文字列値です (Windows NT/Windows 2000 では無視されます)。

解説

このメソッドを使ってプリンタの接続を追加するのは、[コントロール パネル] の [プリンタ] を使ってプリンタ接続を追加するのと同じです。AddPrinterConnection メソッドとは異なり、このメソッドでは、LPT1 など特定のポートに割り当てずにプリンタの接続を作成できます。接続を確立できない場合は、エラーが発生します。 Windows 9x/Me で AddWindowsPrinterConnection メソッドが動作するには、プリンタ ドライバが既にインストールされている必要があります。インストールされていない場合は、"不明なプリンタ ドライバです。" というエラー メッセージが返ります。

使用例 1

次のコードは、AddWindowsPrinterConnection メソッドを使ってネットワーク プリンタを Windows NT/2000 コンピュータ システムに接続する例です。

[VBScript]
Set WshNetwork = WScript.CreateObject("WScript.Network")
PrinterPath = "\\printserv\DefaultPrinter"
WshNetwork.AddWindowsPrinterConnection PrinterPath
[JScript]
var WshNetwork = WScript.CreateObject("WScript.Network");
var PrinterPath = "\\\\printserv\\DefaultPrinter";
WshNetwork.AddWindowsPrinterConnection(PrinterPath);

使用例 2

次のコードは、AddWindowsPrinterConnection メソッドを使ってネットワーク プリンタを Windows 9x/Me コンピュータ システムに接続する例です。

[VBScript]
Set WshNetwork = WScript.CreateObject("WScript.Network")
PrinterPath = "\\printserv\DefaultPrinter"
PrinterDriver = "Lexmark Optra S 1650"
WshNetwork.AddWindowsPrinterConnection PrinterPath, PrinterDriver
[JScript]
var WshNetwork = WScript.CreateObject("WScript.Network");
var PrinterPath = "\\\\printserv\\DefaultPrinter";
var PrinterDriver = "Lexmark Optra S 1650";
WshNetwork.AddWindowsPrinterConnection(PrinterPath, PrinterDriver);

参 照

WshNetwork オブジェクト | AddPrinterConnection メソッド | EnumPrinterConnections メソッド | RemovePrinterConnection メソッド | SetDefaultPrinter メソッド


AppActivate メソッド

アプリケーション ウィンドウをアクティブにします。

object.AppActivate title

引数

object
WshShell オブジェクトです。
title
アクティブにするアプリケーションを指定します。この引数には、アプリケーションのタイトル バーに表示されるタイトル文字列か、アプリケーションのプロセス ID を指定できます。

解説

AppActivate メソッドは、プロシージャ コールが正常終了したかどうかを示すブール値を返します。このメソッドを呼び出すと、指定されたアプリケーションまたはウィンドウにフォーカスが移りますが、最大化と最小化には影響がありません。ユーザーがフォーカスを切り替えたりウィンドウを閉じたりすると、アクティブなアプリケーション ウィンドウからフォーカスが移ります。

実行中の各アプリケーションのタイトル文字列を title と比較することで、どのアプリケーションがアクティブになるかが決まります。完全に一致するタイトルが見つからない場合、タイトル文字列の先頭が title と一致するアプリケーションがアクティブになります。そのようなアプリケーションが見つからない場合、タイトル文字列の最後が title と一致するアプリケーションがアクティブになります。名前が title と一致するアプリケーションのインスタンスがいくつかある場合、アクティブになるインスタンスは不定です。

使用例

次のコードは、1 つの .wsf ファイルを使用して、異なるスクリプト言語 (VBScript および JScript) で記述された 2 つのジョブを実行する例です。ジョブの機能はどちらも同じで、Windows の電卓を起動して簡単な計算を実行するキーストロークを送ります。

次の例では、Windows の電卓を起動し、AppActivate を使って電卓が一番手前に表示されるようにしています。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         WshShell.Run "calc"
         WScript.Sleep 100
         WshShell.AppActivate "Calculator"
         WScript.Sleep 100
         WshShell.SendKeys "1{+}"
         WScript.Sleep 500
         WshShell.SendKeys "2"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 500
         WshShell.SendKeys "*3"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 2500
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         WshShell.Run("calc");
         WScript.Sleep(100);
         WshShell.AppActivate("Calculator");
         WScript.Sleep(100);
         WshShell.SendKeys("1{+}");
         WScript.Sleep(500);
         WshShell.SendKeys("2");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(500);
         WshShell.SendKeys("*3");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(2500);
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshShell オブジェクト | SendKeys メソッド


Close メソッド (Windows Script Host)

Windows Script Host

Close メソッド

テキスト ストリームを閉じます。

object.Close

引数

object
StdIn、StdOut、または StdErr の各テキスト ストリーム オブジェクトです。

解説

StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe でスクリプトを実行した場合は、"無効なハンドルです。" というエラーが発生します。標準ストリームを閉じる必要はありません。標準ストリームは処理が終了すると自動的に閉じます。標準ストリームを閉じる場合、そのストリームへのポインタはすべて無効になることに注意してください。このメソッドは、TextStream オブジェクトとの互換性を維持するために提供されています。

参 照

StdErr プロパティ | StdIn プロパティ | StdOut プロパティ | エラー メッセージ


ConnectObject メソッド

所定のプリフィックスを持つ関数にオブジェクトのイベント ソースを接続します。

object.ConnectObject(strObject, strPrefix)

引数

object
WScript オブジェクトです。
strObject
接続するオブジェクトの名前です。
strPrefix
イベント処理関数のプリフィックスです。

解説

対象のオブジェクトには、そのクラスのイベントを列挙する機能が必要です。ConnectObject メソッドは、オブジェクト作成後にオブジェクトの出力インターフェイスをスクリプト ファイルに接続します。イベント処理関数は、このプリフィックスとイベント名を組み合わせた名前になります。

使用例

次のコードは ConnectObject メソッドを使用してWshRemote オブジェクトのエラーイベントに接続する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error " & theError.Number & " - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error " + theError.Number + " - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

参 照

WScript オブジェクト | DisconnectObject メソッド | CreateObject メソッド | GetObject メソッド


Count メソッド

WshNamed または WshUnnamed オブジェクトのスイッチの数を返します。

object.Count

引数

object
Arguments オブジェクト

解説

Count メソッドは整数値を返します。Count メソッドは主に VBScript を対象にしています。JScript では一般的に length プロパティを使用します。

使用例 (WshNamed)

次のサンプル コードは、WshNamed オブジェクトで Count メソッドを使用する例です。まず、次のテキストをコマンド プロンプトから入力します。

myScript.vbs /c:"WSH is a wonderful thing" /s:"scripts are wonderful"

次に、以下の VBScript コードを追加します。

For i = 0 to WScript.Arguments.Count-1
    WScript.Echo WScript.Arguments.Named(i)
next i

次の実行結果が得られます。

WSH is a wonderful thing
scripts are wonderful

使用例 (WshUnnamed)

次のサンプル コードは、WshUnnamed オブジェクトで Count メソッドを使用する例です。まず、次のテキストをコマンド プロンプトから入力します。

myscript.vbs "WSH is a wonderful thing" "scripts are wonderful"

次に、以下の VBScript コードを追加します。

For i = 0 to WScript.Arguments.Count-1
    WScript.Echo WScript.Arguments.Unnamed(i)
next i

次の実行結果が得られます。

WSH is a wonderful thing
scripts are wonderful

参 照

Arguments プロパティ | WshNamed オブジェクト | WshUnnamed オブジェクト | Item プロパティ | Exists メソッド | Length プロパティ


CreateObject メソッド

COM オブジェクトを作成します。

object.CreateObject(strProgID[,strPrefix])

引数

object
WScript オブジェクトです。
strProgID
作成するオブジェクトのプログラム ID (ProgID) を示す文字列値です。
strPrefix
省略可能です。関数のプリフィックスを示す文字列値です。

解説

CreateObject メソッドで strPrefix 引数を指定すると、接続されたオブジェクトが作成されます。これは、オブジェクトのイベントを同期させる場合に便利です。オブジェクトの出力インターフェイスは、オブジェクト作成後にスクリプト ファイルに接続されます。イベント処理関数は、このプリフィックスとイベント名を組み合わせた名前になります。オブジェクト作成時に strPrefix 引数を指定しなかった場合は、ConnectObject メソッドを使ってオブジェクトのイベントを同期させることができます。オブジェクトがイベントを発行すると、WSH は strPrefix + イベント名という形式の名前を持つサブルーチンを呼び出します。たとえば、strPrefix が MYOBJ であり、オブジェクトが OnBegin というイベントを発行した場合、Windows Script Host はスクリプト内の MYOBJ_OnBegin という名前のサブルーチンを呼び出します。CreateObject メソッドはオブジェクトの IDispatch インターフェイスへのポインタを返します。

使用例

次の VBScript コードは、CreateObject メソッドを使って WshNetwork オブジェクトを作成する例です。

Set WshNetwork = WScript.CreateObject("WScript.Network")

参 照

WScript オブジェクト | GetObject メソッド | ConnectObject メソッド | DisconnectObject メソッド


CreateScript メソッド

WshRemote オブジェクトを作成します。

object.CreateScript(CommandLine,[MachineName])

引数

object
WshController オブジェクトです。
Commandline
必ず指定します。スクリプトのパスおよびスイッチを示す文字列値です。コマンド プロンプトから入力する場合と同じように指定します。スクリプトのパスは、スクリプト実行先のコンピュータ システムから見た形式ではなく、コントローラ コンピュータ システムから見た形式で指定します。
MachineName
省略可能です。リモート コンピュータ システム (リモート スクリプトを実行するコンピュータ システム) の名前を示す文字列値です。UNC (Uniform Naming Convention) を使って指定します。

解説

CreateScript メソッドは、WshRemote オブジェクトのインスタンスへのハンドルを返します。スクリプト名のパス部分はローカルである必要はありません。つまり、ネットワーク共有上のスクリプトを参照できます。このため、あるコンピュータ システムから別のコンピュータ上のスクリプトを取得し、それをさらに別のコンピュータ上で実行することが可能になります。コンピュータ名を指定しなかった場合、リモート スクリプト オブジェクトはコントローラ コンピュータ システム上で実行されます (これが既定です)。コンピュータ名を指定した場合、リモート スクリプト オブジェクトは指定されたコンピュータ システム上で実行されます。CreateScript メソッドはリモート コンピュータ システムとの接続を確立し、スクリプトを実行できるようにセットアップしますが、スクリプトを実際に起動するには、WshRemote オブジェクトの Execute メソッドを呼び出す必要があります。

使用例

次のサンプル コードは、WshController オブジェクトの CreateScript メソッドを使って WshRemote オブジェクト (リモート スクリプトのインスタンス) を作成する例です。

[VBScript]

Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

WScript.DisconnectObject RemoteScript

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error " & theError.Number & " - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub

[JScript]

var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

WScript.DisconnectObject(RemoteScript);

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error " + theError.Number + " - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

参 照

CreateObject メソッド | CreateScript メソッド | WshRemote オブジェクト | Execute メソッド


CreateShortcut メソッド

ショートカットまたは URL ショートカットへのオブジェクト参照を作成します。

object.CreateShortcut(strPathname)

引数

object
WshShell オブジェクトです。
strPathname
作成するショートカットのパスとファイル名です。

解説

CreateShortcut メソッドは、WshShortcut オブジェクトまたは WshURLShortcut オブジェクトのいずれかを返します。CreateShortcut メソッドを呼び出しただけではショートカットは作成されません。ショートカット オブジェクトおよびオブジェクトに対して行った変更はメモリ内に格納されているため、Save メソッドを使ってディスクに保存する必要があります。ショートカットを作成するには、次の手順を実行します。

  1. WshShortcut オブジェクトのインスタンスを作成します。
  2. インスタンスのプロパティを初期化します。
  3. Save メソッドを使ってインスタンスをディスクに保存します。
    メモ ショートカット オブジェクトの TargetPath プロパティに引数を指定することがよく行われますが、これでは正常に動作しません。ショートカットへの引数はすべて Arguments プロパティに指定する必要があります。

使用例

次の例では、WshShell オブジェクトを作成し、その CreateShortcut メソッドを使って 2 つのショートカットを作成しています。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト..lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "CTRL+SHIFT+F"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト."
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "CTRL+SHIFT+F";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshShortcut オブジェクト | WshUrlShortcut オブジェクト | WshShell オブジェクト


DisconnectObject メソッド

オブジェクトのイベント ソースへの接続を解除します。

object.DisconnectObject(obj)

引数

object
WScript オブジェクトです。
obj
接続を解除するオブジェクトの名前です。

解説

オブジェクトが "接続解除" されると、WSH はそのオブジェクトのイベントに応答しなくなります。ただし、そのオブジェクトは引き続きイベントを発行することはできます。指定されたオブジェクトが接続されていない場合は DisconnectObject メソッドを呼び出しても何も実行されないことに注意してください。

使用例

次のコードは DisconnectObject メソッドを使用してリモート スクリプトの完了後に WshRemote オブジェクトのエラーイベントに接続する例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("test.js", "remoteserver")
WScript.ConnectObject RemoteScript, "remote_"
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop

WScript.DisconnectObject RemoteScript

Sub remote_Error
    Dim theError
    Set theError = RemoteScript.Error
    WScript.Echo "Error " & theError.Number & " - Line: " & theError.Line & ", Char: " & theError.Character & vbCrLf & "Description: " & theError.Description
    WScript.Quit -1
End Sub
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("test.js", "remoteserver");
WScript.ConnectObject(RemoteScript, "remote_");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

WScript.DisconnectObject(RemoteScript)

function remote_Error()
{
    var theError = RemoteScript.Error;
    WScript.Echo("Error " + theError.Number + " - Line: " + theError.Line + ", Char: " + theError.Character + "\nDescription: " + theError.Description);
    WScript.Quit(-1);
}

参 照

WScript オブジェクト | ConnectObject メソッド | CreateObject メソッド | GetObject メソッド


Echo メソッド

ダイアログ ボックスまたはコンソールに出力を送ります。

object.Echo [Arg1] [,Arg2] [,Arg3] ...

引数

object
WScript オブジェクトです。
Arg1, Arg2, Arg3 ...
表示するアイテムのリストです。

解説

Echo メソッドの動作は、使用する WSH エンジンの種類によって変わります。

WSH エンジン | テキストの出力先
Wscript.exe | グラフィカルなメッセージ ボックス
Cscript.exe | コマンド コンソール ウィンドウ

表示アイテムは、1 つの空白で区切られます。CScript.exe を使用すると、各アイテムの最後に改行文字が付加されます。Echo メソッドの引数にアイテムを指定しないと、空白行が表示されます。

使用例

次の例では、Echo メソッドを使って現在のマシンのドメイン名、コンピュータ名、およびユーザー名を表示します。また、ドライブおよびプリンタのネットワーク マッピング情報も表示します。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         Set oDrives = WshNetwork.EnumNetworkDrives
         Set oPrinters = WshNetwork.EnumPrinterConnections
         WScript.Echo "ドメイン = " & WshNetwork.UserDomain
         WScript.Echo "コンピュータ名 = " & WshNetwork.ComputerName
         WScript.Echo "ユーザー名 = " & WshNetwork.UserName
         WScript.Echo
         WScript.Echo "ネットワーク ドライブ割り当て :"
         For i = 0 to oDrives.Count - 1 Step 2
            WScript.Echo "ドライブ " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
         Next
         WScript.Echo
         WScript.Echo "ネットワーク プリンタ割り当て :"
         For i = 0 to oPrinters.Count - 1 Step 2
            WScript.Echo "ポート " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
         Next
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         var oDrives = WshNetwork.EnumNetworkDrives();
         var oPrinters = WshNetwork.EnumPrinterConnections();
         WScript.Echo("ドメイン = " + WshNetwork.UserDomain);
         WScript.Echo("コンピュータ名 = " + WshNetwork.ComputerName);
         WScript.Echo("ユーザー名 = " + WshNetwork.UserName);
         WScript.Echo();
         WScript.Echo("ネットワーク ドライブ割り当て :");
         for(i=0; i<oDrives.Count(); i+=2){
            WScript.Echo("ドライブ " + oDrives.Item(i) + " = " + oDrives.Item(i+1));
         }
         WScript.Echo();
         WScript.Echo("ネットワーク プリンタ割り当て :");
         for(i=0; i<oPrinters.Count(); i+=2){
            WScript.Echo("ポート " + oPrinters.Item(i) + " = " + oPrinters.Item(i+1));
         }
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WScript オブジェクト


EnumNetworkDrives メソッド

ネットワーク ドライブの現在の割り当てを返します。

objDrives = object.EnumNetworkDrives

引数

object
WshNetwork オブジェクトです。
objDrives
ネットワーク ドライブのマッピング情報を格納する変数です。

解説

EnumNetworkDrives メソッドはコレクションを返します。このコレクションは、ネットワーク ドライブのローカル名と対応する UNC 名という 2 つのアイテムをペアにした配列になっています。コレクションの偶数番目のアイテムは論理ドライブのローカル名を表します。奇数番目のアイテムは対応する UNC 共有名を表します。コレクションのアイテムはインデックス ゼロ (0) から始まります。

使用例

次の例では、EnumNetworkDrives を使ってネットワーク ドライブのリストを生成し、それらのドライブのマッピング情報を表示します。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         Set oDrives = WshNetwork.EnumNetworkDrives
         Set oPrinters = WshNetwork.EnumPrinterConnections
         WScript.Echo "Network drive mappings:"
         For i = 0 to oDrives.Count - 1 Step 2
            WScript.Echo "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
         Next
         WScript.Echo
         WScript.Echo "ネットワーク ドライブ割り当て :"
         For i = 0 to oPrinters.Count - 1 Step 2
            WScript.Echo "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
         Next
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         var oDrives = WshNetwork.EnumNetworkDrives();
         var oPrinters = WshNetwork.EnumPrinterConnections();
         WScript.Echo("Network drive mappings:");
         for(i = 0; i < oDrives.length; i += 2) {
            WScript.Echo("Drive " + oDrives.Item(i) + " = " + oDrives.Item(i + 1));
         }
         WScript.Echo();
         WScript.Echo("ネットワーク ドライブ割り当て :");
         for(i = 0; i < oPrinters.length; i += 2) {
            WScript.Echo("Port " + oPrinters.Item(i) + " = " + oPrinters.Item(i + 1));
         }
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshNetwork オブジェクト | MapNetworkDrive メソッド | RemoveNetworkDrive メソッド


EnumPrinterConnections メソッド

ネットワーク プリンタの現在の割り当てを返します。

objPrinters = object.EnumPrinterConnections

引数

object
WshNetwork オブジェクトです。
objPrinters
プリンタのコレクションへの変数参照です。

解説

EnumPrinterConnections メソッドはコレクションを返します。このコレクションは、ネットワーク プリンタのローカル名と対応する UNC 名という 2 つのアイテムをペアにした配列になっています。コレクションの偶数番目のアイテムはプリンタ ポートを表します。奇数番目のアイテムは対応するネットワーク プリンタを表します。コレクションのアイテムはインデックス ゼロ (0) から始まります。

使用例

次の例では、EnumPrinterConnections メソッドを使ってネットワーク プリンタのリストを生成し、それらのプリンタのマッピング情報を表示します。

<package>
   <job id="vbs">
      <script language="VBScript">
         Set WshNetwork = WScript.CreateObject("WScript.Network")
         Set oDrives = WshNetwork.EnumNetworkDrives
         Set oPrinters = WshNetwork.EnumPrinterConnections
         WScript.Echo
         WScript.Echo "ネットワーク ドライブ割り当て :"
         For i = 0 to oDrives.Count - 1 Step 2
            WScript.Echo "ドライブ " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
         Next
         WScript.Echo
         WScript.Echo "ネットワーク プリンタ割り当て :"
         For i = 0 to oPrinters.Count - 1 Step 2
            WScript.Echo "ポート " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
         Next
   </script>
</job>

   <job id="js">
      <script language="JScript">
         var WshNetwork = WScript.CreateObject("WScript.Network");
         var oDrives = WshNetwork.EnumNetworkDrives();
         var oPrinters = WshNetwork.EnumPrinterConnections();
         WScript.Echo("ネットワーク ドライブ割り当て :");
         for(i = 0; i < oDrives.length; i += 2) {
            WScript.Echo("ドライブ " + oDrives.Item(i) + " = " + oDrives.Item(i+1));
         }
         WScript.Echo();
         WScript.Echo("ネットワーク プリンタ割り当て :");
         for(i = 0; i < oPrinters.length; i += 2) {
            WScript.Echo("ポート " + oPrinters.Item(i) + " = " + oPrinters.Item(i+1));
         }
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshNetwork オブジェクト | AddPrinterConnection メソッド | AddWindowsPrinterConnection メソッド | RemovePrinterConnection メソッド | SetDefaultPrinter メソッド


Exec メソッド

子コマンドシェルでアプリケーションを実行します。アプリケーションから StdIn/StdOut/StdErr ストリームにアクセスできます。

object.Exec(strCommand)

引数

object
WshShell オブジェクトです。
strCommand
スクリプトの実行に使用するコマンド ラインを示す文字列値です。コマンド プロンプトから入力する場合と全く同じコマンド ラインを指定します。

解説

Exec メソッドが返す WshScriptExec オブジェクトを使用すると、Exec メソッドを使って実行したスクリプトのステータス情報やエラー情報だけでなく、StdIn、StdOut、および StdErr チャンネルにもアクセスできます。Exec メソッドで実行できるのは、コマンド ラインのアプリケーションのみです。Exec メソッドを使ってリモートのスクリプトを実行することはできません。Exec メソッドを (WshRemote オブジェクトの) Execute メソッドと混同しないように注意してください。

使用例

次のサンプル コードは、Exec メソッドの基本的な使用例です。

[VBScript]
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("calc")

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

WScript.Echo oExec.Status
[JScript]
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("calc");

while (oExec.Status == 0)
{
     WScript.Sleep(100);
}

WScript.Echo(oExec.Status);

参 照

WshScriptExec オブジェクト


Execute メソッド (Windows Script Host)

Windows Script Host

Execute メソッド

リモート スクリプト オブジェクトの実行を開始します。

object.Execute

引数

object
WshRemote オブジェクトです。

解説

スクリプトの実行開始時に WshRemote オブジェクトの Start イベントが発行されます。Execute メソッドを (WScript オブジェクトの) Exec メソッドと混同しないように注意してください。

使用例

次のサンプル コードは、Execute メソッドを使って WshRemote オブジェクトを作成する (リモート スクリプトのインスタンスを開始する) 例です。

[VBScript]
Dim Controller, RemoteScript
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("remote1.js")
RemoteScript.Execute

Do While RemoteScript.Status <> 2
    WScript.Sleep 100
Loop
[JScript]
var Controller = WScript.CreateObject("WSHController");
var RemoteScript = Controller.CreateScript("remote1.js");
RemoteScript.Execute();

while (RemoteScript.Status != 2) {
    WScript.Sleep(100);
}

参 照

WshController オブジェクト | WshRemote オブジェクト | Status プロパティ | Error プロパティ | Terminate メソッド | Start イベント | End イベント


Exists メソッド (Windows Script Host)

Windows Script Host

Exists メソッド

特定のキー値が WshNamed オブジェクト内に存在するかどうかを示します。

object.Exists(key)

引数

object
WshNamed オブジェクトです。
Key
WshNamed オブジェクトの特定の引数を示す文字列値です。

解説

Exists メソッドはブール値を返します。要求された引数がコマンド ラインに指定されている場合は TRUE を返します (それ以外の場合は FALSE を返します)。

使用例

次のような情報がコマンド ラインから入力された場合を考えてみます。

myScript.vbs /c:"WSH is a wonderful thing"

次の 2 行の JScript コードを使用すると、各コマンド ラインのスイッチがスクリプト起動時に使用されたかどうかを判断できます。

WScript.Echo(WScript.Arguments.Named.Exists("C"));
WScript.Echo(WScript.Arguments.Named.Exists("D"));

参 照

Arguments プロパティ | WshNamed オブジェクト | WshUnnamed オブジェクト | Count メソッド | Item プロパティ


ExpandEnvironmentStrings メソッド

環境変数を展開した値を返します。

object.ExpandEnvironmentStrings(strString)

引数

object
WshShell オブジェクトです。
strString
展開する環境変数の名前です。

解説

ExpandEnvironmentStrings メソッドは、PROCESS 環境領域に定義された環境変数のみを展開します。環境変数名は "%" で囲む必要があります。また、環境変数名の大文字と小文字は区別されません。

使用例

次のコードは、WinDir 環境変数を展開し、結果を表示する例です。

[VBScript]
set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo "WinDir is " & WshShell.ExpandEnvironmentStrings("%WinDir%")
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");
WScript.Echo("WinDir is " + WshShell.ExpandEnvironmentStrings("%WinDir%"));

参 照

WshShell オブジェクト


GetObject メソッド

指定された ProgID を持つ既存のオブジェクトを取得するか、ファイルを読み込んで新しいオブジェクトを作成します。

object.GetObject(strPathname [,strProgID], [strPrefix])

引数

object
WScript オブジェクトです。
strPathname
必須です。取得するオブジェクトがあるファイルの絶対パスと名前を指定します。
strProgID
省略可能です。オブジェクトのプログラム ID (ProgID) を表現する文字列を指定します。
strPrefix
省略可能です。オブジェクトのイベントを同期させる場合に使用します。strPrefix パラメータを指定した場合、Windows Script Host は、オブジェクト作成後にオブジェクトの出力インターフェイスをスクリプト ファイルに接続します。

解説

オブジェクトの現在のインスタンスがある場合か、既にロードされているファイルからオブジェクトを作成する場合は、GetObject メソッドを使用します。現在のインスタンスがない場合と、既にロードされているファイルからオブジェクトを作成しない場合は、CreateObject メソッドを使用します。GetObject メソッドは、どの言語でオブジェクトを作成したかに関係なく、すべての COM クラスで使用できます。strPrefix 引数を指定した場合、WSH はオブジェクト作成後にオブジェクトの出力インターフェイスをスクリプト ファイルに接続します。オブジェクトがイベントを発行すると、WSH は strPrefix + イベント名という形式の名前を持つサブルーチンを呼び出します。たとえば、strPrefix が MYOBJ_ であり、オブジェクトが OnBegin というイベントを発行した場合、Windows Script Host はスクリプト内の MYOBJ_OnBegin という名前のサブルーチンを呼び出します。

シングルインスタンスのオブジェクト (たとえば Microsoft Word 7.0 の Word.Basic オブジェクト) として登録されている場合、CreateObject を何度実行しても、オブジェクトのインスタンスは 1 つしか作成されません。さらに、シングルインスタンスのオブジェクトの場合、長さ 0 の文字列 ("") を指定して GetObject を呼び出すと必ず同じインスタンスが返り、パスのパラメータを省略するとエラーが発生します。GetObject では、Visual Basic 4.0 以前のバージョンで作成した Microsoft Visual Basic® クラスへの参照を取得できません。

使用例

次の VBScript コードは、指定されたファイル(strPathname) に関連付けられているアプリケーションを起動する例です。

Dim MyObject As Object
Set MyObject = GetObject("C:\CAD\SCHEMA.CAD")
MyApp = MyObject.Application

ファイルの一部をアクティブにできるアプリケーションもあります。ファイルの一部をアクティブにするには、ファイル名の末尾に感嘆符 (!) を付け、アクティブにする部分を示す文字列をその後に指定します。 たとえば、描画アプリケーションでは、ファイルに保存された図面に複数のレイヤが含まれていることがあります。次のコードは、schema.cad という図面ファイルにある 1 つのレイヤをアクティブにする例です。

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

オブジェクトのクラスを指定しなかった場合、COM は指定されたファイル名に基づき、起動するアプリケーションとアクティブにするオブジェクトを判断します。ただし、オブジェクトのクラスが 2 つ以上サポートされるファイルもあります。たとえば、図面ファイルでは、Application オブジェクト、Drawing オブジェクト、Toolbar オブジェクトという 3 種類の型のオブジェクトがサポートされ、どのオブジェクトも同一のファイルに入っています。

次の VBScript コードは、描画アプリケーション FIGMENT を起動し、ファイル SAMPLE.DRW 内のオブジェクト DRAWING を開く例です。

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")

参 照

WScript オブジェクト | CreateObject メソッド | DisconnectObject メソッド


getResource メソッド

<resource> 要素で定義されているリソースの値を返します。

getResource(resourceID)

引数

resourceID
*.WSF スクリプト ファイルのリソース タグ セットに含まれるリソース情報を一意に識別するための文字列です。

解説

getResource メソッドは文字列を返します。<resource> 要素を使用すると、スクリプトで参照する .wsf ファイル内の文字列や数値をほかの部分と区別できます。この機能を使用すると、複数の言語にローカライズされる可能性のある文字列セットを保守するのが簡単になります。WSH スクリプト ファイル (*.wsf) には複数のリソース情報を格納でき、各リソース情報には一意のリソース ID が割り当てられます。

使用例

次の WSH スクリプトは、リソース errNonNumeric を定義し、変数 upperBound が数値でない場合にerrNonNumeric の値を表示する例です。

<package>
<job id="JS">
<resource id="errNonNumeric">エラー : 数値でない値が入力されました。</resource>
<script language="JScript">

function getRandomNumber(upperBound)
{
   var realUpperBound = parseInt(upperBound);
   if (!isNaN(realUpperBound))
      return (realUpperBound * Math.random) + 1
   else
   {
      WScript.Echo(getResource("errNonNumeric"));
      WScript.Quit(-1);
   }
}

NewValue = getRandomNumber("Bad Value");

</script>
</job>

<job id="VBS">
<resource id="errNonNumeric">エラー : 数値でない値が入力されました。</resource>
<script language="VBScript">

Function getRandomNumber(upperBound)
   If IsNumeric(upperBound) Then
      getRandomNumber = CInt(upperBound * Rnd + 1)
   Else
      WScript.Echo getResource("errNonNumeric")
      WScript.Quit -1
   End If
End Function

NewValue = getRandomNumber("Bad Value")

</script>
</job>
</package>

参 照

<resource> 要素


LogEvent メソッド

イベント エントリをログ ファイルに追加します。

object.LogEvent(intType, strMessage [,strTarget])

引数

object
WshShell オブジェクトです。
intType
イベントの種類を表現する数値です。
strMessage
ログ エントリのテキストです。
strTarget
省略可能です。イベント ログを格納するコンピュータ システムの名前を示す文字列値です。既定値はローカルのコンピュータ システムです。Windows NT/2000 にのみ適用されます。

解説

LogEvent メソッドはブール値 (イベントが正常に記録された場合は TRUE、それ以外の場合は FALSE) を返します。Windows NT および Windows 2000 では、イベントは Windows NT イベント ログに記録されます。Windows 9x/ME では、イベントは Windows ディレクトリ内の WSH.log に記録されます。イベントには次の 6 種類があります。

種類 | 値
0 | SUCCESS
1 | ERROR
2 | WARNING
4 | INFORMATION
8 | AUDIT_SUCCESS
16 | AUDIT_FAILURE

使用例

次のコードは、関数 runLoginScript() の戻り値に応じて SUCCESS または ERROR を記録する例です。

[VBScript]
Set WshShell = WScript.CreateObject("WScript.Shell")
rc = runLoginScript()      'ログオンに成功すると true を返します。

if rc then
   WshShell.LogEvent 0, "ログオンスクリプトは成功しました。"
else
   WshShell.LogEvent 1, "ログオンスクリプトは失敗しました。"
end if
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");
var rc = runLoginScript();

if (rc)
   WshShell.LogEvent(0, "ログオンスクリプトは成功しました。");
else
   WshShell.LogEvent(1, "ログオンスクリプトは失敗しました。");

参 照

WshShell オブジェクト


MapNetworkDrive メソッド

共有ネットワーク ドライブをコンピュータ システムに追加します。

object.MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword])

引数

object
WshNetwork オブジェクトです。
strLocalName
割り当てるドライブのローカル名を示す文字列値です。
strRemoteName
共有ドライブの UNC 名 (\\xxx\yyy) を示す文字列値です。
bUpdateProfile
省略可能です。マッピング情報を現在のユーザー プロファイルに格納するかどうかを示すブール値です。bUpdateProfile に値 TRUE を指定すると、ユーザー プロファイルに割り当てが保存されます。既定値は FALSE です。
strUser
省略可能です。ユーザー名を示す文字列値です。ネットワーク ドライブの割り当て時に現在のユーザー以外のユーザーのアカウント情報を使用する場合、この引数を指定する必要があります。
strPassword
省略可能です。ユーザー パスワードを示す文字列値です。ネットワーク ドライブの割り当て時に現在のユーザー以外のユーザーのアカウント情報を使用する場合、この引数を指定する必要があります。

解説

共有されていないネットワーク ドライブを割り当てようとするとエラーになります。

使用例

次のコードは、論理ドライブ "E" を UNC 名 "\\Server\Public" のネットワーク共有に割り当てる例です。

[VBScript]
Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "E:", "\\Server\Public"
[JScript]
var WshNetwork = WScript.CreateObject("WScript.Network");
WshNetwork.MapNetworkDrive ("E:", "\\\\Server\\Public");

参 照

WshNetwork オブジェクト | EnumNetworkDrives メソッド | RemoveNetworkDrive メソッド


Popup メソッド

ポップアップ メッセージ ボックスにテキストを表示します。

intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])

引数

object
WshShell オブジェクトです。
strText
ポップアップ ウィンドウに表示するテキストです。
nSecondsToWait
省略可能です。ポップアップ ウィンドウを閉じるまで待機する秒数を指定します。
strTitle
省略可能です。ポップアップ ウィンドウのタイトルに表示するテキストです。
nType
省略可能です。ポップアップ メッセージ ボックスに表示するボタンとアイコンの種類を示す数値です。選択する種類によってメッセージ ボックスの使い方が決まります。
IntButton
メッセージ ボックス終了時にクリックするボタンの番号を示す整数値です。これは Popup メソッドの戻り値です。

解説

Popup メソッドを呼び出すと、実行中のホスト実行可能ファイルの種類 (WScript.exe または CScript.exe) に関係なく、メッセージ ボックスが表示されます。nSecondsToWait にゼロ (既定値) を指定した場合、ポップアップ メッセージ ボックスはユーザーがウィンドウを閉じるまでずっと表示されます。natSecondsToWait に正の値を指定した場合、指定した秒数が経過すると、メッセージ ボックスのウィンドウが閉じます。strTitle を省略すると、ウィンドウ タイトルは "Windows Script Host" となります。natType の意味は、Microsoft Win32® アプリケーション プログラミング インターフェイスの MessageBox 関数で指定するものと同じです。次の表は、natType の値とその意味です。表の値は組み合わせて使用できます。

メモ ヘブライ語やアラビアなどの RTL 言語でテキストを正しく表示するには、nType パラメータに 16 進 &h00100000 (10 進 1048576) を加算する必要があります。

ボタンの種類

値 | 内容
0 | [OK] ボタンを表示します。
1 | [OK] ボタンと [キャンセル] ボタンを表示します。
2 | [中止] ボタン、[再試行] ボタン、および [無視] ボタンを表示します。
3 | [はい] ボタン、[いいえ] ボタン、および [キャンセル] ボタンを表示します。
4 | [はい] ボタンと [いいえ] ボタンを表示します。
5 | [再試行] ボタンと [キャンセル] ボタンを表示します。

アイコンの種類

値 | 内容
16 | [Stop] アイコンを表示します。
32 | [?] アイコンを表示します。
48 | [!] アイコンを表示します。
64 | [i] アイコンを表示します。

上の 2 つの表に記載した値は、nType に使用できる値の一部です。完全な一覧については、Microsoft Win32 のマニュアルを参照してください。

戻り値 intButton は、クリックしたボタンの番号を表します。ボタンをクリックする前に nSecondsToWait で指定した秒数が経過すると、intButton は -1 になります。

値 | 説明
1 | [OK] ボタン。
2 | [キャンセル] ボタン。
3 | [中止] ボタン。
4 | [再試行] ボタン。
5 | [無視] ボタン。
6 | [はい] ボタン。
7 | [いいえ] ボタン。

使用例

次のコードは、簡単なポップアップ ウィンドウを生成する例です。

[VBScript]
Dim WshShell, BtnCode
Set WshShell = WScript.CreateObject("WScript.Shell")

BtnCode = WshShell.Popup("ご機嫌いかがですか?", 7, "お答えください。", 4 + 32)

Select Case BtnCode
   case 6      WScript.Echo "お元気でなによりです。"
   case 7      WScript.Echo "残念です。"
   case -1     WScript.Echo "誰かいますか?"
End Select
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");
var BtnCode = WshShell.Popup("ご機嫌いかがですか?", 7, "お答えください。", 4 + 32);
switch(BtnCode) {
   case 6:
      WScript.Echo("お元気でなによりです。");
      break;
   case 7:
      WScript.Echo("残念です。");
      break;
   case -1:
      WScript.Echo("誰かいますか?");
      break;
}

参 照

WshShell オブジェクト | Echo メソッド


Quit メソッド

指定されたエラー コードで実行を終了します。

object.Quit([intErrorCode])

引数

object
WScript オブジェクトです。
intErrorCode
省略可能です。このパラメータを指定すると、WScript はプロセス終了コードとしてその値を返します。intErrorCode を省略すると、WScript はプロセス終了コードとして 0 を返します。

解説

Quit メソッドでは、オプションでエラー コードを返すこともできます。Quit メソッドがスクリプト内の最後の命令であり、ゼロ以外の値を返す必要がない場合は、値を指定しなくてもスクリプトは正常に終了します。

使用例

次のコードは、実行を終了してエラー コード 1 を返す例です。

WScript.Quit (1);

// このコード行は実行されません。
var i = 0;

参 照

WScript オブジェクト


Read メソッド (Windows Script Host)

Windows Script Host

Read メソッド

指定された文字数を入力ストリームから読み込み、結果の文字列を返します。

object.Read(characters)

引数

object
StdIn テキスト ストリーム オブジェクトです。
characters
読み込む文字数を示す整数値です。

解説

Read メソッドは文字列を返します。StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。スクリプトを WScript.exe で実行した場合はエラーが発生します。現在位置を示すポインタの場所から読み込みが開始され、メソッドを呼び出すたびに 1 文字ずつ前に進みます。

ユーザーが Enter キーを押さないと Read メソッドによって文字は返されません。要求した数だけの文字がメソッドから返されます。引き続き、Read、ReadLine、または ReadAll の各メソッドを呼び出すと、それ以降の文字が返されます。

使用例

次のコードは、Read メソッドを使ってキーボードの入力から 1 文字を取得し、コンソールに表示する例です。

[VBScript]
Dim Input
Input = ""

Do While Not WScript.StdIn.AtEndOfLine
   Input = Input & WScript.StdIn.Read(1)
Loop
WScript.Echo Input
[JScript]
var input = "";
while (!WScript.StdIn.AtEndOfLine)
{
   input += WScript.StdIn.Read(1);
}
WScript.Echo(input);

参 照

StdIn プロパティ (WScript)


ReadAll メソッド (Windows Script Host)

Windows Script Host

ReadAll メソッド

入力ストリーム全体を読み込み、結果の文字列を返します。

object.ReadAll

引数

object
StdIn テキスト ストリーム オブジェクトです。

解説

ReadAll は文字列を返します。StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe でスクリプトを実行すると、"無効なハンドルです。" というエラーが発生します。

使用例

次のコードは、ReadAll の使用例です。

[VBScript]
Dim Input
Input = ""

Do While Not WScript.StdIn.AtEndOfStream
   Input = Input & WScript.StdIn.ReadAll
Loop
WScript.Echo Input
[JScript]
var input = "";
while (!WScript.StdIn.AtEndOfStream)
{
   input += WScript.StdIn.ReadAll();
}
WScript.Echo(input);

参 照

StdIn プロパティ | FileSystemObject オブジェクト


ReadLine メソッド (Windows Script Host)

Windows Script Host

ReadLine メソッド

入力ストリームから行全体を読み込み、結果の文字列を返します。

object.ReadLine

引数

object
StdIn テキスト ストリーム オブジェクトです。

解説

ReadLine は文字列を返します。StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe ホスト実行可能ファイルで実行した場合にのみ動作します。WScript.exe でスクリプトを実行するとエラーが発生します。1 行とは、改行文字で終わる一連の文字列のことです。

メモ このメソッドは改行文字を抽出しますが、返す文字列には含めません。

使用例

次のコードは、ReadLine メソッドの使用例です。

[VBScript]
Dim StdIn, StdOut
Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut

Do While Not StdIn.AtEndOfStream
     str = StdIn.ReadLine
     StdOut.WriteLine "Line " & (StdIn.Line - 1) & ": " & str
Loop
[JScript]
var stdin = WScript.StdIn;
var stdout = WScript.StdOut;

while (!stdin.AtEndOfStream)
{
     var str = stdin.ReadLine();
     stdout.WriteLine("Line " + (stdin.Line - 1) + ": " + str);
}

参 照

StdIn プロパティ | FileSystemObject オブジェクト


RegDelete メソッド

レジストリから指定されたキーまたは値を削除します。

object.RegDelete(strName)

引数

object
WshShell オブジェクトです。
strName
レジストリ内で削除するキーまたは値の名前を示す文字列値です。

解説

キー名を指定する場合は strName の最後にバックスラッシュを付け、値の名前を指定する場合はバックスラッシュを付けません。完全修飾のキー名または値名の先頭にはルート キーが付加されます。RegDelete メソッドでは省略形のルート キー名を使用できます。次の表は、使用できる 5 つのルート キーを一覧したものです。

ルート キー名 | 短縮形
HKEY_CURRENT_USER | HKCU
HKEY_LOCAL_MACHINE | HKLM
HKEY_CLASSES_ROOT | HKCR
HKEY_USERS | HKEY_USERS
HKEY_CURRENT_CONFIG | HKEY_CURRENT_CONFIG

使用例

次のコードは、1 つのキーと 2 つの値を作成し、それらを読み込み、最後に削除します。

[VBScript]
Dim WshShell, bKey
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY"
WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\MindReader", "Goocher!", "REG_SZ"

bKey = WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\")
WScript.Echo WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\MindReader")

WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\MindReader"
WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\"
WshShell.RegDelete "HKCU\Software\ACME\"
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");

WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\", 1, "REG_BINARY");
WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader", "Goocher!", "REG_SZ");

var bKey =    WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\");
WScript.Echo (WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader"));

WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader");
WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\");
WshShell.RegDelete ("HKCU\\Software\\ACME\\");

参 照

WshShell オブジェクト | RegRead メソッド | RegWrite メソッド


RegRead メソッド

レジストリ内のキー名または値名の値を返します。

object.RegRead(strName)

引数

object
WshShell オブジェクトです。
strName
読み取るキーまたは値の名前です。

解説

RegRead メソッドは次の 5 種類の値を返します。

型 | 説明 | 形式
REG_SZ | 文字列です。 | 文字列
REG_DWORD | 数値です。 | 整数
REG_BINARY | 2 進数の値です。 | VBArray (整数)
REG_EXPAND_SZ | 展開可能な文字列です。 (例 : "%windir%\\calc.exe") | 文字列
REG_MULTI_SZ | 文字列の配列です。 | VBArray (文字列)

キー名を指定する場合は strName の最後にバックスラッシュを付けます。値名を指定する場合にバックスラッシュを付けないでください。値エントリは名前、データ型、値の 3 つの部分で構成されます。値名ではなくキー名を指定した場合、RegRead はキーの既定値を返します。キーの既定値を読み込むには、キー自身の名前を指定します。完全修飾のキー名または値名の先頭にはルート キーが付加されます。RegRead メソッドでは省略形のルート キー名を使用できます。次の表は、使用できる 5 つのルート キーを一覧したものです。

ルート キー名 | 短縮形
HKEY_CURRENT_USER | HKCU
HKEY_LOCAL_MACHINE | HKLM
HKEY_CLASSES_ROOT | HKCR
HKEY_USERS | HKEY_USERS
HKEY_CURRENT_CONFIG | HKEY_CURRENT_CONFIG

使用例

次のコードは、1 つのキーと 2 つの値を作成し、それらを読み込み、最後に削除します。

[VBScript]
Dim WshShell, bKey
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY"
WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\MindReader", "Goocher!", "REG_SZ"

bKey = WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\")
WScript.Echo WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\MindReader")

WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\MindReader"
WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\"
WshShell.RegDelete "HKCU\Software\ACME\"
[JScript]
var WshShell = WScript.CreateObject ("WScript.Shell");

WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\", 1, "REG_BINARY");
WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader", "Goocher!", "REG_SZ");

var bKey =    WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\");
WScript.Echo (WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader"));

WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader");
WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\");
WshShell.RegDelete ("HKCU\\Software\\ACME\\");

参 照

WshShell オブジェクト | RegDelete メソッド | RegWrite メソッド


RegWrite メソッド

新しいキーの作成、新しい値名の既存キーへの追加 (および値の設定)、既存の値名の値変更などを行います。

object.RegWrite(strName, anyValue [,strType])

引数

object
WshShell オブジェクトです。
strName
作成、追加、変更するキー名、値名、または値を示す文字列値です。
anyValue
作成するキーの名前、既存のキーに追加する値の名前、または既存の値名に設定する値です。
strType
省略可能です。レジストリに保存する値のデータ型を指定します。

解説

キー名を指定する場合は strName の最後にバックスラッシュを付けます。値名を指定する場合にバックスラッシュを付けないでください。RegWrite メソッドはパラメータ anyValue を文字列または整数に自動変換します。strType の値によってデータ型 (文字列 (string) または整数 (integer)) が決まります。次の表は、strType のオプションを一覧したものです。

変換後のデータ型 | strType
文字列 | REG_SZ
文字列 | REG_EXPAND_SZ
整数 | REG_DWORD
文字列 | REG_BINARY
メモ REG_MULTI_SZ 型は RegWrite メソッドではサポートされていません。
メモ RegWrite は最大で 1 つの DWORD を REG_BINARY 値に書き込みます。DWORD より大きい値はこのメソッドではサポートされていません。

完全修飾のキー名または値名の先頭にはルート キーが付加されます。RegWrite メソッドでは省略形のルート キー名を使用できます。次の表は、5 つのルート キーを一覧したものです。

ルート キー名 | 短縮形
HKEY_CURRENT_USER | HKCU
HKEY_LOCAL_MACHINE | HKLM
HKEY_CLASSES_ROOT | HKCR
HKEY_USERS | HKEY_USERS
HKEY_CURRENT_CONFIG | HKEY_CURRENT_CONFIG

次の表は、strType に指定できる 4 つのデータ型を一覧したものです。

型 | 説明 | 形式
REG_SZ | 文字列です。 | 文字列
REG_DWORD | 数値です。 | 整数
REG_BINARY | 2 進数の値です。 | 整数
REG_EXPAND_SZ | 展開可能な文字列です。 (例 : "%windir%\\calc.exe") | 文字列

使用例

次のコードは、1 つのキーと 2 つの値を作成し、それらを読み込み、最後に削除します。

[VBScript]
Dim WshShell, bKey
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY"
WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\MindReader", "Goocher!", "REG_SZ"

bKey = WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\")
WScript.Echo WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\MindReader")

WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\MindReader"
WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\"
WshShell.RegDelete "HKCU\Software\ACME\"
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");

WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\", 1, "REG_BINARY");
WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader", "Goocher!", "REG_SZ");

var bKey =    WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\");
WScript.Echo (WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader"));

WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader");
WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\");
WshShell.RegDelete ("HKCU\\Software\\ACME\\");

参 照

WshShell オブジェクト | RegDelete メソッド | RegRead メソッド


Remove メソッド (Windows Script Host)

Windows Script Host

Remove メソッド

指定された既存の環境変数を削除します。

object.Remove(strName)

引数

object
WshEnvironment オブジェクトです。
strName
削除する環境変数の名前です。

解説

Remove メソッドは、環境変数を PROCESS、USER, SYSTEM、VOLATILE の各環境から削除します。Remove メソッドを使って削除される環境変数は、永久的に削除されるわけではありません。現在のセッションから削除されるだけです。

使用例

次のコードは、Process 環境変数 TestVar を削除する例です。

[VBScript]
Dim WshShell, WshEnv
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("PROCESS")
WshEnv("TestVar") = "Windows Script Host"
WScript.Echo WshShell.ExpandEnvironmentStrings("The value of the test variable is: '%TestVar%'")
WshEnv.Remove "TestVar"
WScript.Echo WshShell.ExpandEnvironmentStrings("The value of the test variable is: '%TestVar%'")
[JScript]
var WshShell = WScript.CreateObject("WScript.Shell");
var WshEnv = WshShell.Environment("PROCESS");
WshEnv("TestVar") = "Windows Script Host";
WScript.Echo(WshShell.ExpandEnvironmentStrings("The value of the test variable is: '%TestVar%'"));
WshEnv.Remove("TestVar");
WScript.Echo(WshShell.ExpandEnvironmentStrings("The value of the test variable is: '%TestVar%'"));

参 照

WshEnvironment オブジェクト | Environment プロパティ


RemoveNetworkDrive メソッド

コンピュータ システムの共有ネットワーク ドライブ接続を解除します。

object.RemoveNetworkDrive(strName, [bForce], [bUpdateProfile])

引数

object
WshNetwork オブジェクトです。
strName
接続を解除する割り当てドライブを示す文字列値です。strName パラメータには、ドライブの割り当て方法によって、ローカル名かリモート名を指定します。
bForce
省略可能です。ドライブの割り当てを強制的に解除するかどうかを示すブール値です。bForce に値 TRUE を指定すると、リソースが使用されているかどうかに関係なく、接続が解除されます。
bUpdateProfile
省略可能です。ユーザー プロファイルから割り当てを削除するかどうかを示す文字列値です。bUpdateProfile に値 TRUE を指定すると、ユーザー プロファイルから割り当てが削除されます。bUpdateProfile の既定値は FALSE です。

解説

ドライブにローカル名 (ドライブ文字) とリモート名 (UNC 名) の割り当てがある場合は、strName にローカル名を指定します。ネットワークのパスにローカル名 (ドライブ文字) の割り当てがない場合は、strName にリモート名を指定します。

使用例

次のコードは、論理ドライブ "E" の接続を解除する例です。

[VBScript]
Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.RemoveNetworkDrive "E:"
[JScript]
var WshNetwork = WScript.CreateObject("WScript.Network");
WshNetwork.RemoveNetworkDrive ("E:");

参 照

WshNetwork オブジェクト | EnumNetworkDrives メソッド | MapNetworkDrive メソッド


RemovePrinterConnection メソッド

コンピュータ システムの共有ネットワーク プリンタ接続を解除します。

object.RemovePrinterConnection(strName, [bForce], [bUpdateProfile])

引数

object
WshNetwork オブジェクトです。
strName
プリンタ識別名を示す文字列値です。 UNC 名 (\\xxx\yyy の形式) またはローカル名 (たとえば LPT1) を指定できます。
bForce
省略可能です。プリンタの割り当てを強制的に解除するかどうかを示すブール値です。bForce に値 TRUE を指定すると (既定値は FALSE)、ユーザーが接続されているかどうかに関係なく、接続が解除されます。
bUpdateProfile
省略可能です。ブール値です。値 TRUE を指定すると (既定値は FALSE)、ユーザー プロファイルに変更内容が保存されます。

解説

RemovePrinterConnection メソッドは、Windows ベースのプリンタ接続と MS-DOS ベースのプリンタ接続の両方を解除します。プリンタ接続時にメソッド AddPrinterConnection を使用した場合は、strName にプリンタのローカル名を指定します。プリンタ接続時に AddWindowsPrinterConnection メソッドを使用したか、([プリンタの追加] ウィザードを使用して) 手動で接続した場合は、strName にプリンタの UNC 名を指定します。

使用例

次のコードは、ネットワーク プリンタの接続を解除する例です。

[VBScript]
Set WshNetwork = WScript.CreateObject("WScript.Network")
PrinterPath = "\\printserv\DefaultPrinter"
WshNetwork.RemovePrinterConnection PrinterPath, true, true
[JScript]
var WshNetwork = WScript.CreateObject("WScript.Network");
var PrinterPath = "\\\\PRN-CORP1\\B41-4523-A";
WshNetwork.RemovePrinterConnection(PrinterPath, true, true);

参 照

WshNetwork オブジェクト | AddPrinterConnection メソッド | AddWindowsPrinterConnection メソッド | EnumPrinterConnections メソッド | SetDefaultPrinter メソッド


Run メソッド

新しいプロセス内でプログラムを実行します。

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

引数

object
WshShell オブジェクトです。
strCommand
実行するコマンド ラインを示す文字列値です。この引数には、実行可能ファイルに渡すべきパラメータをすべて含める必要があります。
intWindowStyle
省略可能です。プログラムのウィンドウの外観を示す整数値です。すべてのプログラムがこの情報を使用するわけではないので注意してください。
bWaitOnReturn
省略可能です。スクリプト内の次のステートメントに進まずにプログラムの実行が終了するまでスクリプトを待機させるかどうかを示すブール値です。bWaitOnReturn に TRUE を指定すると、プログラムの実行が終了するまでスクリプトの実行は中断され、Run メソッドはアプリケーションから返される任意のエラー コードを返します。bWaitOnReturn に FALSE を指定すると、プログラムが開始すると Run メソッドは即座に復帰して自動的に 0 を返します (これをエラー コードとして解釈しないでください)。

解説

Run メソッドは整数を返します。Run メソッドは新しい Windows プロセス内でプログラムの実行を開始します。スクリプト内の次の処理に進まずにプログラムの実行が終了するまでスクリプトを待機させることができます。これにより、スクリプトとプログラムを同期させて実行できます。引数 strCommand 内の環境変数は自動的に展開されます。ファイルの種類が対応するプログラムに正しく登録されている場合、その種類のファイルを指定して Run メソッドを呼び出すとプログラムが実行されます。たとえば、Word がコンピュータ システム上にインストールされている場合、*.doc ファイルを指定して Run を呼び出すと Word が起動し、指定したドキュメントがロードされます。次の表は、intWindowStyle に設定できる値を一覧したものです。

IntWindowStyle | 内容
0 | ウィンドウを非表示にし、別のウィンドウをアクティブにします。
1 | ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。アプリケーションでウィンドウを最初に表示するときには、このフラグを指定してください。
2 | ウィンドウをアクティブにし、最小化ウィンドウとして表示します。
3 | ウィンドウをアクティブにし、最大化ウィンドウとして表示します。
4 | ウィンドウを最新のサイズと位置で表示します。アクティブなウィンドウは切り替わりません。
5 | ウィンドウをアクティブにし、現在のサイズと位置で表示します。
6 | 指定したウィンドウを最小化し、Z オーダー上で次に上位となるウィンドウをアクティブにします。
7 | ウィンドウを最小化ウィンドウとして表示します。アクティブなウィンドウは切り替わりません。
8 | ウィンドウを現在の状態で表示します。アクティブなウィンドウは切り替わりません。
9 | ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻ります。アプリケーションで最小化ウィンドウを復元するときには、このフラグを指定してください。
10 | アプリケーションを起動したプログラムの状態に基づいて、表示状態を設定します。

使用例

次のコードは、Microsoft のメモ帳を実行して実行中のスクリプトを開く例です。

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%windir%\notepad " & WScript.ScriptFullName

次の VBScript コードも上記と同じ処理を実行する例ですが、ウィンドウの種類を指定し、ユーザーがメモ帳を終了するまで待機し、終了時にメモ帳から返されるエラー コードを保存する点が異なります。

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("notepad " & WScript.ScriptFullName, 1, true)

使用例 2

次の VBScript コードは、コマンド ウィンドウを開き、パスを C:\ に変更し、DIR コマンドを実行する例です。

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /K CD C:\ & Dir"
Set oShell = Nothing

参 照

WshShell オブジェクト


Save メソッド

ショートカット オブジェクトを保存します。

object.Save

引数

object
WshShortcut オブジェクトまたは WshUrlShortcut オブジェクトです。

解説

CreateShortcut メソッドを使ってショートカット オブジェクトを作成しプロパティを設定したら、Save メソッドを使ってそのショートカットをディスクに保存する必要があります。Save メソッドは、ショートカット オブジェクトの FullName プロパティの情報に基づいて、ショートカットを保存する場所を決定します。作成できるのはシステム オブジェクトへのショートカットに限定されます。これにはファイル、ディレクトリ、およびドライブが含まれます (プリンタのリンクやスケジュールされたタスクは含まれません)。

使用例

次のコードは、1 つの .wsf ファイルを使用して、異なるスクリプト言語 (VBScript および JScript) で記述された 2 つのジョブを実行する例です。ジョブの機能はどちらも同じで、実行中のスクリプトへのショートカットと www.microsoft.com への URL ショートカットを作成します。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         strDesktop = WshShell.SpecialFolders("Desktop")
         set oShellLink = WshShell.CreateShortcut(strDesktop & "\ショートカット スクリプト.lnk")
         oShellLink.TargetPath = WScript.ScriptFullName
         oShellLink.WindowStyle = 1
         oShellLink.Hotkey = "CTRL+SHIFT+F"
         oShellLink.IconLocation = "notepad.exe, 0"
         oShellLink.Description = "ショートカット スクリプト"
         oShellLink.WorkingDirectory = strDesktop
         oShellLink.Save
         set oUrlLink = WshShell.CreateShortcut(strDesktop & "\マイクロソフトの Web サイト.url")
         oUrlLink.TargetPath = "http://www.microsoft.com"
         oUrlLink.Save
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");
         var oShellLink = WshShell.CreateShortcut(strDesktop + "\\ショートカット スクリプト.lnk");
         oShellLink.TargetPath = WScript.ScriptFullName;
         oShellLink.WindowStyle = 1;
         oShellLink.Hotkey = "CTRL+SHIFT+F";
         oShellLink.IconLocation = "notepad.exe, 0";
         oShellLink.Description = "ショートカット スクリプト";
         oShellLink.WorkingDirectory = strDesktop;
         oShellLink.Save();
         var oUrlLink = WshShell.CreateShortcut(strDesktop + "\\マイクロソフト Web サイト.url");
         oUrlLink.TargetPath = "http://www.microsoft.com";
         oUrlLink.Save();
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WshShortcut オブジェクト | WshUrlShortcut オブジェクト | FullName プロパティ | TargetPath プロパティ | WindowStyle プロパティ | Hotkey プロパティ | IconLocation プロパティ | Description プロパティ | WorkingDirectory プロパティ


SendKeys メソッド

キーボードから入力したときのように、1 つ以上のキー ストロークをアクティブなウィンドウに送ります。

object.SendKeys(string)

引数

object
WshShell オブジェクトです。
string
送信するキーストロークを文字列式で指定します。

解説

SendKeys メソッドは、オートメーション インターフェイスを持たないアプリケーションにキーストロークを送信する場合に使用します。キーボードの文字のほとんどは単一のキーで表現されます。キーボードの文字の中には、Ctrl+Shift+Home などのように、いくつかのキーの組み合わせで表現されるものもあります。キーボードの文字を 1 つ送信するには、その文字自身を string 引数に指定します。たとえば、X キーを送信するには、string 引数に文字列 "X" を指定します。

メモ 空白を送信するには文字列 " " を指定します。

SendKeys を使って複数のキーを一度に送信できます。これを行うには、各キーを順に並べます。たとえば、A キー、B キー、C キーを順に押すには、"ABC" と指定します。SendKeys メソッドではいくつかの文字が (表示される値のまま使用されるのではなく) ほかの文字のモディファイアとして使用されます。この特殊文字セットには、かっこ、角かっこ、中かっこ、および ":" があります。

  • プラス記号 "+"
  • カレット "^"
  • パーセント記号 "%"
  • ティルダ "~"

上記の文字を送信するには中かっこ "{}" で囲みます。たとえば、プラス記号を送信するには "{+}" を指定します。角かっこ "[ ]" は SendKeys では特殊な意味を持ちませんが、DDE (Dynamic Data Exchange) などのように角かっこが特殊な意味を持つアプリケーションにも対応できるように中かっこで囲んでください。中かっこを指定するには "{{}" と "{}}" を使用します。

  • 角かっこ文字の左側を送信するには "{[}" を、右側を送信するには "{]}" を、それぞれ指定します。
  • 中かっこ文字の左側を送信するには "{{}" を、右側を送信するには "{}}" を、それぞれ指定します。

キーの中には、Enter キー や Tab キーなどのように文字を生成しないものや、BackSpace キーや Break キーなどのようにアクションを表現するものもあります。これらのキーを送信するには、次の表に示すコードを使用します。

キー | コード
BACKSPACE | {BACKSPACE}、{BS}、または {BKSP}
BREAK | {BREAK}
CAPS LOCK | {CAPSLOCK}
DEL or DELETE | {DELETE} または {DEL}
DOWN ARROW | {DOWN}
END | {END}
ENTER | {ENTER} または ~
ESC | {ESC}
HELP | {HELP}
HOME | {HOME}
INS or INSERT | {INSERT} または {INS}
LEFT ARROW | {LEFT}
NUM LOCK | {NUMLOCK}
PAGE DOWN | {PGDN}
PAGE UP | {PGUP}
PRINT SCREEN | {PRTSC}
RIGHT ARROW | {RIGHT}
SCROLL LOCK | {SCROLLLOCK}
TAB | {TAB}
UP ARROW | {UP}
F1 | {F1}
F2 | {F2}
F3 | {F3}
F4 | {F4}
F5 | {F5}
F6 | {F6}
F7 | {F7}
F8 | {F8}
F9 | {F9}
F10 | {F10}
F11 | {F11}
F12 | {F12}
F13 | {F13}
F14 | {F14}
F15 | {F15}
F16 | {F16}

通常のキーと Shift キー、Ctrl キー、または Alt キーとの組み合わせを送信するには、キーの組み合わせを表現する文字列を引数に指定します。これを行うには、通常のキーの前に次の特殊文字を 1 つまたは複数個付加します。

キー | コード
SHIFT | +
CTRL | ^
ALT | %
メモ この場合、これらの特殊文字は中かっこで囲みません。

Shift キー、Ctrl キー、および Alt キーの任意の組み合わせを押したままほかの複数のキーを押すには、修飾されるキーをかっこで囲みます。次に例を示します。

  • Shift キーを押したまま、E キー、C キーを順に押すには、"+(EC)" と指定します。
  • Shift キーを押したまま E キーを押した後、Shift キーを離して C キーを押すには、"+EC" と指定します。

SendKeys メソッドでは、1 行で 1 つのキーを複数回押すキーストロークのパターンを送信できます。これを行うには、キーの後に繰り返し回数を指定する文字列を使用します。キーの繰り返しは、{キー 回数} という形式で指定します。たとえば、X キーを 10 回押すには、"{X 10}" と指定します。キーと回数の間には空白を 1 つ入れます。

メモ キーストロークのパターンを送信できるのは、単一のキーを複数回押す場合だけです。たとえば、X キーを複数回繰り返すことはできますが、Ctrl+X の組み合わせを複数回繰り返すことはできません。
メモ アプリケーションに PrintScreen キー ("{PRTSC}") を送ることはできません。

使用例

次のコードは、1 つの .wsf ファイルを使用して、異なるスクリプト言語 (VBScript および JScript) で記述された 2 つのジョブを実行する例です。ジョブの機能はどちらも同じで、Windows の電卓を起動して簡単な計算を実行するキーストロークを送ります。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         WshShell.Run "calc"
         WScript.Sleep 100
         WshShell.AppActivate "Calculator"
         WScript.Sleep 100
         WshShell.SendKeys "1{+}"
         WScript.Sleep 500
         WshShell.SendKeys "2"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 500
         WshShell.SendKeys "*3"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 2500
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         WshShell.Run("calc");
         WScript.Sleep(100);
         WshShell.AppActivate("Calculator");
         WScript.Sleep(100);
         WshShell.SendKeys ("1{+}");
         WScript.Sleep(500);
         WshShell.SendKeys("2");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(500);
         WshShell.SendKeys("*3");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(2500);
      </script>
   </job>
</package>

参 照

WshShell オブジェクト | Run メソッド


SetDefaultPrinter メソッド

指定されたリモート プリンタを既定のプリンタとして設定します。

object.SetDefaultPrinter(strPrinterName)

引数

object
WshNetwork オブジェクトです。
strPrinterName
リモート プリンタの UNC 名を示す文字列値です。

解説

MS-DOS ベースのプリンタ接続を使用すると SetDefaultPrinter メソッドは失敗します。SetDefaultPrinter メソッドを使って現在の既定のプリンタを決定することはできません。

使用例

次のコードは、AddWindowsPrinterConnection メソッドを使ってネットワーク プリンタを接続し、それを既定のプリンタとして設定する例です。

[VBScript]
Set WshNetwork = WScript.CreateObject("WScript.Network")
PrinterPath = "\\research\library1"
WshNetwork.AddWindowsPrinterConnection PrinterPath
WshNetwork.SetDefaultPrinter PrinterPath
[JScript]
var WshNetwork = WScript.CreateObject("WScript.Network");
var PrinterPath = "\\\\research\\library1";
WshNetwork.AddWindowsPrinterConnection(PrinterPath);
WshNetwork.SetDefaultPrinter(PrinterPath);

参 照

WshNetwork オブジェクト | AddPrinterConnection メソッド | AddWindowsPrinterConnection メソッド | EnumPrinterConnections メソッド | RemovePrinterConnection メソッド


ShowUsage メソッド

スクリプトの使用方法に関する情報を表示してスクリプト自身の説明をします。

object.ShowUsage

引数

object
WScript オブジェクトです。

解説

ShowUsage メソッドを呼び出すと、"使用法" と呼ばれるヘルプ画面が表示され、スクリプトのコマンド ライン オプションの詳細情報が表示されます。この情報は、*.WSF ファイルのランタイム セクションに基づいて作成されます。<runtime> タグと </runtime> タグの間に記述されたすべての情報が組み合わされて "使用法ステートメント" と呼ばれるものが作成されます。この使用法ステートメントを使って、ユーザーにスクリプトの使い方を伝えることができます。

メモ 使用法は、/? スイッチを使って表示することもできます。

使用例

次のサンプル コードは、*.WSF スクリプト ファイル内に使用法の情報をセットアップする例です。

<job>
    <runtime>
        <description>This script reboots a server</description>
        <named
            name = "Server"
            helpstring = "Server to run the script on"
            type = "string"
            required = "true"
        />
        <example>Example: reboot.wsf /server:scripting</example>
    </runtime>
<script language="VBScript">

If WScript.Arguments.Count <> 1 Then
   WScript.Arguments.ShowUsage
   WScript.Quit
End If

</script>
</job>

JScript の対応するコード ブロックは次のとおりです。

if (WScript.Arguments.length != 1)
{
   WScript.Arguments.ShowUsage();
   WScript.Quit();
}

このスクリプト内から ShowUsage メソッドを呼び出すと、次の出力結果が得られます。

This script reboots a server
Usage: reboot.wsf /server:value

Options:
server : Server to run the script on

Example:
reboot.wsf /server:scripting

参 照

WScript オブジェクト


Sign メソッド

文字列内に格納されているスクリプトに署名します。

Object.Sign (FileExtension, Text, Certificate, Store)

引数

object
Scripting.Signer オブジェクトです。
FileExtension
スクリプトの拡張子 (.vbs、.js、または .wsf) を指定する文字列です。オペレーティング システムは、この指定に基づいて、確認対象のスクリプト ファイルの種類を判別します。
Text
署名するスクリプトが格納されている文字列です。
Certificate
作成者の証明書名を指定する文字列です。
Store
省略可能です。証明書ストアの名前を指定する文字列です。秘密鍵が含まれている証明書、つまり、コードへの署名に使用できる証明書は、通常、"my" という名前の証明書ストアに格納されます。既定値は、"my" です。

解説

Sign メソッドでは、文字列に格納されたスクリプトにデジタル署名を付加できます。デジタル署名を作成するには、呼び出し元が有効な証明書を持っている必要があります。

使用例

Dim Signer, UnsignedText, SignedText
Set Signer = CreateObject("Scripting.Signer")
UnsignedText = _
     "Dim X " & vbCrLf & _
     "X = 123" & vbCrLf & _
     "WScript.Echo X" & vbCrLf
SignedText = Signer.Sign(".VBS", UnsignedText, "証明書名をここに入力します。")

参 照

Scripting.Signer オブジェクト | SignFile メソッド | Verify メソッド | VerifyFile メソッド | スクリプトに署名する


SignFile メソッド

デジタル署名を使用してスクリプトに署名します。

Object.SignFile (FileName, Certificate, Store)

引数

object
Scripting.Signer オブジェクトです。
FileName
スクリプト ファイルの名前が格納されている文字列です。
Certificate
作成者の証明書名を指定する文字列です。
Store
省略可能です。証明書ストアの名前を指定する文字列です。秘密鍵が含まれている証明書、つまり、コードへの署名に使用できる証明書は、通常、"my" という名前の証明書ストアに格納されます。既定値は、"my" です。

解説

デジタル署名でスクリプトに署名するには、作成者が有効な証明書を持っている必要があります。

使用例

次の例では、コマンド ライン引数と共に、署名をチェックしています。

<job>
<runtime>
<named name="file" helpstring="the file to sign" required="true" type="string"/>
<named name="cert" helpstring="the name of the signing certificate" required="true" type="string"/>
<named name="store" helpstring="the name of the certificate store" required="false" type="string"/>
</runtime>
<script language="vbscript">
Dim Signer, File, Cert, Store
If Not (WScript.Arguments.Named.Exists("cert") And WScript.Arguments.Named.Exists("file")) Then
     WScript.Arguments.ShowUsage
     WScript.Quit
End If
Set Signer = CreateObject("Scripting.Signer")
File  = WScript.Arguments.Named("file")
Cert  = WScript.Arguments.Named("cert")
If WScript.Arguments.Named.Exists("store") Then
     Store = WScript.Arguments.Named("store")
Else
     Store = "my"
End If
Signer.SignFile File, Cert, Store
</script>
</job>

参 照

Scripting.Signer オブジェクト | Sign メソッド | Verify メソッド | VerifyFile メソッド | スクリプトに署名する


Skip メソッド (Windows Script Host)

Windows Script Host

Skip メソッド

入力テキスト ストリームの読み込み中に、指定された文字数をスキップします。

object.Skip(characters)

引数

object
StdIn テキスト ストリーム オブジェクトです。
characters
スキップする文字数を示す整数値です。

解説

StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe でスクリプトを実行すると、"無効なハンドルです。" というエラーが発生します。位置ポインタは、引数 characters に指定された文字数 (バイト) だけ前方向に移動します。Skip メソッドを使ってファイル内の後ろ方向にスキップすることはできません (負の文字数の値はサポートされていません)。Skip メソッドは読み込みモードで開いた場合にのみ使用できます (出力ストリームへの書き込み中は指定した文字数をスキップできません)。

使用例

次のコードは、Skip メソッドを使ってテキスト ストリーム内の最初の文字をスキップし、キーボードの入力から 1 行を読み込み、StdOut テキスト ストリームに書き込む例です。

[VBScript]
WScript.StdIn.Skip 1
Input = WScript.StdIn.ReadLine
WScript.StdOut.Write Input
[JScript]
WScript.StdIn.Skip(1);
Input = WScript.StdIn.ReadLine();
WScript.StdOut.Write(Input);

参 照

StdIn プロパティ


SkipLine メソッド (Windows Script Host)

Windows Script Host

SkipLine メソッド

入力 テキスト ストリームの読み込み中に、次の 1 行をスキップします。

object.SkipLine

引数

object
StdIn テキスト ストリーム オブジェクトです。

解説

1 行とは、改行文字で終わる一連の文字列のことです。StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe でスクリプトを実行すると、"無効なハンドルです。" というエラーが発生します。位置ポインタは、改行文字の直後まで前方向に移動します。SkipLine メソッドを使ってファイル内の後ろ方向にスキップすることはできません (負の文字数の値はサポートされていません)。SkipLine メソッドは読み込みモードで開いた場合にのみ使用できます (出力ストリームへの書き込み中、行をスキップすることはできません)。

使用例

次のコードは、SkipLine メソッドの使用例です。

[VBScript]
Dim StdIn, StdOut, Str1, Str2

Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut

Str1 = ""
Str2 = ""

For i = 0 to 4
   StdIn.SkipLine
Next

i = 0
Do While Not StdIn.AtEndOfStream
     If i >= 2 Then
          StdOut.WriteLine Str1
     End If
     i = i + 1
     Str1 = Str2
     Str2 = StdIn.ReadLine
Loop
[JScript]
var stdin = WScript.StdIn;
var stdout = WScript.StdOut;
var str1, str2 = "";
var i;
for (i = 0; i < 5; i++)
     stdin.SkipLine();
i = 0;
while (!stdin.AtEndOfStream)
{
     if (i++ >= 2)
     {
          stdout.WriteLine(str1);
     }
     str1 = str2;
     str2 = stdin.ReadLine();
}

参 照

StdIn プロパティ


Sleep メソッド

スクリプトのプロセスをミリ秒で指定された長さだけ非アクティブにした後、実行を再開します。

object.Sleep(intTime)

引数

object
WScript オブジェクトです。
intTime
スクリプトのプロセスを非アクティブにする時間を、ミリ秒単位で指定します。

解説

スクリプトを実行していたスレッドが中断され、使用していた CPU が解放されます。指定した時間が経過すると実行が再開されます。非同期処理または複数の処理を実行している場合やイベントによって起動されるコードがスクリプトに含まれている場合には、Sleep メソッドを使用すると便利です。イベントによって起動されるには、スクリプトは継続的にアクティブになっている必要があります (実行が終了してしまったスクリプトはイベントを検出できません)。スクリプトで処理するイベントは、非アクティブになっている間も処理されます。

メモ Sleep メソッドの引数に 0 または –1 を指定しても、スクリプトが不定時間中断されることはありません。

使用例

次のコードは、1 つの .wsf ファイルを使用して、異なるスクリプト言語 (VBScript および JScript) で記述された 2 つのジョブを実行する例です。ジョブの機能はどちらも同じで、Windows の電卓を起動して簡単な計算を実行するキーストロークを送ります。

<package>
   <job id="vbs">
      <script language="VBScript">
         set WshShell = WScript.CreateObject("WScript.Shell")
         WshShell.Run "calc"
         WScript.Sleep 100
         WshShell.AppActivate "Calculator"
         WScript.Sleep 100
         WshShell.SendKeys "1{+}"
         WScript.Sleep 500
         WshShell.SendKeys "2"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 500
         WshShell.SendKeys "*3"
         WScript.Sleep 500
         WshShell.SendKeys "~"
         WScript.Sleep 2500
      </script>
   </job>

   <job id="js">
      <script language="JScript">
         var WshShell = WScript.CreateObject("WScript.Shell");
         WshShell.Run("calc");
         WScript.Sleep(100);
         WshShell.AppActivate("Calculator");
         WScript.Sleep(100);
         WshShell.SendKeys("1{+}");
         WScript.Sleep(500);
         WshShell.SendKeys("2");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(500);
         WshShell.SendKeys("*3");
         WScript.Sleep(500);
         WshShell.SendKeys("~");
         WScript.Sleep(2500);
      </script>
   </job>
</package>

参 照

スクリプトを実行する | WScript オブジェクト


Terminate メソッド (WshScriptExec)

Exec メソッドによって開始されたプロセスを終了するようにスクリプト エンジンに指示します。

object.Terminate

引数

object
WshScriptExec オブジェクト

解説

Terminate メソッドは値を返しません。Terminate メソッドは最後の手段としてのみ使用します。これは、アプリケーションによっては適切にクリーンアップできない場合があるためです。通常は、プロセスを途中で中断せず、プロセス自身で実行を終了させるようにします。Terminate メソッドは WM_CLOSE メッセージを使ってプロセスを終了しようとします。これで終了できない場合は、通常のシャットダウン手順を実行せずに、プロセスを強制終了します。

使用例

次の JScript サンプル コードは、Terminate メソッドを使ってスクリプトの実行を終了する例です。

var aScript = WScript.Exec("%comspec% /c myScript.js");
aScript.Terminate();

参 照

WshScriptExec オブジェクト


Verify メソッド

文字列として受信したデジタル署名を確認します。

object.Verify (FileExtension, Text, ShowUI)

引数

object
Scripting.Signer オブジェクトです。
FileExtension
スクリプトの拡張子 (.vbs、.js、または .wsf) を指定する文字列です。オペレーティング システムは、この指定に基づいて、確認対象のスクリプト ファイルの種類を判別します。
Text
確認するテキストです。
ShowUI
ブール型の値です。ShowUI 引数が False の場合、Scripting.Signer オブジェクトは、ユーザーの確認を促すダイアログ ボックスを表示せずに、署名を提供したソースが信頼のおけるソースかどうかを判別します。True の場合、Scripting.Signer オブジェクトは、信頼のおけるソースであると確認するに十分な情報がなければ、必要に応じてユーザーの確認を促すダイアログ ボックスを表示します。
メモ 一部のオペレーティング システムでは、フラグがオンになっていて、ファイルが信頼のおけるものであっても、"常に信頼する" オプションをオンにしていなければ、オペレーティング システム レベルでダイアログ ボックスが表示されることがあります。

解説

Verify メソッドを使用し、文字列に格納されたデジタル署名付きスクリプトを確認できます。

使用例

次の例では、Verify メソッドを使用して、UnsignedText 変数に格納されているスクリプトが信頼のおけるものかどうかを判別しています。この例では、デジタル署名がないので、信頼するかどうかをユーザーに確認させます。

Dim Signer, UnsignedText, Trusted
Set Signer = CreateObject("Scripting.Signer")
UnsignedText = _
     "Dim X " & vbCrLf & _
     "X = 123" & vbCrLf & _
     "WScript.Echo X" & vbCrLf
Trusted = Signer.Verify(".VBS", UnsignedText, True)

参 照

Scripting.Signer オブジェクト | VerifyFile メソッド | Sign メソッド | SignFile メソッド | スクリプトを確認する


VerifyFile メソッド

スクリプト内にカプセル化されているデジタル署名を確認します。

Object.VerifyFile (FileName, ShowUI)

引数

object
Scripting.Signer オブジェクトです。
FileName
スクリプト ファイルの名前が格納されている文字列です。
ShowUI
ブール型の値です。ShowUI 引数が False の場合、Scripting.Signer オブジェクトは、ユーザーの確認を促すダイアログ ボックスを表示せずに、署名を提供したソースが信頼のおけるソースかどうかを判別します。True の場合、Scripting.Signer オブジェクトは、信頼のおけるソースであると確認するに十分な情報がなければ、必要に応じてユーザーの確認を促すダイアログ ボックスを表示します。
メモ 一部のオペレーティング システムでは、フラグがオンになっていて、ファイルが信頼のおけるものであっても、"常に信頼する" オプションをオンにしていなければ、オペレーティング システム レベルでダイアログ ボックスが表示されることがあります。

使用例

次の例では、コマンド ライン引数の処理機能を使用して、署名をチェックしています。

<job>
<runtime>
<named name="file" helpstring="the file to sign" required="true" type="string"/>
<named name="UI" helpstring="produce user interface for untrusted scripts" required="false"/>
</runtime>
<script language="vbscript">
Dim Signer, File, UI, OK
If Not WScript.Arguments.Named.Exists("file") Then
     WScript.Arguments.ShowUsage
     WScript.Quit
End If
Set Signer = CreateObject("Scripting.Signer")
File = WScript.Arguments.Named("file")
UI   = WScript.Arguments.Named.Exists("ui")
OK = Signer.VerifyFile(File, UI)
If OK Then
     WScript.Echo File & " is trusted."
Else
     WScript.Echo File & " is NOT trusted."
End If
</script>
</job>

参 照

Scripting.Signer オブジェクト | Verify メソッド | Sign メソッド | SignFile メソッド | スクリプトを確認する


Write メソッド (Windows Script Host)

Windows Script Host

Write メソッド

指定された文字列を出力ストリームに書き込みます。

object.Write(strText)

引数

object
StdOut または StdErr テキスト ストリーム オブジェクトです。
strText
ストリームに書き込むテキストを示す文字列値です。

解説

StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe でスクリプトを実行すると、"無効なハンドルです。" というエラーが発生します。位置ポインタは、strText 内の最後の文字の直後に移動します。

使用例

次のコードは Write メソッドの使用例です。

[VBScript]
Dim strInput
strInput = WScript.StdIn.ReadAll
WScript.StdOut.Write strInput
[JScript]
var strInput = WScript.StdIn.ReadAll();
WScript.StdOut.Write(strInput);

参 照

StdErr プロパティ | StdOut プロパティ


WriteBlankLines メソッド (Windows Script Host)

Windows Script Host

WriteBlankLines メソッド

指定された数の改行文字を出力ストリームに書き込みます。

object.WriteBlankLines(intLines)

引数

object
StdOut または StdErr テキスト ストリーム オブジェクトです。
intLines
ストリームに書き込む改行文字の数です。

解説

strText 引数を指定せずに WriteLine メソッドを呼び出すと、WriteBlankLines(1) を呼び出したときと同じ処理が実行されます。StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe で実行した場合にのみ動作します。WScript.exe でスクリプトを実行すると、"無効なハンドルです。" というエラーが発生します。

使用例

次のコードは、WriteBlankLines メソッドの使用例です。

[VBScript]
Dim StdIn, StdOut
Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut

Do While Not StdIn.AtEndOfStream
     str = StdIn.ReadLine
     StdOut.Write "Line " & (StdIn.Line - 1) & ": " & str
     StdOut.WriteBlankLines 1
Loop
[JScript]
var stdin = WScript.StdIn;
var stdout = WScript.StdOut;

while (!stdin.AtEndOfStream)
{
     var str = stdin.ReadLine();
     stdout.Write("Line " + (stdin.Line - 1) + ": " + str);
     stdout.WriteBlankLines(1);
}

参 照

StdErr プロパティ | StdOut プロパティ | WriteLine メソッド


WriteLine メソッド (Windows Script Host)

Windows Script Host

WriteLine メソッド

指定された文字列と改行文字を出力ストリームに書き込みます。

object.WriteLine([strText])

引数

object
StdOut または StdErr テキスト ストリーム オブジェクトです。
strText
省略可能です。ストリームに書き込むテキストを指定します。省略すると、ストリームに改行文字が 1 つ書き込まれます。

解説

WriteLine メソッドは、指定された文字列に常に改行文字を 1 つ追加します。引数 strText を指定せずに WriteLine メソッドを呼び出すと、WriteBlankLines(1) を呼び出したときと同じ処理が実行されます。StdIn プロパティ、StdOut プロパティ、および StdErr プロパティとメソッドは、スクリプトを CScript.exe ホスト実行可能ファイルで実行した場合にのみ動作します。WScript.exe でスクリプトを実行すると、"無効なハンドルです。" というエラーが発生します。1 行とは、改行文字で終わる一連の文字列のことです。

使用例

次のコードは、WriteLine メソッドの使用例です。

[VBScript]
Dim StdIn, StdOut
Set StdIn = WScript.StdIn
Set StdOut = WScript.StdOut

Do While Not StdIn.AtEndOfStream
     str = StdIn.ReadLine
     StdOut.WriteLine "Line " & (StdIn.Line - 1) & ": " & str
Loop
[JScript]
var stdin = WScript.StdIn;
var stdout = WScript.StdOut;

while (!stdin.AtEndOfStream)
{
     var str = stdin.ReadLine();
     stdout.WriteLine("Line " + (stdin.Line - 1) + ": " + str);
}

参 照

StdErr プロパティ | StdOut プロパティ | WriteBlankLines メソッド


イベント (Windows Script Host)

Windows Script Host

イベント

トピック

End イベント
リモート スクリプト オブジェクトの実行終了をスクリプト エンジンに通知します。
Error イベント
リモート スクリプト オブジェクトがエラーのために異常終了した場合にリモート スクリプト オブジェクトの実行終了をスクリプト エンジンに通知します。
Start イベント
リモート スクリプト オブジェクトの実行開始をスクリプト エンジンに通知します。

参 照

WSH 言語
WSH リファレンスで説明されている要素の一覧です。
WSH の基本
WSH の基本概念を説明します。


End イベント

リモート スクリプトが完了したときに起動されるイベントです。

Object_end

引数

object
WshRemote オブジェクトです。

解説

End イベントは、リモート スクリプト オブジェクトの実行が完了したときに起動されます。リモート スクリプト オブジェクトの実行が正常に終了したときのほか、タイムアウトになったり、エラーのために異常終了したときにも、このイベントが起動されます。

使用例

var WshController = new ActiveXObject("WSHController");
var RemoteProc = WshController.CreateScript("foo.wsf", "remotemachine");
WScript.ConnectObject(RemoteProc, "RemoteProc_");
var Done = false;
RemoteProc.Execute();
while (!Done)
   WScript.Sleep(100);

function RemoteProc_End()
{
   WScript.Echo("プロセスが終了しました。");
   Done = true;
}

function RemoteProc_Error()
{
   WScript.Echo("エラーが発生しました。 " + RemoteProc.Error.Description);
   Done = true;
}

function RemoteProc_Start()
{
   WScript.Echo("プロセスが開始しました。");
}

参 照

WshController オブジェクト | WshRemote オブジェクト | Status プロパティ | Error プロパティ | Execute メソッド | Terminate メソッド | Start イベント | Error イベント


Error イベント

リモート スクリプトにエラーが発生したときに起動されるイベントです。

Object_Error

引数

object
WshRemote オブジェクトです。

解説

Error イベントは、リモート スクリプト オブジェクトの実行がエラーのために異常終了したときに起動されます。Error プロパティには、WshRemoteError オブジェクトが格納されます。このオブジェクトは、リモート スクリプトの異常終了の原因となったエラーに関する情報を保持します。

使用例

var WshController = new ActiveXObject("WSHController");
var RemoteProc = WshController.CreateScript("foo.wsf", "remotemachine");
WScript.ConnectObject(RemoteProc, "RemoteProc_");
var Done = false;
RemoteProc.Execute();
while (!Done)
   WScript.Sleep(100);

function RemoteProc_End()
{
   WScript.Echo("プロセスが終了しました。");
   Done = true;
}

function RemoteProc_Error()
{
   WScript.Echo("エラーが発生しました。 " + RemoteProc.Error.Description);
   Done = true;
}

function RemoteProc_Start()
{
   WScript.Echo("プロセスが開始しました。");
}

参 照

WshController オブジェクト | WshRemote オブジェクト | WshRemoteError オブジェクト | Status プロパティ | Error プロパティ | Execute メソッド | Terminate メソッド | Start イベント | End イベント


Start イベント

リモート スクリプトの実行が開始したときに起動されるイベントです。

Object_Start

引数

object
WshRemote オブジェクトです。

解説

Start イベントは、Execute メソッドが呼び出されたときに起動されます。

使用例

var WshController = new ActiveXObject("WSHController");
var RemoteProc = WshController.CreateScript("foo.wsf", "remotemachine");
WScript.ConnectObject(RemoteProc, "RemoteProc_");
var Done = false;
RemoteProc.Execute();
while (!Done)
   WScript.Sleep(100);

function RemoteProc_End()
{
   WScript.Echo("プロセスが終了しました。");
   Done = true;
}

function RemoteProc_Error()
{
   WScript.Echo("エラーが発生しました。 " + RemoteProc.Error.Description);
   Done = true;
}

function RemoteProc_Start()
{
   WScript.Echo("プロセスが開始しました。");
}

参 照

WshController オブジェクト | WshRemote オブジェクト | Status プロパティ | Error プロパティ | Execute メソッド | Terminate メソッド | End イベント | Error イベント


エラー メッセージ

トピック

ここでは、Windows Script Host 5.6 環境でスクリプトを実行しているときに表示される可能性のあるエラー メッセージの一覧を示します。

-E オプションを使うには、スクリプト エンジンの名前が必要です。

//H オプションにはホスト名が必要です。

//T オプションを使うには、タイムアウト値が必要です。

名前付き要素または名前が設定されていない要素に、重複する名前が見つかりました。

//S オプションを使った設定の保存に失敗しました。

実行できません。引数一覧が長すぎます。

wsh.LOG へ書き込めません。管理者に相談してください。

既定のスクリプト ホストを変更できません。

スクリプト <スクリプト名> のスクリプト エンジン <エンジン名> が見つかりません。

スクリプト ファイル <スクリプト ファイル名> が見つかりません。

スクリプトを STDIN から読み取ることができません。

設定を保存できません。

コマンドライン オプションが一致しません。

オブジェクトを接続できませんでした。

<オートメーション クラス名> という名前のオートメーション クラスが見つかりませんでした。

環境変数 <名前> を削除できません。

Windows Script Host の実行に失敗しました。

//H オプションのホスト名は、"cscript" または "wscript" でなければなりません。

Windows Script Host の初期化に失敗しました。

コマンドを使わずに Exec を呼び出そうとしました。

パス名が不正です。

ショートカットのパス名は .LNK または .URL で終わらなければなりません。

//T オプションのタイムアウト値が不正です。

スクリプト <スクリプト名> の読み込みに失敗しました。

設定の読み込みに失敗しました。

ジョブ名が必要です。

<名前> という名前のプリンタはありません。

<名前> のプロトコル ハンドラが見つかりません。

レジストリ キー <名前> のルートが無効です。

レジストリ キー <名前> を開いて読み取ることができません。

レジストリ キー <名前> を削除できません。

リモート スクリプト オブジェクトは 1 回のみ実行できます。

スクリプト <スクリプト名> の実行時間が制限時間を超えました。<スクリプト名> スクリプトの実行は中止されました。

スクリプト設定ファイル <設定ファイル> が無効です。

URL <名前> の構文が無効です。

ショートカット <名前> を保存できません。

<名前> へのショートカットを設定できません。

<ファイル名> にファイル拡張子がありません。

ファイル拡張子 <拡張子> を持つスクリプト エンジンはありません。

スクリプト ファイルが指定されていません。

リモート スクリプトを実行できません。

ジョブ <ジョブ識別子> が見つかりません。

処理を待つことができません。

Unicode はこのプラットフォームではサポートされていません。

不明なオプション <オプション名称> が指定されました。

Windows Script Host へのアクセスがこのコンピュータ上で無効にされています。詳細については、管理者に連絡してください。

参 照

WSH リファレンス
WSH リファレンスで説明されている要素の一覧です。
WSH の基本
WSH の基本概念を説明します。


-E オプションを使うには、スクリプト エンジンの名前が必要です。

-E オプションで正しくスクリプト エンジンが指定されていません。

このエラーを解決するには

  • -E オプションを指定する場合は、使用するスクリプト エンジンを必ず指定します。

参 照

ファイル拡張子 <拡張子> を持つスクリプト エンジンはありません。


//H オプションにはホスト名が必要です。

既定のホスト名が指定されていません。

このエラーを解決するには

  • //H オプションを使用する場合は、既定のホスト名を指定してください。

参 照

//H オプションのホスト名は、"cscript" または "wscript" でなければなりません。


//T オプションを使うには、タイムアウト値が必要です。

//T オプションにタイムアウト値が指定されていません。

このエラーを解決するには

  • //T オプションにタイムアウト値を指定します。

参 照

//T オプションのタイムアウト値が不正です。 | スクリプト <スクリプト名> の実行時間が制限時間を超えました。<スクリプト名> スクリプトの実行は中止されました。


名前付き要素または名前なし要素と重複する名前が検出されました : <名前>

Windows Script Host

名前付き要素または名前が設定されていない要素に、重複する名前が見つかりました。

<named> 要素または <unnamed> 要素に名前を付けるときに、ほかの <named> 要素または <unnamed> 要素に既に使用されている名前を指定しました。<named> 要素および <unnamed> 要素の "name" 属性は、<job> 全体で一意にする必要があります。

このエラーを解決するには

  • <named> 要素または <unnamed> 要素に異なる名前を付けます。

参 照

WshArguments オブジェクト | WshNamed オブジェクト | WshUnnamed オブジェクト | <named> 要素


//S オプションを使った設定の保存に失敗しました。

このメッセージは通常、システム アクセス権限の問題を意味します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

既定のスクリプト ホストを変更できません。 | スクリプト プロパティを設定/カスタマイズする (.wsh)


引数リストが長すぎます

Windows Script Host

実行できません。引数一覧が長すぎます。

通常このエラーは、Windows Script Host のドラッグ アンド ドロップ機能を使用しているときに発生します。Windows スクリプト ファイル上にドロップしたファイルが多すぎると、このエラーが発生します。

このエラーを解決するには

  • 引数リストが短くなるように、ドラッグする項目の数を減らします。
メモ スクリプトにドラッグできるファイルの数は、システムで許容されるコマンド ラインの長さの上限によって決まります。

参 照

ドラッグ アンド ドロップのサポート | コマンド ライン オプションが一致しません。


wsh.log に書き込めません

Windows Script Host

wsh.LOG へ書き込めません。管理者に相談してください。

Windows 95/98 および Windows Millennium Edition では、wsh.log ファイルがロックされていると LogEvent() メソッドの呼び出しが失敗します。

このエラーを解決するには

  • wsh.log ファイルのロックを解除するか (正しい権限をもっている場合)、またはシステム管理者に連絡します。

参 照

LogEvent メソッド


既定のスクリプト ホストを変更できません。

このメッセージは通常、システム アクセス権限の問題を意味します。管理者によってシステム レジストリがロックされると発生します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

//S オプションを使用した設定の保存に失敗しました。


スクリプト <スクリプト名> のスクリプト エンジン <エンジン名> が見つかりません。

このメッセージは通常、スクリプト エンジンがインストールされていないことを意味します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。
  • スクリプト エンジンがインストールされていることを確認して、正しいスクリプト エンジンを指定していることを確認します。
  • 構文を確認します。


スクリプト ファイル <スクリプト ファイル名> が見つかりません。

無効なパスが指定されたか、ファイルが存在しません。

このエラーを解決するには

  • 指定したパスを確認します。
  • ファイルが存在することを確認します。

参 照

パス名が不正です。


スクリプトを STDIN から読み取ることができません。

このメッセージは通常、アクセス権限の問題を意味します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。


設定を保存できません

Windows Script Host

設定を保存できません。

このスクリプトの制御ファイル (*.wsh) を保存できません。

このエラーを解決するには

  • 保存しようとしているファイルが読み取り専用ファイルでないこと、ほかのアプリケーションで開かれていないこと、さらに、管理者によってロックされていないことを確認します。
  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

スクリプトのプロパティを設定する


コマンド ライン オプションが一致しません。

このメッセージは通常、矛盾する引数が指定されていることを意味します。たとえば、//B (バッチ モード) と //I (対話型モード) を同時に指定することはできません。

このエラーを解決するには

  • 引数に矛盾がないか確認します。


オブジェクトを接続できませんでした。

オブジェクト イベントを受け付けられないオブジェクトにイベントを同期、またはイベントをソースしようとしている可能性があります。

たとえば、作成されたあとに IE をイベントに接続することはできません。作成プロセスの一部として、オブジェクトの作成時に IE にオブジェクト イベントを接続する必要があります。

このエラーを解決するには

  • 作成プロセス中にオブジェクトを作成して、オブジェクト イベントを接続します。

参 照

<object> 要素 | WScript オブジェクト


<オートメーション クラス名> という名前のオートメーション クラスが見つかりませんでした。

オートメーション クラスの作成に失敗したか、オートメーション クラスが正しくインストールされていません。

このエラーを解決するには

  • 作成したオートメーション クラスがインストールされていることを確認します。
  • ネットワークまたはセキュリティ問題について管理者に問い合わせます。


環境変数 <名前> を削除できませんでした

Windows Script Host

環境変数 <名前> を削除できません。

認識できない環境変数に対し Environment.Remove() メソッドを呼び出しています。

通常このエラーは、Remove メソッドを使用した場合に発生します。環境変数が存在しないか、変数名に入力ミスがあると、その環境変数を削除することができません。

このエラーを解決するには

  • 現在の環境変数の名前をチェックし、その環境変数が存在していること、および入力ミスがないことを確認します。

参 照

Remove メソッド | WshEnvironment オブジェクト


Windows Script Host の実行に失敗しました。

このメッセージは通常、システム アクセス権限の問題を意味します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

スクリプト <スクリプト名> の読み込みに失敗しました。


//H オプションのホスト名は、"cscript" または "wscript" でなければなりません。

//H オプションで "cscript" または "wscript" 以外のホスト名を指定しました。

このエラーを解決するには

  • //H オプションを使用する場合は、ホスト名として "cscript" または "wscript" を指定します。

参 照

//H オプションにはホスト名が必要です。


Windows Script Host の初期化に失敗しました。

Windows Script Host の初期化に失敗しました。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。


Exec をコマンドなしで呼び出すことはできません

Windows Script Host

コマンドを使わずに Exec を呼び出そうとしました。

WshShell.Exec() メソッドを呼び出すときに、実行対象のコマンドを指定しませんでした。

このエラーを解決するには

  • strCommand は、必須の引数です。スクリプト実行用のコマンド ラインを表す文字列を必ず指定してください。

参 照

Exec メソッド


パス名が不正です。

無効なパス名を指定しました。

このエラーを解決するには

  • 指定したパスを確認します。

参 照

スクリプト ファイル <スクリプト ファイル名> が見つかりません。


無効なショートカット パス名

Windows Script Host

ショートカットのパス名は .LNK または .URL で終わらなければなりません。

ショートカットに名前を付ける際に、ファイル拡張子を指定しなかったか、ファイル名に *.lnk および *.url 以外の拡張子を指定しました。

CreateShortcut メソッドの使用時に指定した拡張子が間違っているか、または拡張子が指定されていません。

このエラーを解決するには

  • ショートカット ファイルの拡張子が .lnk (Windows ショートカットの場合) または .url (インターネット ショートカットの場合) であることを確認してください。

参 照

WshShortcut オブジェクト | WshUrlShortcut オブジェクト


//T オプションのタイムアウト値が不正です。

//T オプションで指定したタイムアウト値が無効です。//T オプションは、負数以外の整数を指定する必要があります。

このエラーを解決するには

  • //T オプションに適切なタイムアウト値を指定します。//T オプションは、負数以外の整数を指定する必要があります。

参 照

//T オプションを使うには、タイムアウト値が必要です。 | スクリプト <スクリプト名> の実行時間が制限時間を超えました。<スクリプト名> スクリプトの実行は中止されました。


スクリプト <スクリプト名> の読み込みに失敗しました。

このメッセージは通常、システム アクセス権限の問題を意味します。問題のスクリプト ファイルの読み取りを拒否された場合に発生します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

設定の読み込みに失敗しました。


設定の読み込みに失敗しました。

このメッセージは通常、システム アクセス権限の問題を意味します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

スクリプト <スクリプト名> の読み込みに失敗しました。


ジョブ名が必要です。

ジョブ名が指定されていません。

このエラーを解決するには

  • ジョブ名を指定します。

参 照

ジョブ <ジョブ識別子> が見つかりません。


プリンタ <名前> が見つかりません

Windows Script Host

<名前> という名前のプリンタはありません。

SetDefaultPrinter メソッドには、現在インストールされているプリンタの名前を指定する必要があります。通常このエラーは、プリンタ名の代わりにプリンタ ポートを指定した場合や、現在インストールされていないプリンタの名前を指定した場合に発生します。

このエラーを解決するには

  • 現在インストールされているプリンタの名前をチェックし、指定したプリンタがインストールされていることを確認します。
  • プリンタ パスに入力ミスがないかどうかをチェックします。
  • ネットワーク プリンタがオンラインになっていることを確認します。

参 照

SetDefaultPrinter メソッド | EnumPrinterConnections メソッド | AddWindowsPrinterConnection メソッド


<名前> に一致するプロトコル ハンドラが見つかりませんでした

Windows Script Host

<名前> のプロトコル ハンドラが見つかりません。

通常このエラーは、URL ショートカット ターゲットのプロトコル ハンドラの名前に入力ミスがある場合に発生します。最もよく用いられるプロトコル ハンドラは、HTTP と FTP です。

このエラーを解決するには

  • プロトコル ハンドラ名に入力ミスがないかどうかをチェックします。

参 照

WshUrlShortcut オブジェクト


レジストリ キー <名前> に無効なルートが含まれています

Windows Script Host

レジストリ キー <名前> のルートが無効です。

認識できないルート レジストリ キーに対して RegRead() メソッドまたは RegWrite() メソッドを呼び出しています。

通常このエラーは、無効なレジストリ キーに対して RegRead メソッドまたは RegWrite メソッドを使用した場合に発生します。

このエラーを解決するには

  • Windows のレジストリをチェックし、そのレジストリ キーが存在していること、および入力ミスがないことを確認します。

参 照

RegRead メソッド | RegWrite メソッド | RegDelete メソッド


レジストリ キー <名前> を開くことができませんでした

Windows Script Host

レジストリ キー <名前> を開いて読み取ることができません。

認識できないレジストリ キーに対して RegRead() メソッドを呼び出しています。

通常このエラーは、無効なレジストリ キーに対して RegRead メソッドを使用した場合に発生します。

このエラーを解決するには

  • Windows のレジストリをチェックし、そのレジストリ キーが存在していること、および入力ミスがないことを確認します。

参 照

RegRead メソッド


レジストリ キー <名前> を削除できませんでした

Windows Script Host

レジストリ キー <名前> を削除できません。

認識できないレジストリ キーに対して RegDelete() メソッドを呼び出しています。

通常このエラーは、無効なレジストリ キーに対して RegDelete メソッドを使用した場合に発生します。

このエラーを解決するには

  • Windows のレジストリをチェックし、そのレジストリ キーが存在していること、および入力ミスがないことを確認します。

参 照

RegDelete メソッド | RegRead メソッド | RegWrite メソッド


リモート スクリプト オブジェクトは 1 回しか実行できません

Windows Script Host

リモート スクリプト オブジェクトは 1 回のみ実行できます。

リモート スクリプト オブジェクトを再実行しようとしています。

このエラーを解決するには

  • もう 1 つ別のリモート スクリプト オブジェクトを作成し、そのオブジェクトを実行します。

参 照

WshRemote オブジェクト


スクリプト <スクリプト名> の実行時間が制限時間を超えました。<スクリプト名> スクリプトの実行は中止されました。

ユーザー設定の実行時間 (//T) 内にスクリプトを実行できません。

このエラーを解決するには

  • 設定したタイムアウト (//T) 内にスクリプトが終了しない原因を調べます。スクリプトがより速く実行するように作り直すか、タイムアウト時間 (//T) を変更します。

参 照

//T オプションを使うには、タイムアウト値が必要です。 | //T オプションのタイムアウト値が不正です。


スクリプト設定ファイル <設定ファイル> が無効です。

無効なスクリプト設定ファイルが指定されています。

このエラーを解決するには

  • スクリプト設定ファイルを作成しなおすか、システム管理者に相談ください。


ショートカット <名前> に無効な構文が含まれています

Windows Script Host

URL <名前> の構文が無効です。

通常このエラーは、URL ターゲットを指定する文字列に無効な構文が含まれている場合に発生します。

このエラーを解決するには

  • URL ターゲットに入力ミスがないかどうかをチェックします。

参 照

WshUrlShortcut オブジェクト


ショートカット <名前> を保存できませんでした

Windows Script Host

ショートカット <名前> を保存できません。

通常このエラーは、既存のショートカットと同じ名前でショートカットを保存しようとした場合や、読み取り専用に設定されている場合に発生します。

このエラーを解決するには

  • 読み取り専用の属性を読み取り/書き込みに変更します。
  • ショートカット名を一意な名前に変更します。
  • 既存のショートカットの名前を変更します。

参 照

WshShortcut オブジェクト | WshUrlShortcut オブジェクト


ショートカット <名前> でプロトコル ハンドラを実行できませんでした

Windows Script Host

<名前> へのショートカットを設定できません。

通常このエラーは、URL ショートカット ターゲットのプロトコル ハンドラが無効か、または正しく登録されていない場合に発生します。最もよく用いられるプロトコル ハンドラは、HTTP と FTP です。

このエラーを解決するには

  • 有効なプロトコル ハンドラを使用します。
  • プロトコル ハンドラ名に入力ミスがないかどうかをチェックします。
  • システム管理者に連絡して、プロトコル ハンドラが正しくインストールされているかどうかを確認します。
  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

WshUrlShortcut オブジェクト


<ファイル名> にファイル拡張子がありません。

通常、適切なスクリプト エンジンを判断するため、スクリプト ファイルに拡張子を指定する必要があります。

このエラーを解決するには

  • 使用するスクリプト言語に適切な拡張子をスクリプト ファイルに指定します。


ファイル拡張子 <拡張子> を持つスクリプト エンジンはありません。

拡張子に使用するスクリプト エンジンが登録されていません。

このエラーを解決するには

  • ファイルの拡張子を確認して、使用するスクリプト言語の構文を確認します。
  • -E オプションを使用して使用するスクリプト エンジンを指定します。

参 照

-E オプションを使うには、スクリプト エンジンの名前が必要です。


スクリプト ファイルが指定されていません。

スクリプト ファイルが指定されていません。

このエラーを解決するには

  • 適切なスクリプト ファイルを指定します。

参 照

不明なオプション <オプション名称> が指定されました。


リモート スクリプトを実行できません

Windows Script Host

リモート スクリプトを実行できません。

スクリプトの初期化に失敗しました。

このエラーを解決するには

  • 管理者に連絡し、ネットワークやセキュリティの問題が発生していないかどうかを確認します。

参 照

WshRemote オブジェクト


ジョブ <ジョブ識別子> が見つかりません

Windows Script Host

ジョブ <ジョブ識別子> が見つかりません。

Windowsスクリプト ファイル (*.wsf ファイル) 内で無効な ジョブ ID を参照しています。

このエラーを解決するには

  • ジョブ ID に入力ミスがないかどうかをチェックします。

参 照

Windowsスクリプト ファイルを使用する | <job> 要素


プロセスを待機できません

Windows Script Host

処理を待つことができません。

通常このエラーは、あるプロセス (ショートカット リンクの実行など) が完了するまでスクリプトが待機しているときに、そのプロセスが値を返さない場合に発生します。

このエラーを解決するには

  • ショートカットの代わりにプログラムを直接実行します。
  • ショートカットのリンクをチェックし、リンクが切れていないことを確認します。

参 照

Run メソッド


Unicode はこのプラットフォームではサポートされていません。

Windows 95/98 および Windows ME プラットホームは Unicode の使用をサポートしていません。

このエラーを解決するには

  • Windows 95/98 および Windows ME プラットホームでは Unicode を使用しないようにします。


不明なオプション <オプション名称> が指定されました。

Windows Script Host に無効なオプションを指定しました。

このエラーを解決するには

  • 使用しているスクリプト言語に適切な Windows Script Host オプションを指定します。または、ほかのサポートされたスクリプト言語を指定します。
  • 構文を確認します。

参 照

スクリプト ファイルが指定されていません。


Windows Script Host へのアクセスがこのコンピュータ上で無効にされています。詳細については、管理者に連絡してください。

このメッセージは通常、システム アクセス権限の問題を意味します。

このエラーを解決するには

  • ネットワークまたはセキュリティの問題について管理者に問い合わせます。

参 照

Windows Script Host の実行に失敗しました。


スクリプト コンポーネント チュートリアル

Microsoft® Windows® スクリプト コンポーネントでは、Microsoft® Visual Basic® Scripting Edition (VBScript) および Microsoft® JScript® などのスクリプト言語を使用して COM コンポーネントを簡単に作成する方法を提供します。スクリプト コンポーネントは、Microsoft® Internet Information Server (IIS)、Microsoft® Windows® Scripting Host、および COM コンポーネントをサポートするアプリケーションで、COM コンポーネントとして使用できます。このチュートリアルで説明する内容を次に示します。

  • スクリプト コンポーネントの概要 スクリプト コンポーネントとは何か、またその使用方法について説明します。
  • スクリプト コンポーネントの作成 スクリプト コンポーネントを作成します。
  • スクリプト コンポーネントの使用 アプリケーションでスクリプト コンポーネントを使用します。
  • ASP スクリプト コンポーネントの実装 Active Server Pages (ASP) の機能を組み込んだスクリプト コンポーネントを作成することで、ASP のロジックをスクリプトから分離し、再利用できるようにします。
  • DHTML Behavior スクリプト コンポーネントの実装 Microsoft® Internet Explorer 5.0 で使用できるスクリプト コンポーネントを作成し、ビヘイビアを定義します。


スクリプト コンポーネントの概要

Windows® スクリプト コンポーネントは、Microsoft® Visual Basic® Scripting Edition (VBScript) および Microsoft® JScript® などの便利なスクリプト言語を使用して、パワフルで再利用可能な COM コンポーネントを作成できる優れた新技術です。次のトピックでは、スクリプト コンポーネント技術の概要と、スクリプト コンポーネントの作成および使用方法を説明します。

  • スクリプト コンポーネントの紹介 スクリプト コンポーネントとは何か、また使用する利点について説明します。
  • スクリプト コンポーネントのしくみ スクリプト コンポーネント技術のしくみと、スクリプト コンポーネントを作成する方法を説明します。


スクリプト コンポーネントの紹介

Windows®スクリプト コンポーネントを使用すると、スクリプト内に、パワフルで再利用可能な COM コンポーネントを簡単に作成できます。Microsoft® ActiveX® Scripting インターフェイスをサポートしているスクリプト言語を使用して、スクリプト コンポーネントを作成します。このインターフェイスをサポートするスクリプト言語には、JScript、Microsoft® Visual Basic® Scripting Edition (VBScript)、PERLScript、PScript、および Python があります。

メモ ActiveX Scripting インターフェイスの詳細については、www.microsoft.com の Microsoft Scripting Technologies Web サイトを参照してください。

この新しいスクリプト コンポーネント技術は、オートメーション コンポーネントなど、一般的な COM コンポーネントをサポートします。また、DHTML Behavior などのアドオンを使用して拡張することができます。

スクリプト コンポーネントには、次のような特徴があります。

  • 小さくて効果的。
  • 作成、維持、配布が簡単。
  • COM コンポーネントを作成できる。
  • 広範囲にわたるシステム サービスにアクセスできる。

スクリプト コンポーネントを使用すると、中間層ビジネス ロジックの実行、データベースへのアクセスや操作、アプリケーションを処理するトランザクションの追加、および DHTML Behavior を使用した、Web ページへの対話的な機能の追加など、さまざまなタスクのための COM コンポーネントを作成できます。

参 照

スクリプト コンポーネントのしくみ | スクリプト コンポーネントの作成


スクリプト コンポーネントのしくみ

Windows® スクリプト コンポーネントの技術は、次の 3 つの部分から構成されます。

  • スクリプト コンポーネント ランタイム (Scrobj.dll)。これは、COM の要求をスクリプト コンポーネントに対してディスパッチすることを支援します。COM の用語で表すと、Scrobj.dll はスクリプト コンポーネント用のインプロセス サーバーとして機能します。
  • インターフェイス ハンドラ。これは、特定の COM インターフェイスが実装されているコンパイル済みのコンポーネントです。異なるインターフェイス ハンドラが、特定の種類の COM コンポーネントとして動作します。

    COM オートメーション インターフェイス ハンドラ、ASP インターフェイス ハンドラ、および DHTML Behavior 用のハンドラを含め、一般的に使用されるインターフェイス ハンドラは、スクリプト コンポーネント ランタイムに既に組み込まれています。これら以外のインターフェイス ハンドラは、アドオン コンポーネントとして利用するか、または特定のアプリケーションに埋め込むことができます。

  • 独自に作成したスクリプト コンポーネント ファイル (.wsc ファイル)。スクリプト コンポーネント ファイルは、作成する COM コンポーネントの種類 (つまり、どのようなインターフェイス ハンドラを使用するか) についての情報を格納した XML (Extensible Markup Language) ファイルです。インターフェイス ハンドラによって提供される機能に応じて、それらのインターフェイスを実装するスクリプトを、スクリプト コンポーネントに記述します。

スクリプト コンポーネント ランタイムは、ホスト アプリケーションへのエントリ ポイントとして機能します。IUnknown などの COM 標準インターフェイスのインプリメンテーションを含め、COM の構造体は、さまざまなインターフェイス ハンドラに埋め込まれています。スクリプト コンポーネントには、COM コンポーネントの機能を実装する必要があるスクリプトだけを含めます。

たとえば、最も一般的な種類の COM コンポーネントの 1 つにオートメーション コンポーネントがあります。これは、他のアプリケーションから呼び出すことができるプロパティとメソッドを持つコンポーネントです。この機能を実装するために必要な低レベルの COM インターフェイス (メソッドが呼び出されたときに正しい関数をディスパッチするなど) は、オートメーション インターフェイス ハンドラに組み込まれています。スクリプト コンポーネント ファイルには、公開するプロパティ、メソッド、およびイベントを定義しておきます。ホスト アプリケーションでこれらのプロパティやメソッド、イベントが必要になったとき、オートメーション ハンドラによってそれらが正しく呼び出されます。

参 照

スクリプト コンポーネントの紹介 | スクリプト コンポーネントの作成


スクリプト コンポーネントの作成

Windows®スクリプト コンポーネント (.wsc) ファイルの作成は、HTML ファイルなど、スクリプトを含むファイルの作成に似ています。次のトピックでは、登録情報およびタイプ ライブラリの作成と、スクリプト コンポーネント ファイルの基本的なレイアウトについて説明します。

  • スクリプト コンポーネント ファイルの内容 スクリプト コンポーネントに必要な XML (Extensible Markup Language) 要素について説明します。
  • Script Component Wizard の使用 Script Component Wizard を使用して、スクリプト コンポーネント ファイルを作成します。
  • 登録情報の作成 スクリプト コンポーネント ファイルを COM コンポーネントとして登録するための情報を作成します。
  • メソッドの公開 スクリプト コンポーネントにメソッドを追加します。
  • プロパティの公開 スクリプト コンポーネントにプロパティを追加します。
  • イベントの公開 スクリプト コンポーネント内でカスタム イベントを定義し、発生させます。
  • スクリプト コンポーネント タイプ ライブラリの作成 ホストアプリケーションからより簡単に利用できるように、スクリプト コンポーネント用のタイプ ライブラリを作成します。
  • ほかのコンポーネントの参照 スクリプトに必要なオブジェクト、スクリプトで使用する定数を提供する外部のタイプ ライブラリ、スクリプトに埋め込まれていない文字列または値をポイントするリソース。これらに対するグローバル参照をインクルードします。
  • 同じパッケージ内の別のスクリプト コンポーネントの参照 同じパッケージに複数のスクリプト コンポーネントを含めるには、あるスクリプト コンポーネントの機能を他のスクリプト コンポーネント内に埋め込みます。
  • スクリプト コンポーネント ファイルのエラー チェック コンパイル時のエラー チェックをスクリプト コンポーネントに指定します。
  • スクリプト コンポーネント ファイルと XML 適合性 XML 適合性について説明します。


スクリプト コンポーネント ファイルの内容

Windows®スクリプト コンポーネント ファイルは、HTML ファイルによく似た XML (Extensible Markup Language) であり、スクリプト コンポーネントとそのビヘイビアを定義する特別な要素を記述します。スクリプト コンポーネントの定義に使用される要素は HTML タグではなく、スクリプト コンポーネント用の特別な XML 要素です。

基本的なスクリプト コンポーネント ファイルには、次の要素が含まれます。

  • <component> および <package> 要素 <component> 要素には、1 つの完全なスクリプト コンポーネントの定義を記述します。同じ .wsc ファイル内に何度も <component> 要素を記述することができ、これらはマスタ <package> 要素に記述します。
  • <registration> 要素 スクリプト コンポーネントを COM コンポーネントとして登録する情報を記述します。スクリプト コンポーネントのインスタンスを作成するときに、ホスト アプリケーション (Microsoft® Internet Explorer 5.0 など) が Windows レジストリを直接使用しない場合、この要素は必要ないことがあります。
  • <public> 要素 スクリプト コンポーネントが公開するプロパティ、メソッド、およびイベントの定義を記述します。これらの定義は、別の <script> ブロック内で定義された変数または関数をポイントします。
  • <implements> 要素 スクリプト コンポーネントがどの種類の COM コンポーネントとして機能するかを決定する、スクリプト コンポーネントの COM インターフェイス ハンドラを指定します。たとえば、<implements type=ASP> を指定して ASP インターフェイス ハンドラを実装すると、スクリプト コンポーネント内の ASP オブジェクト モデルにアクセスできるようになります。

    <public> 要素は、スクリプト コンポーネントが COM オートメーション インターフェイス ハンドラを実装していることを示すために使用されます。このため、オートメーション ハンドラ用の <implements> 要素を作成する必要はありません。

    メモ スクリプト コンポーネント ランタイムには、オートメーション用、ASP 用、および Internet Explorer 5.0 DHTML Behavior 用のインターフェイス ハンドラがあります (オートメーション インターフェイス ハンドラは、<public> 要素を使用して公開します)。その他のインターフェイス ハンドラは、外部 DLL として使用できます。追加のインターフェイス ハンドラとスクリプト コンポーネントの詳細については、Microsoft Scripting Technologies Web サイトを参照してください。
  • <script> 要素 作成する COM コンポーネントの種類に応じて、スクリプト コンポーネントのロジックを実装するスクリプトを記述します。たとえば、COM オートメーション コンポーネントを作成する場合、<public> 要素でプロパティ、メソッド、およびイベントを宣言し、1 つ以上の <script> 要素にスクリプトを記述して定義します。
  • <object> 要素 ほかの COM コンポーネントなど、スクリプトで使用するオブジェクトについての情報を記述します。
  • <resource> 要素 スクリプト コンポーネントのコードに埋め込まない方がよい値を記述します。<resource> 要素には、バージョンによって異なる情報、ほかの情報に変換される文字列、およびその他の値を含めることができます。
  • <reference> 要素 スクリプトで参照するタイプ ライブラリを記述します。
  • <comment> 要素 スクリプト コンポーネントが解析され、実行されるときに無視される文字列を記述します。
    メモ 作成した .wsc ファイル内に XML 標準に従った XML が含まれている場合、スクリプト コンポーネントの XML パーサーで XML 構文をチェックするよう指定することができます。たとえば、将来 XML エディタを使用してファイルを編集する場合は、この指定が有用です。それ以外の場合は、通常、有用ではありません。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。

スクリプト コンポーネント ファイルのひな型

次のコードは、スクリプト コンポーネント ファイルを構成する例です。

<?XML version="1.0"?>
<package>
<?component error="true" debug="true"?>

   <comment>
      このひな型は、スクリプト コンポーネントの要素が wsc ファイルに
      どのように組み込まれるかを示しています。
   </comment>

<component id="MyScriptlet">
   <registration
      progid="progID"
      description="description"
      version="version"
      clsid="{00000000-0000-0000-000000000000}"/>

   <reference object="progID">

   <public>
      <property name="propertyname"/>
      <method name="methodname"/>
      <event name="eventname"/>
   </public>

   <implements type=COMhandlerName id=internalName>
      (interface-specific definitions here)
   </implements>

   <script language="VBScript">
      <![CDATA[
      dim propertyname
      Function methodname()
      ' ここにスクリプトを記述します。
      End Function
      ]]>
   </script>

   <script language="JScript">
      <![CDATA[
      function get_propertyname()
      { // ここにスクリプトを記述します。
      }
      function put_propertyname(newValue)
      { // ここにスクリプトを記述します。
         fireEvent(eventname)
      }
      ]]>
</script>

   <object id="objID" classid="clsid:00000000-0000-0000-000000000000">
   <resource ID="resourceID1">string or number here</resource>
   <resource ID="resourceID2">string or number here</resource>
</component>
</package>
メモ XML では、前の例の <property> および <method> 要素のように内容のない (属性のみの) 要素でも /> で閉じれば、要素として指定できます。

次のことに注意してください。

  • 先頭の <?XML ?> 宣言は、このコードが XML ファイルであることと、XML プロトコルに従っていることを示します。この宣言は省略可能です。この宣言を記述しない場合は、スクリプト コンポーネントの要素を作成する際に制限の緩い構文を使用できます。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
  • ファイルには <component> 要素が 1 つしか含まれていないので、この例では <package> 要素が省略可能です。
  • <?component?> 処理命令には、エラー チェック オプションを指定する属性が含まれています。詳細については、「スクリプト コンポーネント ファイルのエラー チェック」を参照してください。この要素を記述しなければ、既定のオプションは、すべて偽 (false) になります。
  • <comment> 要素は、スクリプト コンポーネントのどの部分にも記述できます。
  • <registration> 要素は、記述する必要がない場合もあります。たとえば、Internet Explorer 5.0 では、ページ上でビヘイビアが検出されたとき、ビヘイビアのインスタンスを直接生成するので、DHTML Behavior インターフェイス ハンドラを実装しているスクリプト コンポーネントを登録する必要がありません。登録の詳細な要件については、実装しているインターフェイス ハンドラのドキュメントを参照してください。また、どのホストでスクリプト コンポーネントが使用されるかについても注意してください。
  • <reference> 要素を使用すると、スクリプト コンポーネントにタイプ ライブラリをインクルードできるので、スクリプト内でライブラリの定数を使用できます。
  • <public> 要素には、<property>、<method>、および <event> 要素があります。これらを定義するスクリプトは、スクリプト コンポーネント ファイルの後ろの部分にあります。
  • <implements> 要素は、既定ではない COM インターフェイスを使用できるようにします。たとえば、次に示す <implements> の type 属性を使って ASP インターフェイスを公開できます。
    <implements type="ASP" id="iASP">

    <implements> 要素の内部に記述する適切な要素は、実装しているインターフェイスの内容によって異なります。

    メモ 前の例では、id 属性を付けて <implements> 要素を指定しています。この属性は省略可能ですが、オブジェクトまたは変数を厳密に定義する必要がある場合は指定します。詳細については、<implements> 要素を参照してください。
  • このひな型には、2 つのスクリプト要素があります。1 つは VBScript 用で、もう 1 つは JScript 用です。使用するスクリプト言語が 1 つの場合、2 つ以上の <script> 要素は必要ありません。ファイルの先頭に <?XML ?> が宣言されているので、CDATA セクションを使って、<script> 要素内のスクリプトを隠蔽する必要があります。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
  • <object> 要素は、スクリプト コンポーネント内のスクリプトで使用するオブジェクトへの参照を作成します。

ひな型を作成した後、実装するインターフェイス ハンドラの種類に応じて、スクリプト コンポーネントの機能を定義する要素の内部を埋めていきます。

参 照

スクリプト コンポーネント ファイルのエラー チェック | スクリプト コンポーネント タイプ ライブラリの作成 | 登録情報の作成 | イベントの公開 | メソッドの公開 | プロパティの公開 | ASP スクリプト コンポーネントの実装 | DHTML Behavior スクリプト コンポーネントの実装 | スクリプト コンポーネント ファイルと XML 適合性 | Script Component Wizard の使用


Script Component Wizard の使用

Windows® スクリプト コンポーネントのパッケージには、スクリプト コンポーネント (.wsc ファイル) の作成を自動化する Script Component Wizard が含まれています。このウィザードは、次の機能を実行します。

  • .wsc ファイルを作成し、基本的な XML 要素を追加します。
  • 登録情報を入力するようにユーザーに求めて、登録情報を作成します。
  • スクリプト コンポーネントで使用するインターフェイス ハンドラの種類を入力するように、ユーザーに求めます。
  • 公開するプロパティを入力するようにユーザーに求めて、指定されたスクリプト言語に必要な要素を作成します。
  • 公開するメソッドを入力するようにユーザーに求めて、指定されたスクリプト言語に必要な要素を作成します。
  • スクリプト コンポーネントが発生するイベントを入力するようにユーザーに求めて、イベント要素のひな型を作成します。
    メモ www.microsoft.com/japan/developer の Microsoft Scripting Technologies Web サイトから Script Component Wizard をダウンロードしてインストールできます。

このウィザードは、ユーザーが入力した情報を使用してスクリプト コンポーネントのひな型を作成し、.wsc ファイルに書き込みます。そして、.wsc ファイルを編集してスクリプトを追加し、スクリプト コンポーネントの機能を作成します。

メモ ウィザードによって作成されたスクリプト コンポーネント ファイルの先頭に <?XML ?> 宣言がある場合は、ファイルの内容を XML に準拠させる必要があることを意味します。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。

参 照

スクリプト コンポーネント ファイルの内容 | 登録情報の作成 | スクリプト コンポーネントの作成 | スクリプト コンポーネント ファイルと XML 適合性


登録情報の作成

ホスト アプリケーションが登録情報を必要とする場合は、Regsvr32.exe などのプログラムを使用して、Windows® スクリプト コンポーネントを COM コンポーネントとして登録します。登録すると、COM コンポーネントについての情報が、ほかのプログラムからアクセスできる場所に保存されます (Windows では、登録情報が Windows レジストリに格納されます)。アプリケーションは、この登録情報を読み取ることによって COM コンポーネントを検索し、ロードすることができます。

メモ スクリプト コンポーネントによっては、登録する必要がない場合もあります。たとえば、Internet Explorer 5.0 では、ページ上でビヘイビアが検出されたとき、ビヘイビアのインスタンスを直接生成するので、DHTML Behavior インターフェイス ハンドラを実装しているスクリプト コンポーネントは、登録する必要がありません。ビヘイビアの使用の詳細については、Microsoft Site Builder Network (SBN) Web サイトの「Using DHTML Behaviors」を参照してください。ホスト アプリケーションがモニカをサポートしている場合は、登録しないでスクリプト コンポーネントのインスタンスを作成できます。

登録を指定する際に最も重要な情報を次に示します。

  • プログラム ID (prog ID) は、スクリプト コンポーネントのインスタンスを作成するときに、ホスト アプリケーションで使用される名前です。たとえば、スクリプト コンポーネントのプログラム ID が Component.MyComponent である場合、Microsoft® Visual Basic® では、次のようなステートメントを使ってそのスクリプト コンポーネントのインスタンスを作成します。
    Set Component = CreateObject("Component.MyComponent")
  • GUID (Globally Unique ID) であるクラス ID を使用して、スクリプト コンポーネントを一意に識別します。GUID は、Uuidgen.exe などのプログラムを使って生成できます。
    メモ Script Component Wizard を使用してスクリプト コンポーネントを作成した場合、ウィザードはプログラム ID およびクラス ID を自動的に作成します。詳細については、「Script Component Wizard の使用」を参照してください。

登録情報には、説明とバージョン番号も含まれています。

スクリプト コンポーネントを登録するときに、登録プログラムを使用してスクリプト コンポーネントのクラス ID を作成することができます。しかし、スクリプト コンポーネントが登録されるすべてのコンピュータ上で同じクラス ID を持つことを保証するために、スクリプト コンポーネント用のクラス ID は自分で作成することをお勧めします。クラス ID を保存する開発ツールと共にスクリプト コンポーネントを使用する場合、登録プログラムでクラス ID を作成することができると、問題が発生する可能性があります。登録するたびに新しいクラス ID が作成されると、アプリケーションが保存している ID と一致しなくなります。

スクリプト コンポーネント用の登録情報を作成するには

  • 次のコードは、少なくともプログラム ID を含み、必要に応じて、クラス ID、解説、およびバージョンを含む <registration> 要素を作成する例です。
    <registration
description="My Test Component"
progid="Component.TestScript"
version="1"
classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}"/>
    メモ <registration> の属性は、<registration> 要素の中で任意の順序で指定できます。

登録時にスクリプトを実行する

スクリプト コンポーネントの <registration> 要素には、スクリプト コンポーネントが登録されるときと、登録が解除されているときに実行されるスクリプトを含めることもできます。たとえば、スクリプト コンポーネントが登録されている間にメッセージをポストできます。

登録時および登録の解除時にスクリプトを実行するには

  • <registration> 要素の中に <script> 要素を記述します。登録する間にスクリプトを実行するには、register( ) 関数を記述します。スクリプト コンポーネントの登録が解除される間にスクリプトを実行するには、unregister( ) 関数を記述します。

    次のコードは、スクリプト コンポーネントが登録されるときと、登録が解除されるときにメッセージをポストする例です。

    メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
    <registration
   description="My Test Component"
   progid="Component.TestScript"
   version="1"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}">

   <script language="VBScript">
   <![CDATA[
      Function register()
         MsgBox "コンポーネント 'My Test Component' が登録されました。
      End Function
      Function unregister()
         MsgBox "コンポーネント 'My Test Component' が登録されました。"
      End Function
   ]]>
   </script>
</registration>

リモート アクセス用に登録する

スクリプト コンポーネントを分散環境で配布する場合、リモートでスクリプト コンポーネントのインスタンスを作成するように指定することができます。たとえば、スクリプト コンポーネントをサーバー上で実行し、クライアント上のコードから呼び出されるように設計します。クライアントおよびサーバー コンピュータを DCOM と共に正しく構成すれば、リモートでアクセスできるようになります。DCOM は、サーバーからクライアントにオブジェクト ポインタを渡すメカニズムを提供します。

リモート アクセス用にスクリプト コンポーネントを登録するには

  • 次の例で示すように、<registration> 要素内に remotable 属性を含めます。
    <registration
   description="My Test Component"
   progid="Component.TestScript"
   version="1"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}"
   remotable=true/>

スクリプト コンポーネントのインスタンスをリモートで作成する方法の詳細については、「アプリケーションでのスクリプト コンポーネントの使用」を参照してください。

参 照

スクリプト コンポーネント ファイルの内容 | Script Component Wizard の使用 | スクリプト コンポーネント タイプ ライブラリの作成 | スクリプト コンポーネント ファイルのエラー チェック | スクリプト コンポーネント ファイルと XML 適合性


メソッドの公開

メソッドは、Windows® スクリプト コンポーネント ファイルの関数またはサブルーチンとして実装されます。

メソッドを公開するには

  1. <public> 要素を <component> 要素の子要素として作成します。
  2. <public> 要素に、<method> 要素を記述します。<method> 要素には、メソッドのパラメータを定義するために、必要に応じて 1 つ以上の <parameter> 要素を記述することができます。
  3. 関数を実装するためのプロシージャには、どのスクリプト言語を使用して記述してもかまいません。<component> 要素の内側で、<implements> 要素の外側にある <script> 要素の中にプロシージャを記述します。関数名が functionName に一致していることを確認してください。functionName を指定していない場合は、<method> 要素で指定した methodName に関数名が一致していることを確認します。

    たとえば、次のコードは、factorial および getRandomNumber という 2 つのメソッドを含むスクリプト コンポーネント ファイルの一部です。

    メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
    <public>
   <method name="factorial"/>
   <method name="random" internalName="getRandomNumber">
      <parameter name="upperBound"/>
      <parameter name="seed"/>
   </method>
</public>

<script language="VBScript">
Function factorial(n)
   <![CDATA[
   If isNumeric(n) Then
      If n <= 1 Then
         factorial = 1
      Else
         factorial = n*factorial(n-1)
      End If
   Else
      factorial = -2   ' エラー コード
   End If
End Function

Function getRandomNumber(upperBound, seed)
   getRandomNumber = Cint(upperBound * Rnd(seed) + 1)
End Function
]]>
</script>

スクリプト コンポーネントで既定のメソッドを指定しておくと、ホスト アプリケーションは、メソッドが明示的に呼び出されなくても、そのメソッドを実行することができます。たとえば、factorial というメソッドを公開しておき、既定として設定した場合、Visual Basic では次の方法で呼び出すことができます。

Set component = CreateObject("Component.MyComponent")
n = component.factorial(4)    ' factorial メソッドを明示的に呼び出します。
n = component(4)   ' factorial メソッドを既定のメソッドとして呼び出します。

既定のメソッドを指定するには、メソッドの属性に特別なディスパッチ ID dispid を設定します。dispids の詳細については、「イベントの公開」を参照してください。

既定のメソッドを指定するには

  • <method> 要素には、次のコードに示すように dispid="0" という属性を記述します。
    <public>
<method name="factorial" dispid="0"/>
</public>
    メモ この方法は、既定のメソッドまたは既定のプロパティを指定する際に使用できますが、両方は指定できません。スクリプト コンポーネントでは、dispid の 0 がただ 1 つの要素です。

参 照

イベントの公開 | プロパティの公開 | スクリプト コンポーネント ファイルの内容


プロパティの公開

プロパティを公開するには、2 とおりの方法があります。

  • 値として プロパティは、スクリプト コンポーネントのユーザーが読み取りおよび書き込み可能なグローバル変数です。変数の値は、グローバル値に格納されるので、Windows® スクリプト コンポーネント ファイルのスクリプトで利用できます。
  • 関数として プロパティは、関数を使用して定義します。このため、プロパティ値を計算したり、プロパティを読み取り専用、書き込み専用、読み書き可能のいずれかに設定したりすることができます。

プロパティは、スクリプト コンポーネントの既定値として設定することもできます。

プロパティを値として公開するには

  1. <public> 要素を <component> 要素の子要素として作成します。
  2. <public> 要素に、プロパティ値を格納する変数を指定する <property> 要素を記述します。
  3. プロパティの値を初期化するには、propertyName に一致する名前 (propertyVariable を指定している場合は、propertyVariable に一致する名前) を持つグローバル変数を <script> 要素に作成し、この変数に値を代入します。
  4. 次のコードは、2 つのプロパティ (name と tag) が単なる値として公開される例です。これらのプロパティは、<script> 要素でグローバル変数を使用して初期化されています。
    メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
    <public>
   <property name="name"/>
   <property name="tag" internalName="tagVar"/>
</public>

<script language="VBScript">
   <![CDATA[
   Dim name
name = "script component"   ' name プロパティの値を初期化します。
   Dim tagVar
tagVar = "10"   ' tag プロパティの値を初期化します。
   ]]>
</script>

関数を使用したプロパティの公開は、メソッドの公開と似ています。

関数を使用してプロパティを公開するには

  1. スクリプト コンポーネント ファイルの <public> 要素内に <property> 要素を記述します。<property> 要素には、read 関数を定義する <get> 要素と、write 関数を定義する <put> 要素を記述します。<put> 要素を記述しない場合、プロパティは読み取り専用になります。<get> 要素を記述しない場合、プロパティは書き込み専用になります。
  2. <public> 要素の外側の <script> 要素内で、関数を実装するプロシージャを記述します。プロパティの値を設定する関数 (つまり put 関数) は、プロパティの値として設定される 1 つの引数を受け取る必要があります。

    プロシージャの名前は、<property> 要素で指定した内部名と一致する必要があります。internalName 属性を指定していない場合、read 関数は名前の先頭に get_ を付け、write 関数は名前の先頭に put_ を付ける必要があります。

  3. たとえば、次のコードは、sname、dateOfBirth、age の 3 つのプロパティを公開するスクリプト コンポーネント ファイルです。dateOfBirth プロパティは関数によって定義されるので、エラー チェックを含めることができます。age プロパティは、計算により求められるため、読み取り専用で定義されています。
    メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
    <public>
   <property name="sname"/>
   <property name="age">
      <get internalName="readAge"/>
   </property>
   <property name="dateOfBirth">
      <get internalName="readDOB"/>
      <put internalName="writeDOB"/>
   </property>
</public>

<script language="VBScript">
<![CDATA[
Dim sname   ' 読み書き可能な sname プロパティ (関数なし)。
Dim gDOB   ' 誕生日を格納するグローバル変数。

Function readDOB()
   ' dateOfBirth プロパティの値を取得します。
   readDOB = gDOB
End Function

Function writeDOB(newDOB)
   ' dateOfBirth プロパティの値を設定します。
   If isDate(gDOB) Then
      ' エラーを確認します。
      gDOB = newDOB
   End If
End Function

Function readAge()
   ' 読み取り専用の age プロパティを計算します。
   If isDate(gDOB) Then
      dobM = DatePart("m", gDOB)
      dobD = DatePart("d", gDOB)
      dobY = DatePart("yyyy", gDOB)
      todayY = DatePart("yyyy", Date)
      age = todayY - dobY

      ' 今年の誕生日が過ぎていない場合は調整します。
      bday = DateValue(dobM & "/" & dobD & "/" & todayY)
      If DateDiff("d", bday, DateValue(Date)) < 0 Then
         age = age - 1
      End If
      readAge = age
   End If
End Function
]]>
</script>

スクリプト コンポーネントで既定のプロパティを指定できるので、ホスト アプリケーションは、明示的にプロパティの名前が記述されていなくても、プロパティの値を取得したり、設定したりできます。たとえば、sname というプロパティを公開しておき、既定として設定した場合、Visual Basic では次の 3 つの方法で参照できます。

Set component = CreateObject("Component.MyComponent")
n = component.sname   ' 明示的にプロパティを取得します。
n = component   ' 既定のプロパティとして sname の値を取得します。

既定のプロパティを指定するには、特別なデスパッチ識別子 (dispid) をメソッドに割り当てる属性を記述します。dispids の詳細については、「イベントの公開」を参照してください。

既定のプロパティを指定するには

  • <property> 要素では、次のコードのように dispid="0" を記述します。
    <property name="sname" dispid="0"/>
    メモ この方法は、既定のメソッドまたは既定のプロパティを指定する際に使用できますが、両方は指定できません。スクリプト コンポーネントでは、dispid の 0 がただ 1 つの要素です。

参 照

イベントの公開 | メソッドの公開 | スクリプト コンポーネント ファイルの内容 | スクリプト コンポーネント ファイルと XML 適合性


イベントの公開

Windows®スクリプト コンポーネントにイベント機能を追加するには、次のようにします。

  • 発生させる予定の各イベントを宣言します。
  • スクリプト コンポーネントで必要なイベントを発生させる関数を呼び出します。

ホスト環境によっては、イベントにバインドするために使用するタイプ ライブラリを生成する必要があります。詳細については、「スクリプト コンポーネント タイプ ライブラリの作成」を参照してください。

メモ Behavior ハンドラではイベントを公開する方法が、一部異なります。詳細については、「Behavior スクリプト コンポーネントのカスタム イベントの公開」を参照してください。

イベントを宣言する

発生させる予定の各イベントは、個別に宣言する必要があります。

イベントを宣言するには

  1. <public> 要素を <component> 要素の子要素として作成します。
  2. <public> 要素で、宣言するイベントごとに <event> 要素を記述します。
  3. たとえば、次のコードは、2 つのイベントを公開します。
    <public>
   <property name="sname"/>
   <method name="factorial"/>
   <event name="namechanged"/>
   <event name="querydone"/>
</public>

ディスパッチ ID を指定する

COM プログラミングでは、コンポーネントのイベントを認識する整数値であるディスパッチ ID (それぞれ dispid として参照される) によって、イベントの通知を行います。dispid は、コンポーネントのタイプ ライブラリにコンパイルされ、ホスト アプリケーションによってイベントにバインドされます。

スクリプト コンポーネントのタイプ ライブラリを作成する処理では、スクリプト コンポーネントのイベントに対する dispid が自動的に作成されます。dispid は、独自に指定することもできます。独自に指定する場合は、次のような利点があります。

  • スクリプト コンポーネントのイベントの dispid が、いつも同じ値であることを保証します。タイプ ライブラリ ジェネレータを使って dispid を割り当てる場合は、ライブラリが生成されるたびに dispid が変更される可能性があります。
  • スクリプト コンポーネントのイベントを、指定した番号の dispid に割り当てることができます。たとえば、エラー通知のような標準 COM イベントを発生させる場合、COM の規約で使用されている値に、イベントを割り当てることができます。

イベントの dispid を指定する場合、次のコードのように <event> 要素に dispid 属性を記述します。

<public>
   <event name="namechanged" dispid="22">
</public>

スクリプト コンポーネントでは、dispid は一意である必要があります。標準的なイベントに dispid を割り当てる場合、負の値を指定することもできますが、コントロール用の dispid は -999 から -500 までにするなど、指定した範囲の値だけを使用してください。予約済みの dispid の有効範囲については、MSDN ライブラリの DISPID に関するドキュメントを参照してください。

メモ dispid 番号 0 は、既定のメソッドまたは既定のプロパティを識別するために使用します。詳細については、「メソッドの公開」または「プロパティの公開」を参照してください。

イベントを発生させる

発生させるイベントの名前を指定して、fireEvent メソッドを呼び出すと、イベントを発生させることができます。<implements> 要素で公開していないイベントは、発生させることができません。スクリプト コンポーネント ファイル内のどのスクリプトを使用しても、イベントは発生させることができます。たとえば、次のコードは、プロパティ値が変更されたときにイベントを発生させます。

<script language="VBScript">
<![CDATA[
Sub put_lowercaseName(newLCName)
   name = newLCName
   fireEvent("namechanged")
End Sub
]]>
</script>

参 照

Behavior スクリプト コンポーネントのカスタム イベントの公開 | メソッドの公開 | プロパティの公開 | ホスト アプリケーションでのスクリプト コンポーネント イベントの処理 | スクリプト コンポーネント ファイルの内容


スクリプト コンポーネント タイプ ライブラリの作成

インターフェイスおよびメンバの情報を含む、Windows® スクリプト コンポーネント用のタイプ ライブラリを作成できます。Visual Basic など、ホスト アプリケーションによっては、スクリプト コンポーネント用のイベントを使用するためにタイプ ライブラリが必要なものもありますが、その他のホスト アプリケーションでは、タイプ ライブラリは省略可能です。しかし、タイプ ライブラリが必要ない場合でも、タイプ ライブラリを生成しておくと、スクリプト コンポーネントをより簡単に使用することができ、ホストアプリケーションでのエラーも少なくなります。

たとえば、ホスト アプリケーションとして Visual Basic を使用する場合、スクリプト コンポーネントのタイプ ライブラリを選択するには [参照] ダイアログ ボックスを使用します。このダイアログ ボックスでスクリプト コンポーネントにイベントをバインドし、Visual Basic で表示できるようにします。また、スクリプト コンポーネントを参照する Visual Basic のコードを記述する場合、Visual Basic では、ステートメントを補完する際にタイプ ライブラリ情報を参照するので、オブジェクト ブラウザで、スクリプト コンポーネントが公開しているプロパティ、メソッド、およびイベントを簡単に確認し、使用することができます。

メモ ホスト アプリケーションでのタイプ ライブラリの使用の詳細については、アプリケーションのドキュメントを参照してください。

スクリプト コンポーネント タイプ ライブラリを作成するには

  • Windows エクスプローラに表示されたスクリプト コンポーネントの .wsc ファイルを右ボタンでクリックし、[タイプ ライブラリの生成] をクリックします。

    スクリプト コンポーネント用の .tlb ファイルが、スクリプト コンポーネント ファイルと同じ名前で .wsc ファイルがあるフォルダに生成され、Windows レジストリに登録されます。

タイプ ライブラリの生成をより正確に制御するには、スクリプト コンポーネント ファイルの内部のスクリプトから動的にタイプ ライブラリを生成するか、またはコマンドライン インターフェイスを使用します。

タイプ ライブラリを動的に生成する

スクリプト コンポーネント ランタイムには、Component.GenerateTypeLib オブジェクトによって実装されているオートメーション インターフェイスが含まれています。スクリプト コンポーネント ファイルの中からタイプ ライブラリを生成するために、スクリプト内でこのオブジェクトを使用します。スクリプト コンポーネントを登録する際にタイプ ライブラリを自動的に作成するには、特に有効です。

スクリプト コンポーネント タイプ ライブラリを動的に作成するには

  1. スクリプト コンポーネント ファイル内のスクリプトで、次のような構文を使用して、Component.GenerateTypeLib オブジェクトのインスタンスを作成します。
    set oTL = CreateObject("Scriptlet.GenerateTypeLib")
  2. Component.GenerateTypeLib オブジェクトの次のプロパティを設定します。
    プロパティ/メソッド | 内容
    AddURL | (メソッド) タイプ ライブラリを生成するスクリプト コンポーネント ファイルの URL を追加します。このメソッド プロパティを何度も呼び出して、タイプ ライブラリ内に複数のスクリプト コンポーネントを含めることができます。
    Path | (プロパティ) タイプ ライブラリが記述されているパスとファイルを指定します。既定のパスはカレント ディレクトリで、既定の名前はスクリプト コンポーネント ファイルの名前に拡張子 .tlb を付けたものです。オブジェクトが、指定されたライブラリを作成できない場合は、既定で component.tlb というタイプ ライブラリが作成されます。
    Doc | (プロパティ) タイプ ライブラリ情報と共にレジストリに格納される情報を、文字列で指定します。
    GUID (プロパティ) タイプ ライブラリ用の GUID を指定します (スクリプト コンポーネント用の GUID ではありません)。指定しない場合は、GenerateTypeLib オブジェクトによって GUID が作成されます。この場合、タイプ ライブラリの GUID は、コンピュータごとに異なる値になります。GUID は、次の書式で指定します。x は、16 進の値です。
    {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
    Name | (プロパティ) タイプ ライブラリの内部名を指定します。この名前は、Visual Basic のオブジェクト ブラウザなどのアプリケーションで表示されます。
    MajorVersion | (プロパティ) 代入する整数値を指定します。
    MinorVersion | (プロパティ) 代入する整数値を指定します。
  3. タイプ ライブラリ オブジェクトの Write メソッドを呼び出して、.tlb ファイルを作成し、登録します。
  4. タイプ ライブラリを追加して作成する場合、GenerateTypeLib オブジェクトの Reset メソッドを呼び出して、AddURL プロパティに指定したスクリプト コンポーネント ファイルの一覧をクリアします。そして、URL およびその他の必要なプロパティをリセットし、再び Write メソッドを呼び出します。

次の <registration> 要素内のコードは、タイプ ライブラリを動的に作成する例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<registration
   description="My Test Component"
   progid="Component.TestScript"
   version="1"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}">
   <script language="VBScript">
   <![CDATA[
   Function Register()
      Set oTL = CreateObject("Scriptlet.GenerateTypeLib")
         oTL.AddURL "d:\components\MyComponent.wsc"   ' スクリプト コンポーネントの URL。
         oTL.AddURL "d:\components\YourComponent.wsc"
         oTL.Path = "d:\components\MyComponent.tlb"   ' .tlb のパス。
         oTL.Doc = "Sample component typelib"   ' ドキュメントの文字列。
         oTL.GUID = "{a1e1e3e0-a252-11d1-9fa1-00a0c90fffc0}"
         oTL.Name = "MyComponentTLib" ' タイプ ライブラリの内部名。
         oTL.MajorVersion = 1
         oTL.MinorVersion = 0
         oTL.Write ' タイプ ライブラリをディスクに書き込みます。
         oTL.Reset ' AddURL メソッドの URL リストをクリアします。
      End Function
   ]]>
   </script>
</registration>

コマンドライン インターフェイス

[コマンド プロンプト] ウィンドウで Rundll32.exe プログラムを呼び出して、タイプ ライブラリを作成することができます。

コマンド プロンプトでタイプ ライブラリを作成するには

  • 次の構文を使用して Rundll32.exe を呼び出します。
    rundll32.exe path\scrobj.dll,GenerateTypeLib options

    引数

    • path コンピュータ上で Scrobj.dll の場所を示すパスを指定します。
    • options タイプ ライブラリの情報を、フラグと値を組み合わせて -flag:value の形式で指定します。この引数は、どのような順序でも指定できます。次のフラグがサポートされています。各フラグの値は、前のセクションの「スクリプト コンポーネント タイプ ライブラリを動的に作成するには」を参照してください。
      -name:Name
      -file:Path
      -doc:\"Doc\"
      -guid:GUID
      -major:MajorVersion
      -minor:MinorVersion
      -URL:AddURL

たとえば、次のコマンドは、スクリプト コンポーネント MyComponent.wsc から MyComponent.tlb というタイプ ライブラリを作成します (コマンドは、わかりやすくするために、途中で折り返しています)。

rundll32.exe c:\winnt\system32\scrobj.dll,GenerateTypeLib
   -name:MyComponentTLib -file:d:\components\MyComponent.tlb
   -doc:\"Sample component typelib\"
   -guid:{a1e1e3e0-a252-11d1-9fa1-00a0c90fffc0} -major:1 -minor:0
   -URL:d:\components\MyComponent.wsc

タイプ ライブラリのトラブルシューティング

さまざまな理由により、タイプ ライブラリの生成が失敗することがあります。場合によっては、問題の原因がどこにあるか明確にならない場合もあります。タイプ ライブラリを生成できない場合は、失敗の原因と思われるものを次のリストから探してください。

  • 関数でプロパティを定義する場合、get 関数と put 関数には、同じ名前で同じ数の引数を指定する必要があります。詳細については、「プロパティの公開」を参照してください。
    メモ スクリプト コンポーネントの get property 関数と put property 関数に、異なる数の引数を定義することもできますが、その場合、このスクリプト コンポーネント用のタイプ ライブラリを作成することができなくなります。
  • イベントを公開している場合、スクリプト コンポーネント内で 2 回以上同じディスパッチ ID (dispid) を使用することはできません。また、dispid には、指定の範囲にある場合を除いて、負の値を使用することはできません。詳細については、「メソッドの公開」を参照してください。
  • スクリプト コンポーネントの各要素の ID 属性は、一意である必要があります。2 つ以上のスクリプト コンポーネントからタイプ ライブラリを生成する場合、ID はタイプ ライブラリ全体として一意である必要があります。

参 照

スクリプト コンポーネント ファイルの内容 | 登録情報の作成 | スクリプト コンポーネント ファイルのエラー チェック | スクリプト コンポーネント ファイルと XML 適合性


ほかのコンポーネントの参照

Windows®スクリプト コンポーネントには、スクリプト コンポーネントを作成するために必要な外部コンポーネントへの参照を含めることができます。次の外部コンポーネントを参照することができます。

  • 追加の COM オブジェクト
  • タイプ ライブラリ
  • リソース (スクリプト コンポーネントのスクリプトに埋め込みたくない数と文字など)

追加の COM コンポーネントを参照する

スクリプト コンポーネントでは、必要に応じて、ほかの COM コンポーネントのインスタンスを作成します。次の 2 つの方法で作成できます。

  • スクリプト内 スクリプト内で直接ほかのオブジェクトのインスタンスを作成します。たとえば、Microsoft® Visual Basic® Scripting Edition (VBScript) では CreateObject 関数を使用し、JScript では新しい ActiveXObject オブジェクトを使用します。
  • <object> 要素を使用する HTML ページで使用する <OBJECT> タグに似た <object> 要素を使用します。<object> 要素を使用すると、どのスクリプトからでもグローバルにオブジェクトを使用することができ、スクリプト作成ツールを使用してステートメントを補完することができます。スクリプト コンポーネントのオブジェクトの要約とドキュメントを作成する便利な方法も提供されます。
    メモ スクリプト コンポーネントの <object> 要素は、HTML ページの <OBJECT> タグに似ていますが、スクリプト コンポーネントにはユーザー インターフェイスがないので、<object> 要素の属性のリストは <OBJECT> タグよりも短くなります。

OBJECT 要素を作成するには

  • <object> 要素を作成します。この要素は、<component> 要素の内側に記述しますが、<script> 要素など、その他の要素の外側に記述します。

次のコードは、スクリプト コンポーネント内でオブジェクトを定義する例です。

<object id="cnn" progid="ADODB.Connection"/>

外部タイプ ライブラリを参照する

多くのコンポーネントは、タイプ ライブラリをサポートします。タイプ ライブラリは、コンポーネントのクラスとそのメンバの完全なリストを提供します。コンポーネントのタイプ ライブラリを参照することにより、タイプ ライブラリに定義されている定数が使用できます。

タイプ ライブラリへの参照をインクルードするには

  • インクルードするタイプ ライブラリの位置と名前が指定されているスクリプト コンポーネントに、<reference> 要素を記述します。次に例を示します。
    <reference object="ADODB.Connection.2.0"/>

リソースを参照する

<resource> 要素には、バージョンによって異なる情報、ほかの情報に変換される文字列、およびその他の値を含めることができます。

リソースを参照するには

  1. スクリプト コンポーネントの内側で <public> 要素と <script> 要素の外側 (<implements> 要素がある場合は、さらにこの要素の外側) に、定義するリソースに対して 1 つの <resource> 要素を作成します。それぞれの要素には、一意の ID を指定します。次のコードは、2 つの <resource> 要素の例です。
    メモ <resource> 要素の内容をパーサーに対して隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
    <component id="MyScriptlet">
<public>
   <method name="random" internalName="getRandomNumber"/>
</public>
<resource id="errNonNumeric"><![CDATA[Non-numeric value passed]]>
</resource>
<resource id="errOutOfRange"><![CDATA[Passed value is out of range ]]>
</resource>
  2. スクリプトでは、getResource 関数を呼び出して、スクリプト内にリソースのテキストまたは数値を含めます。次に例を示します。
    メモ <script> 要素内のスクリプトをパーサーに対して隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
    <script language="VBScript">
<![CDATA[
Function getRandomNumber(upperBound)
   If IsNumeric(upperBound) Then
     getRandomNumber = Cint(upperBound * Rnd + 1)
   Else
     getRandomNumber=getResource("errNonNumeric")
   End If
End Function
]]>
</script>

参 照

スクリプト コンポーネント ファイルの内容 | 同じパッケージ内の別のスクリプト コンポーネントの参照


同じパッケージ内の別のスクリプト コンポーネントの参照

1 つのパッケージには、複数のWindows®スクリプト コンポーネントを含むことができるので、あるスクリプト コンポーネントのインスタンスから別のスクリプト コンポーネントのインスタンスを作成し、使用することができます。このとき、2 番目のスクリプト コンポーネントを登録する必要はありません。

たとえば、オートメーション インターフェイスを実装するスクリプト コンポーネントを作成し、一連のプロパティとメソッドを公開します。同じパッケージ内に 2 番目のスクリプト コンポーネントを作成し、ASP インターフェイスを実装します。このインターフェイスを実装すると、Microsoft® Internet Information Server (IIS) 用のサーバー オブジェクト モデルにアクセスできます。このオートメーション スクリプト コンポーネントでは、ASP スクリプト コンポーネントを公開し、そのメンバを利用可能にするメソッドまたはプロパティを作成できます。

あるスクリプト コンポーネントからほかのスクリプト コンポーネントを参照するには、2 番目のスクリプト コンポーネントを公開するあるメソッド内に、ひな型となるメンバ (プロパティまたはメソッド) を作成します。

同じスクリプト コンポーネント ファイル内で別のスクリプト コンポーネントを参照するには

  1. 最初のスクリプト コンポーネント内でプロパティまたはメソッドを宣言します。
  2. 新しいプロパティまたはメソッドの定義の一部として、createComponentfunction 関数を呼び出します。

    たとえば、次のコードでは、同じパッケージ内にスクリプト コンポーネントが 2 つあります。最初のスクリプト コンポーネントでは、math メソッドが 2 番目のスクリプト コンポーネントを単に参照します。2 番目のスクリプト コンポーネントは、add メソッドと multiply メソッドを公開します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<?XML version="1.0"?>
<package>
<component id="component1">
<registration progid="Component.FrontEnd"/>
<public>
   <property name="math"/>
</public>
<script language="JScript">
<![CDATA[
var math = createComponent("component2")
   ]]>
</script>
</component>

<component id="component2">
<registration progid="Component.Math"/>
<public>
   <method name="add"/>
   <method name="multiply"/>
</public>
<script language="JScript">
<![CDATA[
function add(n1, n2){
   return n1+n2;
}
function multiply(n1, n2){
   return n1*n2;
}
]]>
</script>
</component>
</package>

参照されているスクリプト コンポーネントを実行するには、そのメソッドまたはプロパティに至るまでの階層を省略しないで指定し、呼び出します。次のコードは、このような呼び出しを行う例です。

' 最初のスクリプト コンポーネントのインスタンスを作成します。
set o1 = CreateObject("Component.FrontEnd")

' 2 番目のスクリプト コンポーネントの関数を直接実行します。
msgbox(o1.math.add(3,5))
msgbox(o1.math.multiply(3,5))

' math メソッドを直接参照する 2 番目のオブジェクトを作成します。
Set o2 = o1.math()
msgbox(o2.add(4,5))
msgbox(o2.multiply(4,5))

createComponent() 関数は、呼び出されるたびに、参照されているスクリプト コンポーネントの新しいインスタンスを作成します。呼び出しの間でインスタンス情報を保存する必要がある場合は、次のコードのように、グローバル変数に 2 番目のスクリプト コンポーネントへのポインタを保存します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<component id="component1">
<registration progid="Component.FrontEnd"/>
<public>
   <property name="math">
      <get/>
   </property>
</public>
<script language="JScript">
<![CDATA[
var m = createComponent("component2")
function get_math(){
   return m
}
   ]]>
</script>
</component>

(Component2 は前の例と同じです)

参 照

スクリプト コンポーネント ファイルの内容 | <package> | <component>


スクリプト コンポーネント ファイルのエラー チェック

Windows® スクリプト コンポーネントは、COM コンポーネントとして使用されるため、通常は何も表示せずにコードを実行します。しかし、開発者がスクリプト コンポーネント ファイルを作成しているときは、ファイル内のエラーを見つける方法があれば便利です。エラーをチェックするために、次の 3 種類の方法があります。

  • XML の正確さの検査。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
  • 構文エラーと実行時エラーの通知。既定では、ファイルにエラーが発生した場合、一般的なエラー メッセージが表示されます。エラーの通知を指定すると、スクリプト コンポーネントのパーサーによってエラーの詳細が表示されます。
  • デバッグ。既定では、スクリプト コンポーネント用のスクリプト デバッガを使用できません。デバッグが有効である場合、Microsoft® Visual Basic® Scripting Edition (VBScript) の Stop ステートメントや JScript の debugger ステートメントを使ってブレークポイントを設定しておくと、エラーの発生に応じてスクリプト デバッガを起動できます。

エラー オプションの設定

エラー オプションは、XML の <?component?> 処理命令の属性として指定します。

エラー チェックを指定するには

  • スクリプト コンポーネント ファイルの先頭に (ただし、省略可能な宣言である <?XML ?> の後に)、<?component?> 処理命令を記述します。このとき、次に示す属性を 1 つ以上指定します。
    • error この属性を真 (true) に設定すると、スクリプト コンポーネント内の構文エラーまたは実行時エラーに関する詳細なメッセージが表示されます。
    • debug この属性を真 (true) に設定すると、デバッグが有効になります。デバッグが無効の場合は、スクリプト コンポーネント用のスクリプト デバッガを起動することができません。

たとえば、次のコードは、3 つのエラー オプションをすべて有効にします。

<?component error="true" debug="true"?>
ヒント スクリプト コンポーネントを運用環境に移す前に、エラー レポートの機能をオフにしてください。

参 照

スクリプト コンポーネント ファイルの内容 | Script Component Wizard の使用 | 登録情報の作成 | スクリプト コンポーネント タイプ ライブラリの作成 | スクリプト コンポーネント ファイルと XML 適合性


スクリプト コンポーネント ファイルと XML 適合性

Windows®スクリプト コンポーネントは XML ファイルであり、ファイル内での要素は XML Version 1.0 の規約に従って定義します。XML 要素は表面上 HTML タグに似ていますが、XML は、より厳密に定義されたプロトコルです。たとえば、要素名の大文字と小文字は、区別して扱われます。

スクリプト コンポーネントの作成を簡単にするために、スクリプト コンポーネント ランタイム (Scrobj.dll) では、ファイル内に記述されている XML をどの程度厳密に解釈するかを指定できます。スクリプト コンポーネントの XML に対して、HTML のタグと同じ程度の緩やかな解釈を行うように指定することもできます。

スクリプト コンポーネント ファイルに対して XML 検査を指定し、スクリプト コンポーネント ファイルの XML が XML 標準に厳密に従っているかどうかをチェックすることもできます。スクリプト コンポーネントを編集するために将来 XML 編集ツールを使用する予定があれば、XML 検査を設定してください。

XML 検査を指定する場合は、スクリプト コンポーネント ファイルが次の規則に従っていることを確認してください。

  • 要素と属性の名前の大文字と小文字を区別する。要素と属性の名前は、internalName など、複数の名前を連結した名前を除いて、通常すべて小文字で記述します。XML 標準に厳密に従う XML ファイルでは、すべての名前が名前付け規則に正確に従っている必要があります。
  • 属性値をクォーテーションで囲む。属性の値は、シングル クォーテーションまたはダブル クォーテーションで囲む必要があります。たとえば、XML 検査を行わない場合は、<script> 要素内で language=JScript と指定できます。しかし、XML 規則に従うと、同じ属性は language="JScript" と指定する必要があります。
  • スクリプト要素内の予約文字を隠蔽する。スクリプトの要素には、< (より大きい)、> (より小さい)、& (アンパサンド)、および XML で予約されているその他の文字が、多数含まれています。XML 対応のファイルを作成する場合は、これらの予約文字が多数存在していても、XML パーサーが正常に動作することを確認する必要があります。この場合、エスケープ シーケンス (たとえば、"&lt;" で "<" を指定します) を使用してそれぞれの文字をマークしたり、スクリプトの要素全体を <![CDATA[ ...]]> セクションで囲んで隠蔽したりすることができます。XML 検査を行わない場合、スクリプト コンポーネントの XML パーサーは、既定で <script> 要素を隠蔽します。
    メモ 厳密な XML 解析を指定しない場合は、CDATA セクションをスクリプトに含めないでください。CDATA セクションが含まれていると、スクリプト コンポーネントを登録するときや、スクリプト コンポーネントのインスタンスを作成するとき、スクリプト コンポーネントを呼び出すときにエラーが発生します。

XML 標準の詳細については、XML specification Web サイトおよび Microsoft® XML Web サイトを参照してください。

XML 適合性を指定するには

  • ファイルの最初の要素として <?XML ?> 宣言を記述します。
    <?XML version="1.0" ?>
    メモ Script Component Wizard を使用してスクリプト コンポーネントを作成する場合は、<?XML ?> 宣言がファイルに追加されます。したがって、スクリプト コンポーネントの XML は厳密に解析されます。

<?XML ?> を指定しない場合、スクリプト コンポーネント ランタイムによる XML 検査は行われません。また、XML エディタを使用したファイルの編集ができなくなる可能性があります。

参 照

スクリプト コンポーネント ファイルの内容 | Script Component Wizard の使用 | スクリプト コンポーネント ファイルのエラー チェック


スクリプト コンポーネントの使用

Windows®スクリプト コンポーネントを作成すると、アプリケーション内でスクリプト コンポーネントを使用できます。スクリプト コンポーネントの使用方法は、他の COM コンポーネントと似ていますが、COM コンポーネントのインスタンスの作成方法は、ホスト アプリケーションによって多少異なります。

  • スクリプト コンポーネントの登録
    スクリプト コンポーネントの登録と登録の解除を行います。
  • アプリケーションでのスクリプト コンポーネントの使用
    ホスト アプリケーションでスクリプト コンポーネントのインスタンスを作成します。
  • ホスト アプリケーションでのスクリプト コンポーネント イベントの処理
    スクリプト コンポーネントのカスタム イベントの検出と応答を行います。


スクリプト コンポーネントを登録する

Windows® スクリプト コンポーネントを登録するには、スクリプト コンポーネント ランタイムの Scrobj.dll が利用可能であり、使用するコンピュータで登録されている必要があります。Scrobj.dll は、Microsoft® Scripting Technologies Web サイトからスクリプト コンポーネントのパッケージをインストールしたときに、コンピュータに自動的にロードされ、登録されます。

メモ DHTML Behavior を介して呼び出されるスクリプト コンポーネントを作成する場合、スクリプト コンポーネントを登録する必要はありません。これは、Microsoft® Internet Explorer 5.0 では、この種類のスクリプト コンポーネントを事前に登録しないで使用できるためです。

このトピックでは、次の事項について説明します。

  • スクリプト コンポーネントを登録する
  • リモートでインスタンスを作成するスクリプト コンポーネントを登録する
  • スクリプト コンポーネントの登録を解除する

スクリプト コンポーネントを登録する

さまざまなメソッドを使用して、スクリプト コンポーネントをローカルコンピュータに登録することができます。

スクリプト コンポーネントを登録するには

  • Windows エクスプローラに表示されたスクリプト コンポーネント ファイル (.wsc) を右ボタンでクリックし、[Register] をクリックします。

    または

  • スクリプト コンポーネントのパッケージに同梱されている新しいバージョンの Regsvr32.exe を使用し、次のコマンドを実行します。
    regsvr32 URL/component_name.wsc

    たとえば、MyComponent.wsc というスクリプト コンポーネントを登録するには、次のコマンドを実行します。

    regsvr32 file:\\myserver\MyComponent.wsc

    または

  • スクリプト コンポーネントのパッケージに同梱されている新しいバージョンの Regsvr32.exe がない場合は、既存の Regsvr32.exe を使用します。次の構文を使用して、スクリプト コンポーネント ランタイム DLL を登録します。
    regsvr32 scrobj.dll /n /i:URL/component_name.ext

    たとえば、MyComponent.wsc というスクリプト コンポーネントを登録するには、次のコマンドを実行します。

    regsvr32 scrobj.dll /n /i:http://myserver/MyComponent.wsc

リモートでインスタンスを作成するスクリプト コンポーネントを登録する

スクリプト コンポーネントのリモート インスタンスを作成する場合は、そのスクリプト コンポーネントがリモート コンピュータ上に登録されている必要があります。また、スクリプト コンポーネントのインスタンスを作成する各ローカル コンピュータに登録する必要もあります。ローカル コンピュータにも登録することで、DCOM は、リモート スクリプト コンポーネントを検索したり、そのインスタンスを作成したりするときの起点を、レジストリ内に持つことができます。

リモートでインスタンスを作成するスクリプト コンポーネントを登録するには

  1. リモートでインスタンスを作成するには、スクリプト コンポーネントのプログラム ID およびクラス ID を決定します。
    メモ スクリプト コンポーネントは、ローカル コンピュータとリモート コンピュータの両方で同じクラス ID を持つ必要があります。このため、スクリプト コンポーネントの <registration> 要素には、クラス ID を指定しなければなりません。
  2. 各ローカル コンピュータ上で、次のレジストリ エントリを作成します。
    HKEY_CLASSES_ROOT\componentProgID

    componentProgID は、インスタンスを作成するスクリプト コンポーネントのプログラム ID です。

  3. 新しいエントリで、CLSID キーを作成し、その値をスクリプト コンポーネントのクラス ID に設定します。クラス ID は、かっこで囲みます。
    ヒント 正しいレジストリ情報を作成する簡単な方法は、インスタンスを作成するサーバー上でスクリプト コンポーネントを登録することです。次に、Regedit.exe を使用して、HKEY_CLASSES_ROOT\componentProgID エントリに移動します。[レジストリ] メニューの [レジストリ ファイルの書き出し] をクリックし、.reg ファイルを作成します。このファイルは、ローカル コンピュータに配布できます。ユーザーは、このファイルを実行するだけで、適切なレジストリエントリを作成できます。

スクリプト コンポーネントの登録を解除する

使用しているコンピュータにスクリプト コンポーネントを登録しておく必要がない場合は、次の方法のうちどちらかを使用して、登録を解除します。

  • Windows エクスプローラに表示されたスクリプト コンポーネント ファイルを右ボタンでクリックし、[Unregister] をクリックします。
  • Regsvr32.exe に -u フラグを付けて実行します。

参 照

登録情報の作成 | スクリプト コンポーネント ファイルの内容 | アプリケーションでのスクリプト コンポーネントの使用


アプリケーションでのスクリプト コンポーネントの使用

Windows®スクリプト コンポーネントを作成した後は、Microsoft® Visual Basic®、C++、Microsoft® Internet Explorer などのホスト アプリケーションから呼び出すことで、COM コンポーネントと同じように使用できます。

メモ DHTML Behavior 用に作成されたスクリプト コンポーネントは、一般的な COM オブジェクトとは異なる方法でインスタンスが作成されます。詳細については、Microsoft Site Builder Network (SBN) Web サイトの「Using DHTML Behaviors」を参照してください。

ホスト アプリケーションや、使用するスクリプト コンポーネントの種類、スクリプト コンポーネントが配布される場所などに応じて、スクリプト コンポーネントのインスタンスを作成する方法はさまざまです。しかし、最も重要な要素は、スクリプト コンポーネントのインスタンスをローカル (アプリケーションと同じコンピュータ) に作成するか、リモート (アプリケーションとは異なるコンピュータ) に作成するかということです。

どちらの場合も、次の点に注意してください。スクリプト コンポーネントのインスタンスを作成し、そのインスタンスを使用しながら .wsc ファイルを変更しても、コンポーネントのインスタンスは更新されません。更新するには、スクリプト コンポーネントの新しいインスタンスを作成します。

使用できる正確なプロパティとメソッドは、<public> 要素およびスクリプト コンポーネント ファイル内のスクリプトによって定義されます。Visual Basic など、ステートメントの補完をサポートする環境で作業する場合、タイプ ライブラリを生成して使用していれば、スクリプト コンポーネントのプロパティおよびメソッドを参照することができます。詳細については、「スクリプト コンポーネント タイプ ライブラリの作成」を参照してください。

スクリプト コンポーネントのインスタンスの作成に失敗した場合、原因の多くは、スクリプト コンポーネント ファイル内の構文エラーと実行時エラーです。XML 要素 (<registration> 要素を含む) の解析エラーによって、インスタンスの作成が失敗することがあります。スクリプト コンポーネント ファイルを開発している場合は、「スクリプト コンポーネント ファイルのエラー チェック」で説明しているように、<?component?> 処理命令にエラー チェックのオプションを設定します。

ヒント スクリプト コンポーネントによって公開される COM インターフェイスを、ホスト アプリケーションから簡単に参照できるようにするには、スクリプト コンポーネント ランタイムを使用してタイプ ライブラリを生成します。このタイプ ライブラリには、スクリプト コンポーネントで利用できるプロパティ、メソッド、およびイベントについての情報が含まれています。詳細については、「スクリプト コンポーネント タイプ ライブラリの作成」を参照してください。

スクリプト コンポーネントのローカル インスタンスを作成する

スクリプト コンポーネントをホスト アプリケーションと同じコンピュータにインストールする場合は、「スクリプト コンポーネントの登録」で説明しているように、スクリプト コンポーネントをスクリプト コンポーネント自体のコンポーネントとして登録できます。登録すると、ホスト アプリケーションでオブジェクト インスタンスを作成する一般的な方法 (CreateObject 関数など) が使用できます。たとえば、プログラム ID が Component.MyComponent として登録されているスクリプト コンポーネントのインスタンスを Visual Basic で作成するには、次のステートメントを使用します。

Set oScriptlet = CreateObject("Component.MyComponent")
メモ ホスト アプリケーションが Visual Basic であり、スクリプト コンポーネントによって発生したイベントを処理する場合は、次のコードのように、WithEvents キーワードを含む Dim ステートメントで事前にオブジェクトをバインドする必要があります。
Dim WithEvents scMyScriptlet As MyScriptlet
Private Sub Command1_Click()
   Set scMyComponent=CreateObject("MyComponent")
End Sub
メモ 詳細については、「ホスト アプリケーションでのスクリプト コンポーネント イベントの処理」を参照してください。スクリプト コンポーネント イベント用のハンドラを記述しない場合は、参照する必要はありません。

Web ページ上であれば、<OBJECT> タグを使用して、スクリプト コンポーネントのインスタンスを作成できます。次のコードに示すように、スクリプト コンポーネントのクラス ID を調べて、その ID を <OBJECT> タグ内に含めます (スクリプト コンポーネントのクラス ID は、事前にわかっている必要があります)。

<OBJECT
   ID="oComponent"
   CLASSID="clsid:855c8606-49ba-11d2-a428-00c04f8ec80b">
</OBJECT>

スクリプト コンポーネントがローカル コンピュータに登録されていない場合は、スクリプト コンポーネント モニカを使用して、そのスクリプト コンポーネントのインスタンスを作成できます。モニカは、GetObject などの関数でサポートされています。スクリプト コンポーネント ランタイムの Scrobj.dll は、ローカル コンピュータに登録されている必要があります。

メモ GetObject 関数は、セキュリティ上の理由により、Microsoft® Internet Explorer 用のスクリプト コンポーネントでは、サポートされません。

たとえば、次のコードは、Visual Basic の GetObject 関数を呼び出して、未登録のスクリプト コンポーネントのインスタンスを作成します。

Set oComponent = GetObject("script:c:\COM\MyComponent.wsc")

モニカによって参照される .wsc ファイルに、2 つ以上のスクリプト コンポーネントがある場合は、ファイル名の後ろに区切り文字 (#) とスクリプト コンポーネントの名前を付けて、スクリプト コンポーネントのインスタンスを指定します。次のコードは、MyComponent.wsc ファイル内に含まれる "math" という ID を持つスクリプト コンポーネントのインスタンスを作成する例です。

Set oComponent = GetObject("script:c:\COM\MyComponent.wsc#math")

URL モニカを使用すると、Web サーバーなど、ほかのコンピュータ上にあるスクリプト コンポーネントのインスタンスを作成できるようになります。この場合、次のコードに示すように、完全な URL (HTTP プロトコルを使用した) を使用して、スクリプト コンポーネントの位置を指定します。

Set oComponent = GetObject("script:http://myserver/MyComponent.wsc")

Internet Explorer 5.0 は、スクリプト コンポーネントのインスタンスを作成するための DHTML Behavior 構文をサポートします。この構文は、オブジェクトのインスタンスを作成する一般的な構文とは多少異なり、安全性に欠けるシステム オブジェクトに対して、スクリプト コンポーネントがアクセスできないことを保証します。例については、Microsoft Site Builder Network (SBN) Web サイトの「Using DHTML Behaviors」を参照してください。

スクリプト コンポーネントのリモート インスタンスを作成する

スクリプト コンポーネントの <registration> 要素の remotable 属性が "true" に設定されている場合、分散 COM (DCOM) を使用して、その他のコンピュータからリモートでスクリプト コンポーネントのインスタンスを作成できます。

ローカルとリモートの両方のコンピュータには、基本的な DCOM がインストールされている必要があります。コンピュータ上で次のいずれかが動作している場合は、DCOM が正しく構成されています。

  • Windows NT 4.0。
  • Internet Explorer 4.0 を搭載している Windows 95。
  • OSR2 (OEM Service Release 2) 以降の Windows 95。詳細については、Microsoft® Web サイトの Windows 95 OSR2 のページを参照してください。
  • DCOM for Windows 95 Version 1.2 を搭載している Windows 95。詳細については、Microsoft® Web サイトの DCOM for Windows 95 のページを参照してください。

スクリプト コンポーネント自体は、次のように配布します。

  • ローカル コンピュータでは、スクリプト コンポーネントのインスタンスを作成するときに、スクリプト コンポーネント (.wsc ファイル) もスクリプト コンポーネント ランタイム (Scrobj.dll) も必要ありません。ただし、ローカルの Windows レジストリには、DCOM 用にリモート スクリプト コンポーネントへの参照が必要です。詳細については、「スクリプト コンポーネントの登録」を参照してください。
  • リモート コンピュータ上には、スクリプト コンポーネントとスクリプト コンポーネント ランタイムが必要です。いずれも登録する必要があります。

リモート スクリプト コンポーネントのインスタンスを作成すると、そのインスタンスは、ローカル オブジェクトのようにアプリケーション内で動作します。つまり、ローカル インスタンスのときと同じように、メソッドを呼び出したり、プロパティを取得して設定したりできます。一方、リモート スクリプト コンポーネントのスクリプトは、リモート マシンで動作し、そのマシンのリソースに (セキュリティなどの制限の範囲内で) アクセスします。ローカル マシンのホスト アプリケーションとリモート マシンのスクリプト コンポーネントの間の通信は、DCOM によって自動的かつ隠蔽された状態で処理されます。

スクリプト コンポーネントのリモート インスタンスを作成するには、CreateObject メソッドを呼び出し、引数としてリモート コンピュータの名前を渡します。

メモ CreateObject メソッドを使用して、リモート スクリプト コンポーネントのインスタンスを作成するには、Visual Basic Version 6.0 以降または VBScript Version 5.0 以降が必要です。

次の Visual Basic のコードは、"myserver" というコンピュータに、スクリプト コンポーネントのリモート インスタンスを作成する例です。

Set newS = CreateObject("Component.MyComponent", "myserver")
メモ 最初にスクリプト コンポーネントのリモート インスタンスを作成するときは、DCOM がコンピュータ間の通信を確立している間、多少の時間を要する場合があります。

参 照

登録情報の作成 | スクリプト コンポーネントの作成 | スクリプト コンポーネントのしくみ | スクリプト コンポーネントの紹介 | スクリプト コンポーネントの登録


ホスト アプリケーションでのスクリプト コンポーネント イベントの処理

多くのホスト アプリケーションでは、他のイベントと同じようにWindows®スクリプト コンポーネント イベントを受け取ることができます。しかし、ホスト アプリケーションによっては、スクリプト コンポーネント イベントを受け取るために、セットアップが必要なものもあります。

メモ Behavior スクリプト コンポーネントを作成する場合は、DHTML オブジェクト モデルを使用してイベントを公開します。詳細については、「Behavior スクリプト コンポーネントのカスタム イベントの公開」を参照してください。

たとえば、Visual Basic では、イベントを受け取るために事前バインディング (コンパイル時のバインディング) を使用します。事前バインディングを行うにはタイプ ライブラリが必要なので、スクリプト コンポーネント用のタイプ ライブラリを生成する必要があります。詳細については、「スクリプト コンポーネント タイプ ライブラリの作成」を参照してください。また、コンポーネントのオブジェクト変数を宣言する場合は、WithEvents キーワードを指定します (Dim ステートメントで使用するクラス名は、スクリプト コンポーネントの <component> 要素に割り当てた ID です)。

次のコードは、Visual Basic での例です。

Dim WithEvents Scriptlet1 as MyScriptlet
Set Scriptlet1 = CreateObject("MyScriptlet")
Sub Scriptlet1_namechanged
   MsgBox("name プロパティの値が更新されました。")
End Sub

参 照

イベントの公開


ASP スクリプト コンポーネントの実装

Windows® スクリプト コンポーネントを使用すると、Active Server Pages (ASP) の機能を組み込むことができます。ASP の機能をスクリプト コンポーネントに組み込むと、ASP ページから呼び出されるコンポーネントに、サーバー サイド スクリプトを分離することができ、ASP コードの再利用が簡単になります。たとえば、フォームを処理する ASP ページがいくつかあるとします。各 ASP ページに、すべてのフォーム処理のロジックを直接実装するよりも、すべての ASP ページから、フォーム処理のロジックを持つスクリプト コンポーネントを呼び出すように作成することができます。

ASP スクリプト コンポーネントを作成するには、「スクリプト コンポーネント ファイルの内容」に記述されているように、標準的な方法でスクリプト コンポーネントを作成します。<implements> 要素を使用して ASP インターフェイス ハンドラを実装し、<implements> 要素の type 属性を "ASP " に設定します。これにより、Response、Request、Server、Session および Application などの ASP オブジェクトへのアクセス手段が提供されます。ASP スクリプト コンポーネントでは、ASP ページ内に直接実装した場合と同じようにこれらのオブジェクトを使用できます。ASP インターフェイス ハンドラは、スクリプト コンポーネント ランタイム (Scrobj.dll) に組み込まれているので、外部インターフェイス ハンドラは必要ありません。

スクリプト コンポーネントが実行されるとき、スクリプト コンポーネントは、呼び出し元の ASP ページの名前空間と同じ名前空間を使用します。スクリプト コンポーネントは、スクリプト コンポーネント自体が呼び出し元の ASP ページにあるかのように、Request オブジェクトや Server オブジェクトにアクセスできます。スクリプト コンポーネントは、呼び出し元の ASP ページが使用しているのと同じ Session 変数や Application 変数にアクセスすることもできます。同様に、ASP スクリプト コンポーネントが Response オブジェクトのメソッドを呼び出した場合は、その結果を、呼び出し元のページで使用できます。たとえば、Response.Write を呼び出すと、その出力は呼び出し元の ASP ページに送られます。

次のコードは、プロパティとメソッドを公開する簡単な ASP スクリプト コンポーネントの例です。applicationVar1 プロパティは、Var1 と呼ばれる仮の Application 変数を利用できるようにします。AddDate メソッドは、呼び出し元の ASP ページに現在の日付を出力します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<component id="ASPScriptlet">
<registration progid="ASPScriptlet"/>

<public>
   <property name="applicationVar1"/>
   <method name="AddDate"/>
</public>

<implements type="ASP"/>
<script language="VBScript">
<![CDATA[
dim applicationVar1
applicationVar1 = Application("Var1")
Sub AddDate()
   Response.Write(Date)
End Sub
]]>
</script>
</component>
次のコードは、呼び出し元の ASP ページです。
<HTML>
<HEAD>
<TITLE>スクリプト コンポーネント ASP ハンドラのテスト</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H1>ASP ハンドラのテスト</H1>
<%Set wscASP = CreateObject("ASPScriptlet")%>
<P>The current date is <%= wscASP.AddDate()%></P>

<P>The value of the Application(Var1) variable is <%= wscASP.applicationVar1%></P>

</BODY>
</HTML>


DHTML Behavior スクリプト コンポーネントの実装

Windows® スクリプト コンポーネントでは、Microsoft® Internet Explorer 5.0 で利用可能な DHTML Behavior を実装するコンポーネントを作成するために、軽量でメンテナンスが容易な方法を提供します。スクリプト コンポーネントを使用すると、スクリプト開発者は Microsoft® Visual Basic® Scripting Edition (VBScript)、Microsoft® JScript® (ECMAScript)、または Microsoft® ActiveX® Scripting インターフェイスをサポートする任意のサード パーティのスクリプト言語を使って、ビヘイビアを実装することができます。

DHTML Behavior についての一般的な情報については、http://msdn.microsoft.com/workshop を参照してください。

Behavior スクリプト コンポーネントを作成すると、次のことができるようになります。

  • スクリプト コンポーネント内の関数をドキュメント内で発生するイベントにバインドすることにより、特定の要素や、DHTML document オブジェクト、DHTML window オブジェクトに対してビヘイビアを公開できます。
  • ビヘイビアが呼び出されたときにドキュメントに挿入される、HTML テキストを含むレイアウトを定義できます。
  • ページ内の要素のメンバ セットを拡張する、カスタム プロパティおよびカスタム メソッドを公開できます。
  • スクリプト コンポーネントからいつでも発生させることができるカスタム イベントを公開できます。たとえば、スクリプト コンポーネントでは、ページ上の DHTML 要素の内容が変更された直後に、カスタム イベントを発生させることができます。
  • ドキュメントがロードされたり、要素の内容が変更されたりしたときなど、特定の標準イベントに、スクリプト コンポーネントの関数をバインドできます。

このセクションでは、次の事項について説明します。

  • Behavior スクリプト コンポーネントの作成 Behavior スクリプト コンポーネント ファイルに含むことができる要素、ドキュメントと情報を共有する方法、Behavior スクリプト コンポーネントに適用する DHTML の機能、およびスクリプト コンポーネントを作成する際の注意事項について確認します。
  • Behavior スクリプト コンポーネントのプロパティとメソッドの公開 DHTML の要素として既に利用可能なプロパティとメソッドを拡張するプロパティやメソッドを作成します。
  • Behavior スクリプト コンポーネントのカスタム イベントの公開 ドキュメントに対してスクリプト コンポーネントのイベントを公開し、発生させます。
  • Behavior ハンドラ リファレンス Behavior スクリプト コンポーネントで使用する XML 要素、プロパティ、およびメソッドの一覧です。

参 照

DHTML Behavior の概要については、Microsoft Web サイトの Site Builder Network (SBN) に掲載されているトピック「DHTML Behavior」および「Using DHTML」を参照してください。


Behavior スクリプト コンポーネントの作成

Behavior スクリプト コンポーネントの作成は、Microsoft® Internet Explorer のイベントを、これらのイベントに応答して実行されるスクリプトにリンクさせるという点を除いて、他の種類のスクリプト コンポーネントの作成と似ています。

このトピックは、次のセクションに分かれています。

  • Behavior スクリプト コンポーネント ファイルの作成
  • DHTML オブジェクト モデルへのビヘイビアに関する拡張
  • スクリプト コンポーネント内でのイベント パラメータの取得
  • スコープの規則
  • タイミングの考察

Behavior スクリプト コンポーネントの作成

Behavior スクリプト コンポーネントには、Behavior インターフェイス ハンドラを指定する <implements> 要素が含まれています。<implements> 要素内では、次の要素を使用します。

  • <attach> 要素は、ドキュメントのイベントを、スクリプト コンポーネント内の別の <script> 要素で作成された関数にバインドします。
  • <layout> 要素は、ドキュメントに挿入される HTML テキストを定義します。
  • <event> 要素は、スクリプト コンポーネントにより発生するカスタム イベントを定義します。

Behavior スクリプト コンポーネントでは、ドキュメントの要素として既に利用可能なカスタム プロパティとカスタム メソッドを拡張するカスタム プロパティとカスタム メソッドを含むことができます。詳細については、「Behavior スクリプト コンポーネントのプロパティとメソッドの公開」を参照してください。

次のコードは、ページ内の要素の上をマウスが通り過ぎるたびに、その要素の色を変更する Behavior スクリプト コンポーネントの例です。このような機能を実現するために、この例では、要素の DHTML style プロパティを設定するスクリプト コンポーネント内の関数に、DHTML onmouseover イベントおよび onmouseout イベントをバインドします。また、DHTML window オブジェクトの onload イベントにバインドすることで、ドキュメントが初期化される際にドキュメントのリンクの色も設定します。

スクリプト コンポーネントは、スクリプトにイベントをバインドするだけでなく、このスクリプト コンポーネントにリンクされているドキュメント内の <H1> 要素にテキストを挿入します。最後に、onchange というイベントを公開し、発生させます。このイベントは、newvalue というカスタム プロパティを使用して、DHTML window オブジェクトの event オブジェクトを拡張しています。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<?XML version="1.0"?>
<component>
<implements type="Behavior">
   <comment>マウスがドキュメント内の要素上を移動するとき、
   do_nmousedown 関数および do_mouseout 関数が呼び出されます。
   </comment>

   <attach event="onmouseover" handler="do_onmouseover"/>
   <attach event="onmouseout" handler="do_onmouseout"/>

   <comment> ウィンドウの onload イベントが発生したとき、init 関数を呼び出します。
   </comment>

   <attach for="window" event="onload" handler="docinit"/>

   <comment> ドキュメント内に表示される HTML テキストを定義します。
</comment>

   <layout>
      <h1>This is the HTML to show in the element</h1>
   </layout>

   <comment> fireEvent メソッドにより、スクリプト コンポーネント内から
   発生させるカスタム イベントを定義します。</comment>

   <public>
      <event name="onchange"/>
   </public>

</implements>
<script language="JScript">
<![CDATA[
var normalColor, normalSpacing;
function do_onmouseover(){
   // 元の値を保存します。
   normalColor = style.color;
   normalSpacing= style.letterSpacing;
   style.color = "red";
   style.letterSpacing = 2;
   oEvent = createEventObject();
   oEvent.newcolor = "red";
   fireEvent("onchange",oEvent);
}
function do_onmouseout(){
   // 元の値にリセットします。
   style.color = normalColor;
   style.letterSpacing = normalSpacing;
}

function docinit(){
   document.linkColor = "red";
}
]]>
</script>
</component>

このコードについて、いくつかの点を指摘します。

  • イベント ハンドラにおける暗黙的な this ポインタは、スクリプト コンポーネントのプロシージャから、イベントが発生する要素ではなく、内部の関数を参照します。
  • HTML ページと同じように、スクリプト コンポーネント内の <script> にインライン スクリプトを置くことができます。この例では、グローバル変数の normalColor および normalSpacing が、インライン スクリプトで定義されています。
    メモ インライン スクリプトはビヘイビアが要素に適用される前でも実行されるため、インライン スクリプトで実行できるステートメントには制限があります。たとえば、例の中で同じビヘイビアが hiliteColor というプロパティを公開していれば、インライン スクリプトは、hiliteColor を直接参照できます (言い換えると、スクリプト コンポーネント名前空間に対して解決されます)。しかし、インライン スクリプトから、hiliteColor を Behavior.element.hiliteColor として参照するのは、この時点でビヘイビアが要素に適用されていないので違反です。詳細については、このトピックの後半にある「スコープの規則」および「タイミングの考察」を参照してください。

DHTML オブジェクト モデルへのビヘイビアに関する拡張

ビヘイビア用のサポートを追加するために、Microsoft® Internet Explorer 5.0 用 DHTML オブジェクト モデルに対して、次のような拡張が行われます。

  • カスケーディング スタイル シート (CSS) の behavior 属性は、ビヘイビアの位置を指定します。
  • DHTML の attachEvent メソッドおよび detachEvent メソッドを使用して、オブジェクト上でイベントが発生したときに呼び出される関数を指定すると、Behavior スクリプト コンポーネントは、ページからイベントの通知を受け取ることができます。
  • DHTML uniqueID プロパティによって、Behavior スクリプト コンポーネントが要素に ID を割り当てることができます。これは、スクリプト コンポーネントがページにコードを代入して、ビヘイビアの対象となる要素の ID を指定する必要がある場合に有効です。

スクリプト コンポーネント内でのイベント パラメータの取得

DHTML では、DHTML event オブジェクトにイベントの情報があります。event オブジェクトは、DHTML では、DHTML window オブジェクトを介してイベント ハンドラにアクセスできます。一方、Behavior スクリプト コンポーネントでは、イベント ハンドラへのパラメータとして渡されます。

次のコードは、計算機のスクリプト コンポーネントの一部で、doCalc というスクリプト コンポーネント関数にバインドしたキーボード イベントとマウス イベントの例です。doCalc 関数は、event オブジェクトを使用してイベントが発生した状態についての情報を取得します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<implements type="Behavior">
   <attach event="onclick" handler="doCalc"/>
   <attach event="onkeydown" handler="doCalc"/>
</implements>

<script language="jscript">
<![CDATA[
function doCalc(oEventParam){
   oElement = oEventParam.srcElement;
   if(oEventParam.type == "keydown"){
      sVal = KeyCodeToChar(oEventParam.keyCode);
   }
   else{
      if (oEventParam.srcElement.type != "button"){
         return;}
      sVal = stripBlanks(oEventParam.srcElement.value);
   }
}
// ここにその他のスクリプトを記述します。
]]>
</script>

スコープの規則

スクリプト コンポーネントを操作する場合、ビヘイビア、要素、ドキュメントの 3 つの名前空間を扱います。スコープの規則は、Behavior スクリプト コンポーネント内で名前の衝突が解決される順序を定義します。名前は、次の順序で解決されます。

名前は、スクリプト コンポーネント内の任意の場所にあるビヘイビアによって定義された名前に解決されます。それは、変数が、メソッド、イベント、ビヘイビアが定義されたプロパティのいずれかの名前です。

名前の解決が成功しない場合、要素に適用されるプロパティ、メソッド、またはイベントの名前に解決されます。

最終的には、ページ内の window オブジェクトに適用されるプロパティ、メソッド、またはイベントの名前に解決されます。

次の例では、前に示したスコープの規則に従って名前が解決される方法に注目してください。

  • normalColor スクリプトの最初でビヘイビアにより定義された変数に解決されます。
  • style ドキュメント内の要素の style プロパティに解決されます。
    <implements type="Behavior">
   <attach event="onmouseover" handler="do_onmouseover"/>
   <attach event="onmouseout "handler="do_onmouseout"/>
</implements>

<script language="JScript">
<![CDATA[
var normalColor, normalSpacing;
function event_onmouseover()
{
// オリジナルの値を保存します。
   normalColor = style.color;
   normalSpacing = style.letterSpacing;

   style.color = "red";
   style.letterSpacing = 2;
}
function event_onmouseout()
{
   // オリジナルの値をリセットします。
   style.color = normalColor;
   style.letterSpacing = normalSpacing;
}
]]>
</script>

タイミングの考察

ビヘイビアを作成するときは、いつビヘイビアが要素に適用されるかを知ることが重要です。スクリプトは、ビヘイビアが適用されるまで、ドキュメントに設定されるビヘイビアが定義されたプロパティの値にアクセスできません。

ビヘイビアは、HTML ドキュメントとは別のファイルにカプセル化されているので、ドキュメントのほかの部分とは別にダウンロードされます。ドキュメントとビヘイビアが解析され、ロードされると、ビヘイビアは、attachNotification メソッドで指定された関数をとおして進捗の通知を受け取ります。ビヘイビアは、現在 "contentChange" 通知と "documentReady" 通知を受け取ります。"contentChange" 通知は、ビヘイビアが結び付けられている要素の内容が解析されたときと、その後で要素の内容が変更されたときに送られます。"documentReady" 通知は、ドキュメントがダウンロードされ、解析されたときに送られます。

スクリプト コンポーネント ファイル内のインライン スクリプトは、ビヘイビアのインスタンスが作成されるとすぐに実行されるので、ドキュメントに設定されるビヘイビアが定義された属性およびプロパティの値は、インライン スクリプトからはアクセスできません。しかし、これらのプロパティは、最初の "contentChange" 通知が送られた直後から利用できます。

参 照

Behavior スクリプト コンポーネントのプロパティとメソッドの公開 | Behavior スクリプト コンポーネントのカスタム イベントの公開 | Behavior ハンドラ リファレンス


Behavior スクリプト コンポーネントのプロパティとメソッドの公開

Behavior スクリプト コンポーネントでは、オートメーション スクリプト コンポーネントに似た方法で、カスタム プロパティとカスタム メソッドを公開できます。Behavior スクリプト コンポーネントのプロパティおよびメソッドは、ページの要素に対して利用可能なプロパティとメソッドを拡張します。たとえば、要素の上をマウスが通り過ぎると、要素の色が変わるような Behavior スクリプト コンポーネントを作成することができます。スクリプト コンポーネント内でプロパティを定義して、ドキュメント内でカスタム プロパティ (hiliteColor などの名前を持つ) を利用できるようにします。このプロパティを使用して、Web ページの作者が、テキストを強調表示するときの色を設定します。

ビヘイビアでは、要素用として既に定義されている同じ名前のプロパティやメソッドを公開することによって、要素の既定のビヘイビアを定義し直すことができます。

プロパティとメソッドは、Behavior ハンドラを指定するための <implements> 要素とは別に、<public> 要素で定義されています。詳細については、「プロパティの公開」および「メソッドの公開」を参照してください。

プロパティを公開する

プロパティは、スクリプト コンポーネント内の <public> 要素で公開されます。次のコードは、カスタム プロパティの hiliteColor を公開する Behavior スクリプト コンポーネントの例です。プロパティの値が、ページで明示的に設定されていない場合は、既定の "red" に設定されます。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <property name="hiliteColor"/>
</public>

<implements type="Behavior">
   <attach for="window" event="onload" handler="event_onload">
</implements>

<script language="JScript">
<![CDATA[
   var hiliteColor;
   function event_onload(){
      // プロパティを初期化します。
      if (hiliteColor == null){
         hiliteColor = "red";}
   }
  // ここにさらにスクリプトを記述します。
]]>
</script>

メソッドを公開する

Behavior スクリプト コンポーネントでメソッドを公開する方法は、オートメーション スクリプト コンポーネントで公開する場合と同じです。詳細については、「メソッドの公開」を参照してください。Behavior スクリプト コンポーネントでは、スクリプト コンポーネントで公開されるメソッドが、ドキュメント内の要素に対して既に利用可能なメソッドを拡張します。

参 照

Behavior スクリプト コンポーネントのカスタム イベントの公開


Behavior スクリプト コンポーネントのカスタム イベントの公開

Behavior スクリプト コンポーネントでは、オートメーション スクリプト コンポーネントと同じように、スクリプト コンポーネントの内側で発生するカスタム イベントを公開することができます。また、Behavior スクリプト コンポーネントをドキュメント内で処理することもできます。イベントは、次のように <public> 要素で宣言されます。

<public>
   <event name="onResultChange" />
</public>

イベントは、スクリプト内の fireEvent メソッドを呼び出すことによって発生します。

<script language="JScript">
   // ここにほかのコードを記述します。
   fireEvent("onResultChange");
   // ここにほかのコードを記述します。
</script>

ビヘイビアでは、要素で既に定義されている同じ名前のイベントを公開することで、要素の既定のビヘイビアを定義し直すことができます。たとえば、onclick イベントを公開するビヘイビアでは、要素の既定の onclick イベントを定義し直すことができます。

カスタム イベントの情報を取得または設定する

スクリプト コンポーネントのカスタム イベントは、イベント固有の情報を保持している DHTML event オブジェクトにアクセスできます。このオブジェクトは、次の目的に使用できます。

  • イベントを呼び出したときに設定された既存の event オブジェクトのプロパティ (keyCode など) を変更する。
  • イベントにイベント情報を戻すために、event オブジェクトの新しいプロパティ (expando) を作成する。

スクリプト コンポーネントのコードで、event オブジェクトの新しいインスタンスを作成するために createEventObject メソッドを呼び出し、新しい event オブジェクトに 1 つ以上のプロパティを設定します。fireEvent メソッドを呼び出した場合は、イベント名と共に新しい event オブジェクトを渡すことができます。

新しい expando プロパティは、スクリプト内でプロパティの値を代入する際に、名前を付けるだけで作成できます。次のコードは、event オブジェクトに myprop という新しいプロパティを作成する例です。

oEvent = createEventObject();
oEvent.myprop = "a new value"
メモ expando プロパティを作成できるのは、Microsoft® JScript® (または JavaScript) を使用する場合だけです。この機能は、Microsoft® Visual Basic® Scripting Edition (VBScript) ではサポートされていません。

例

次のコードは、計算機のスクリプト コンポーネントからの抜粋です。この例では、onResultChange というカスタム イベントを定義します。このイベントは、計算結果が変更されると常にドキュメントに対して発生します。イベント固有の情報 (実際の計算結果) は、result という expando プロパティをとおして渡されます。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <event name="onResultChange" />
</public>

<implements type="Behavior">
   <attach event="onclick" handler="doCalc"/>
</implements>

<script language="JScript">
<![CDATA[
function doCalc()
{
   // ここに計算を実行するコードを記述します。
   // その結果は、変数 sResult に代入します。
   oEvent = createEventObject();
   oEvent.result = sResult;
   fireEvent("onResultChange",oEvent);
}
]]>
</script>

次のコードは、ページの表示内容を示します。onResultChange イベントを発生させると、DHTML window.event オブジェクトの expando プロパティの result から計算結果が抽出され、resultWindow <DIV> 要素に表示されます。

<HTML>
<HEAD>
<xml:namespace prefix="LK" />
<style>
   LK\:CALC {behavior:url(calc.wsc)}
</style>
<script language="JScript">
function showResults(){
   resultWindow.innerText=window.event.result;
}
</script>
</HEAD>

<LK:CALC id="myCalc" onResultChange="showResults()">
<TABLE>
<TR>
   <DIV ID=resultWindow
      STYLE="border:'.025cm solid gray'"
      ALIGN=RIGHT>0.</DIV>
</TR>
<TR>
   <TD><INPUT TYPE=BUTTON VALUE=" 0 "></TD>
   <TD><INPUT TYPE=BUTTON VALUE="+/-"></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" . "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" + "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" = "></TD>
<TR>
</TABLE>
</LK:CALC>
</HTML>

参 照

Behavior スクリプト コンポーネントのプロパティとメソッドの公開


スクリプト コンポーネント リファレンス

Windows® スクリプト コンポーネント ファイルを作成する場合、登録情報、スクリプト、スクリプト コンポーネントのコードで参照するオブジェクトなど、スクリプト コンポーネントの各部分を XML 要素を使って定義します。メソッドを呼び出してスクリプト コンポーネントのタスクを実行させることもできます。次の表は、使用可能な XML の要素とメソッドです。

メモ Behavior ハンドラなどの特定のハンドラは、追加の XML の要素、メソッド、および他のメンバも公開します。詳細については、特定のハンドラのドキュメントを参照してください。

XML 要素

  • <?component?>
  • <?XML ?>
  • <comment>
  • <component>
  • <event>
  • <implements>
  • <method>
  • <object>
  • <package>
  • <property>
  • <public>
  • <reference>
  • <registration>
  • <resource>
  • <script>

メソッドと関数

  • createComponent
  • fireEvent
  • getResource


<?component?>

エラー処理の属性を指定します。

<?component error="flag" debug="flag" ?>

値

flag
ブール値 (Boolean) です。真 (true) または偽 (false)、1 または 0、yes または no のいずれかを指定します。すべての属性の既定値は偽 (false) です。

解説

スクリプト コンポーネントは、COM コンポーネントとして使用されるため、実行時にエラーがあっても通知されないのが一般的です。ただし、スクリプト コンポーネント ファイルの開発中には、ファイル内のエラーを通知させる方が便利です。次の種類のエラー通知を指定できます。

  • error 真 (true) に設定すると、スクリプト コンポーネント ファイルの構文または実行時のエラーについてのエラー メッセージが表示されます。
  • debug 真 (true) に設定すると、デバッグが有効になります。デバッグが無効の場合は、スクリプト コンポーネント用のスクリプト デバッガを起動することができません。

例

<?component error="true" debug="true"?>

参 照

スクリプト コンポーネント ファイルのエラー チェック | スクリプト コンポーネント ファイルの内容


<?XML ?>

ファイルが XML として解析されることを示します。

<?XML version="version" standalone="DTDflag" encoding="encname" ?>

値

version
ファイルの XML レベルを n.n 形式の文字列で指定します。値 1.0 を使用します。
DTDflag
省略可能です。外部 Document Type Definition (DTD) への参照が XML ファイルに含まれているかどうかを示すブール値 (Boolean) を指定します。スクリプト コンポーネント XML ファイルには、このような参照が含まれていないので、この属性の値は常に "yes" です。
encname
省略可能です。XML ドキュメントで使用される文字セットのエンコーディングを表す文字列を指定します。Microsoft® Internet Explorer でサポートされているどの文字セットも、この文字列に入れることができます。

解説

この宣言は、ファイル内の最初の要素 (空白も含む) でなければなりません。

この宣言が記述されていると、スクリプト コンパイラでは厳密な XML モードが採用されます。このモードでは、要素の種類の大文字と小文字、属性の名前の大文字と小文字が区別されます。また、属性の値はシングル クォーテーション (') かダブル クォーテーション (") で囲まれている必要があり、すべての要素について解析が行われます。この宣言がない場合は、コンパイラによる構文解析が緩やかになります。

一般的に、この宣言を使用して XML の規約に従う必要があるのは、XML 対応エディタでスクリプト コンポーネント ファイルを編集する場合です。

例

<?XML version="1.0" standalone="yes" encoding="UTF-16" ?>

参 照

スクリプト コンポーネント ファイルと XML 適合性


<comment> 要素

スクリプト ファイル内でコードとして解析されないようにテキストをマークします。

<comment>
   ここにテキストを記述します。
</comment>

解説

<comment> 要素は、ほかの XML 要素の内側で使用します。マークアップやデータではなく、文書化など、プログラムの実行以外の目的で記述するテキストを囲みます。

例

次のコードは、<public> 要素の内側にある <comment> 要素の例です。

<public>
   <comment>
      random メソッドと uppercaseNameプロパティで
      オートメーション コンポーネントを実装します。
   </comment>
   <method name="random" internalName="getRandomNumber"/>
   <property name="uppercaseName">
      <get internalName="get_ucname"/>
      <put internalName="put_ucname"/>
   </property>
</public>

参 照

スクリプト コンポーネント ファイルの内容


createComponent 関数

同じパッケージ (.wsc ファイル) に含まれている別のスクリプト コンポーネントへの参照を返します。

value = createComponent(componentID)

値

componentID
インスタンスを作成するスクリプト コンポーネントの一意の識別子を指定します。

解説

createComponent メソッドを呼び出すことにより、同じファイルにある別のスクリプト コンポーネントの機能を組み込むことができます。詳細については、「同じパッケージ内の別のスクリプト コンポーネントの参照」を参照してください。

例

次のコードは、同じパッケージ内にスクリプト コンポーネントが 2 つある例です。1 番目のスクリプト コンポーネントに定義されている math メソッドが呼び出されると、1 番目のスクリプト コンポーネントは 2 番目のスクリプト コンポーネントを呼び出します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<package>
<component id="component1">
<registration progid="component.FrontEnd"/>
<public>
   <method name="math"/>
</public>
<script language="JScript">
<![CDATA[
function math(){
   return createComponent("component2")
}
]]>
</script>
</component>

<component id="component2">
<registration progid="component.Math"/>
<public>
   <method name="add"/>
</public>
<script language="JScript">
<![CDATA[
function add(n1, n2){
   return n1+n2;
}
]]>
</script>
</component>
</package>

このパッケージは、登録後、次のように使用できます。

set o1 = CreateObject("component.FrontEnd")
Set o2 = o1.math()
msgbox(o2.add(4,5))

参 照

同じパッケージ内の別のスクリプト コンポーネントの参照


<event> 要素

スクリプト コンポーネントから発生させるカスタム イベントの名前を宣言します。

<event name="name" dispid="dispid"/>

値

name
公開されているイベントの名前を指定します。
dispid
省略可能です。イベントのディスパッチ ID を数値で指定します。ディスパッチ ID は、コンポーネントのタイプ ライブラリにコンパイルされ、ホスト アプリケーションによってイベントにバインドされます。ディスパッチ ID を指定しない場合は、タイプ ライブラリの作成時に自動的に割り当てられます。ディスパッチ ID を独自に指定すると、タイプ ライブラリを再作成した場合でも、イベントのディスパッチ ID を常に同じ値に保つことができます。また、COM の規約で使われるような特定のディスパッチ ID に、作成したイベントを対応付けることもできます。詳細については、「イベントの公開」を参照してください。

解説

イベントを発生させるには、fireEvent メソッドを使用します。

例

次のコードは、namechanged イベントと querydone イベントを定義し、namechanged イベントを発生させる例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <property name="name">
      <get/>
      <put/>
   </property>
   <event name="namechanged"/>
   <event name="querydone" dispid="22"/>
<public>

<script language="VBScript">
<![CDATA[
var gName
Sub get_lowercaseName()
   get_lowercaseName = name
End Sub

Sub put_lowercaseName(newLCName)
   gName = newLCName
   fireEvent("namechanged")
End Sub
   ]]>
</script>

参 照

<method> 要素 | <property> 要素 | イベントの公開 | メソッドの公開 | プロパティの公開 | fireEvent メソッド


fireEvent メソッド (Windows Script Components)

Windows スクリプト コンポーネント

fireEvent メソッド

カスタム イベントの通知をスクリプト コンポーネントからホスト アプリケーションに送信します。

fireEvent(eventName[,...])

値

eventName
<event> 要素で定義されているイベントの名前を指定します。

解説

イベントは、<public> 要素の中で宣言されている場合にのみ発生させることができます。

メモ Behavior ハンドラが公開する fireEvent メソッドは、オートメーション ハンドラの fireEvent メソッドに似ていますが、前者のメソッドが event オブジェクトをサポートする点で異なります。詳細については、「Behavior スクリプト コンポーネントのカスタム イベントの公開」を参照してください。

例

次のコードは、namechanged イベントを定義し、発生させる例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <property name="name">
      <get/>
      <put/>
   </property>
   <event name="namechanged">
</public>

<script language="VBScript">
<![CDATA[
var name
Sub get_lowercaseName()
   get_lowercaseName = name
End Sub

Sub put_lowercaseName(newLCName)
   name = newLCName
   fireEvent("namechanged")
End Sub
]]>
</script>

参 照

<event> 要素 | イベントの公開 | fireEvent (Behavior)


getResource 関数

<resource> 要素で定義されているリソースの値を取得します。

value = getResource(resourceID)

値

resourceID
スクリプト コンポーネント内のリソースに対する一意の識別子を指定します。

解説

<resource> 要素を使用すると、スクリプト コンポーネント内の文字列や数値をスクリプトと区別できます。たとえば、<resource> 要素は、ほかの言語にローカライズされる可能性のある文字列を保持するために使用されます。スクリプト コンポーネントのスクリプトで getResource 関数を使用すると、<resource> 要素の内容を抽出することができます。

例

次のコードは、errNonNumeric というリソースを定義し、スクリプトで使用する例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <method name="random" internalName="getRandomNumber"/>
</public>
<resource id="errNonNumeric">Non-numeric value passed</resource>

<script language="VBScript">
<![CDATA[
Function getRandomNumber(upperBound)
   If IsNumeric(upperBound) Then
      getRandomNumber = Cint(upperBound * Rnd + 1)
   Else
      getRandomNumber=getResource("errNonNumeric")
   End If
End Function
]]>
</script>

参 照

ほかのコンポーネントの参照


<implements> 要素

スクリプト コンポーネントに対して、追加の COM インターフェイス ハンドラを指定します。

<implements type="COMHandlerName" [id="internalName"] [default=fAssumed]>
   ここにハンドラ固有の情報を記述します。
</implements>

値

COMHandlerName
参照するインターフェイス ハンドラの名前を指定します。通常、インターフェイス ハンドラは DLL として実装されます。DLL は、スクリプト コンポーネント用の運用環境で使用可能であり、登録されていることを確認する必要があります。オートメーション ハンドラや ASP ハンドラなど、ハンドラによってはスクリプト コンポーネント ランタイム (Scrobj.dll) に組み込まれているものもあります。使用できるインターフェイス ハンドラの例を、次に示します。
インターフェイス ハンドラ | 内容 | 実装方法
ASP | スクリプト コンポーネントから、Microsoft Internet Information Server (IIS) の Active Server Pages (ASP) オブジェクト モデルにアクセスできるようにします。 | Scrobj.dll に組み込まれています。
DHTML ビヘイビア | Behavior スクリプト コンポーネントに使用してページと通信し、イベントを発生させたり、DHTML オブジェクト モデルにアクセスしたりできるようにします。 | Scrobj.dll に組み込まれています。
internalName
省略可能です。スクリプト内でハンドラを参照するための名前を指定します。既定では、プロパティ、メソッド、イベント、およびスクリプトのほかのメンバを、グローバルな名前空間で使用できます。ただし、<implements> 要素どうしでメンバの名前が競合する場合は、次の例のように、メンバが属している <implements> 要素の ID を、メンバの名前の前に記述すると区別することができます。
<implements type="Behavior" id="sctBehavior">
   [...]
</implements>

[...]

<script language="JScript">
   // [...]
   sctBehavior.fireEvent("onResultChange",oEvent);
</script>
fAssumed
省略可能です。スクリプト内では internalName で参照されることを示すブール型 (Boolean) のフラグです。この属性の既定値は真 (true) で、ハンドラが公開するオブジェクト モデルのメンバは、グローバルなスクリプト名前空間に追加されます。また、これらのメンバには、制限なくアクセスすることができます。この属性を指定する必要があるのは、特定の <implements> 要素のメンバを隠蔽するために偽 (false) に設定する場合だけです。

解説

インターフェイス ハンドラは、スクリプト コンポーネント ランタイムを拡張します。インターフェイス ハンドラは、特定の COM インターフェイスを実装しているコンパイル済みのコンポーネントで、一般的には C++ で記述されています。

スクリプト コンポーネントは、既定で COM オートメーション インターフェイス (具体的には IDispatchEx COM インターフェイス) を実装しています。オートメーション オブジェクトのプロパティ、メソッド、およびイベントは、スクリプト コンポーネントの <public> 要素で定義されます。オートメーション ハンドラは既定で実装されているので、<implements> 要素を使って実装する必要はありません。

<implements> 要素を含むことによって、スクリプト コンポーネントは追加の COM インターフェイスも実装できます。<implements> 要素の内部には、実装するインターフェイス固有の情報を指定します。それぞれのインターフェイス ハンドラには、異なった情報が必要です。たとえば、Behavior スクリプト コンポーネントでは、DHTML Behavior インターフェイスに固有の <attach> 要素と <layout> 要素を指定できます。

例

<implements type="Behavior">
   <event name="onResultChange" />
</implements>

参 照

スクリプト コンポーネントのしくみ | スクリプト コンポーネント ファイルの内容


<method> 要素

メソッドを宣言します。

<method name="methodName" internalName="functionName" dispid=dispID>
   [<parameter name="parameterID"/>]
</method>

値

methodName
公開するメソッドの名前を指定します。
functionName
省略可能です。メソッドを実装するスクリプト コンポーネント ファイル内のプロシージャ (関数またはサブルーチン) の名前を指定します。内部名を指定しない場合は、methodName が使用されます。
ヒント XML の場合、要素を /> で閉じると、<method> 要素のように中身のない要素を実装できます。
dispID
省略可能です。メソッドの COM ディスパッチ ID を指定します。ディスパッチ ID を指定しない場合は、dispid が自動的に生成されます。dispid を 0 に設定した場合、メソッドはスクリプト コンポーネントの既定のメソッドになります。dispid の詳細については、「イベントの公開」を参照してください。
parameterID
メソッドに対してパラメータを明示的に宣言した場合、パラメータの名前が識別されます。

解説

メソッドは、個別の <script> 要素内のプロシージャ (関数またはサブルーチン) として実装されます。<method> 要素は、メソッドの名前とそのメソッドを実装するためのプロシージャを対応付けます。

独自に作成したメソッドに対してパラメータを宣言することもできます。パラメータを宣言することは必須ではありませんが、宣言しておくと、スクリプト コンポーネントのタイプ ライブラリを生成した際に、パラメータの情報が公開されます。詳細については、「スクリプト コンポーネント タイプ ライブラリの作成」を参照してください。

例

次のコードでは、2 つのメソッド (factorial と random) を定義する例です。random メソッドは、メソッドのパラメータの定義を含み、getRandomNumber という関数にバインドします。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <method name="factorial"/>
   <method name="random" internalName="getRandomNumber">
      <parameter name="upperBound">
      <parameter name="seed">
   </method>
</public>

<script language="VBScript">
<![CDATA[
   Function factorial(n)
      If isNumeric(n) Then
         If n <= 1 Then
            factorial = 1
         Else
            factorial = n*factorial(n-1)
         End If
      Else
         factorial = -2   ' エラー コード
      End If
   End Function

   Function getRandomNumber(upperBound, seed)
      upperBound = CInt(upperBound)
      Randomize
      getRandomNumber = Cint(upperBound * Rnd(seed) + 1)
   End Function
]]>
</script>

参 照

<event> 要素 | <property> 要素 | イベントの公開 | メソッドの公開 | プロパティの公開


<object> 要素 (Windows Script Components)

Windows スクリプト コンポーネント

<object> 要素

スクリプトで参照できるオブジェクトを定義します。

<object id="objID" [classid="clsid:GUID" | progid="progID"] events="true|false"/>

値

objID
スクリプト内でオブジェクトを参照するときの名前です。オブジェクト ID の値は、必ず文字で始めて、その後には文字、数字、およびアンダースコア (_) を指定することができます。オブジェクト ID は、スクリプト コンポーネントのスコープ全体で一意になるようにします。オブジェクト ID に CObj という名前を指定すると、次のようにオブジェクトをスクリプトで参照できます。
x = CObj.Prop1
GUID
省略可能です。登録されたオブジェクトのクラス ID (GUID) への参照を指定します。"clsid:"の後に、中かっこなしでクラス ID を指定します。classid 属性または progid 属性のどちらかを指定する必要があります。クラス ID の例を示します。次に例を示します。
classid="clsid:2154c700-9253-11d1-a3ac-0aa0044eb5f"
progID
省略可能です。オブジェクトのプログラム ID を指定します。クラス ID の代わりに指定できます。classid 属性または progid 属性のどちらかを指定する必要があります。
events
省略可能です。オブジェクトからイベントをフックできる属性です。既定では、events は "false" に設定されています。"true" に設定されている場合、オブジェクトが発生するイベントに接続することができます。ハンドルされる各イベントに対してイベント ハンドラを追加する必要があります。

解説

<object> 要素は、CreateObject() などの関数を使うことなく、スクリプト コンポーネントに記述するオブジェクトをグローバルに公開する方法を提供します。<object> 要素を使用すると、オブジェクトがグローバル スコープで使用できるようになり、オブジェクトのメンバに関するステートメントを、スクリプト作成ツールで補完できるようになります。

例

次のコードは、ADODB.Connection オブジェクトに対するオブジェクト参照を作成する <object> 要素の例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<registration progid="ADOScriptlet"/>
<object id="cnn" progid="ADODB.Connection"/>
<public>
   <property name="cnnState"/>
   <method name="openconnection"/>
</public>

<script language="VBScript">
<![CDATA[
Dim cnnState
Function openconnection()
   cnn.ConnectionString =
      "driver={SQL Server};server=myserver;uid=sa;database=pubs"
   cnn.Open
   If cnn.State = 1 Then
      cnnState = "open"
      cnn.Close
   Else
      cnnState = "closed"
   End If
End Function
]]>
</script>

参 照

スクリプト コンポーネント ファイルの内容


<package> Element 要素 (Windows Script Components)

Windows スクリプト コンポーネント

<package> 要素

複数のスクリプト コンポーネントの定義をまとめます。

<package>
   1 つ以上のスクリプト コンポーネントを記述します。
</package>

解説

.wsc ファイルに含まれているスクリプト コンポーネントの定義が 1 つだけの場合、<package> 要素は省略可能です。

例

<package>
<component id="MyScriptlet">
   (ここにスクリプト コンポーネントの情報を記述します)
</component>

<component id="MyOtherScriptlet">
   (ここにスクリプト コンポーネントの情報を記述します)
</component>
</package>

参 照

スクリプト コンポーネント ファイルの内容


<property> 要素

プロパティを宣言します。

<property name="propertyName" [internalName="propertyVariable"] />

または

<property name="propertyName">
   <get [internalName="getFunctionName"] />
   <put [internalName="putFunctionName"] />
</property>

値

propertyName
公開するプロパティの名前を指定します。internalName 属性を指定しない場合は、プロパティの値を保持するために使用されるグローバル変数の名前と同じ名前にする必要があります。
propertyVariable
省略可能です。スクリプトレット ファイルの <script> 要素に含まれるグローバル変数の名前を指定します。この変数は、propertyName の値を保持します。internalName 属性を指定しない場合、プロパティの値は propertyName と同じ名前の変数になります。internalName 属性を指定すると、プロパティの名前とは異なる名前を、そのプロパティに対応するグローバル変数に使用できます。
getFunctionName
省略可能です。プロパティの値を読み取るために使用するプロシージャの名前を指定します。<get> 要素を指定して <put> 要素を指定しない場合、プロパティは読み取り専用になります。<get> 要素を指定して internalName 属性を指定しない場合、プロパティの値を読み取るメソッドには、プロパティの名前の前に get_ を付けた名前を指定する必要があります。たとえば、get_lastname と指定します。
putFunctionName
省略可能です。プロパティの値を書き込むために使用するプロシージャの名前を指定します。<put> 要素を指定して <get> 要素を指定しない場合、プロパティは書き込み専用になります。<put> 要素を指定して internalName 属性を指定しない場合、プロパティの値を読み取るメソッドには、プロパティの名前の前に put_ を付けた名前を指定する必要があります。たとえば、put_lastname と指定します。
ヒント XML の場合、要素を /> で閉じると、<property> 要素のように中身がない要素を実装できます。

解説

プロパティは、単純な値として公開できます。この場合のプロパティは、スクリプト コンポーネント ファイル内でグローバル変数として扱われます。

プロシージャ (関数またはサブルーチン) としてプロパティを実装することもできます。これにより、プロパティの値を計算したり、プロパティを読み取り専用、書き込み専用、読み書き可能のいずれかに制御したりできます。この方法では、プロパティは別の <script> 要素のプロシージャ (関数またはサブルーチン) として実装されます。<property> 要素は、プロパティの名前とそのプロパティを実装するためのプロシージャを対応付けます。プロシージャの名前は、<property> 要素で指定した内部名と一致する必要があります。

putFunctionName は、呼び出されると、プロパティを設定する値が格納された引数を 1 つ受け取ります。

上記の標準的な構文のほかに簡単な表記法も使用できます。この表記法を使用すれば、子タグを使って情報を追加する必要はありません。たとえば、プロパティと同じ名前の "get" および "put" アクセサでプロパティを宣言する場合は、以下の構文を使用することができます。

<property name="myproperty" get put/>

機能的には以下と同じです。

<property name="myproperty">
   <get/>
   <put/>
</property>

既定値とは異なる名前をアクセサに対して明示的に指定するには、以下の構文を使用できます。

<property name="myproperty" get="testget" put="testput"/>

既定のプロパティを指定するには、要素の中に dispid="0" と指定します。詳細については、「プロパティの公開」を参照してください。

例

次のコードは、4 つのプロパティ (sname、age、dateOfBirth、mstatus) を定義する例です。sname プロパティは、単純な値です。age プロパティは読み取り専用で、関数 readAge を使って実装されます。dateOfBirth プロパティは読み書き可能で、readDOB と writeDOB を使って実装されます。最後に、mstatus プロパティは、既定の関数である get_mstatus と put_mstatus を使って実装されます。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <property name="sname"/>
   <property name="age">
      <get internalName="readAge"/>
   </property>
   <property name="dateOfBirth">
      <get internalName="readDOB"/>
      <put internalName="writeDOB"/>
   </property>
   <property name="mstatus">
      <get/>
      <put/>
   </property>
</public>

<script language="VBScript">
<![CDATA[
Dim sname   ' 読み書き可能な sname プロパティ (関数なし)。
Dim gDOB   ' 誕生日を格納するグローバル変数。
Dim gMStatus   ' 結婚歴を格納するグローバル変数。

Function readDOB()
   ' dateOfBirth プロパティの値を取得します。
   readDOB = gDOB
End Function

Function writeDOB(newDOB)
   ' dateOfBirth プロパティの値を設定します。
   If isDate(gDOB) Then
      ' エラーを確認します。
      gDOB = newDOB
   End If
End Function

Function readAge()
   ' 読み取り専用の age プロパティを計算します。
   If isDate(gDOB) Then
      dobM = DatePart("m", gDOB)
      dobD = DatePart("d", gDOB)
      dobY = DatePart("yyyy", gDOB)
      todayY = DatePart("yyyy", Date)
      age = todayY - dobY

      ' 今年の誕生日が過ぎていない場合は調整します。
      bday = DateValue(dobM & "/" & dobD & "/" & todayY)
      If DateDiff("d", bday, DateValue(Date)) < 0 Then
         age = age - 1
      End If
      readAge = age
   End If
End Function

Function get_mstatus()
   ' Reads value of mstatus property.
   get_mstatus = gMStatus
End Function

Function put_mstatus(s)
   ' mstatus プロパティの値を書き込みます。
   If s = "M" Or s = "S" Then
      gMStatus = s
   Else
      gMStatus = "?"
   End If
End Function
]]>
</script>

参 照

<event> 要素 | <method> 要素 | イベントの公開 | メソッドの公開 | プロパティの公開


<public> 要素

スクリプト コンポーネントのプロパティ、メソッド、およびイベントの宣言を囲みます。

<public>
   <property name="pname"/>
   <method name="mname"/>
   <event name="ename"/>
</public>

参 照

<event> 要素 | <method> 要素 | <property> 要素 | イベントの公開 | メソッドの公開 | プロパティの公開


<reference> 要素 (Windows Script Components)

Windows スクリプト コンポーネント

<reference> 要素

外部タイプ ライブラリへの参照をインクルードします。

<reference [object="progID" |guid="typelibGUID"] [version="version"]>

値

progID
タイプ ライブラリを導出できるプログラム ID を指定します。ADO.Recordset.2.0 のように、バージョン番号を入れることができます。タイプ ライブラリの明示的なプログラム ID、またはタイプ ライブラリを組み込む実行可能ファイル ( .DLL など) のプログラム ID を指定できます。object 属性を使用する場合は、プログラム ID からバージョンを推定できるので、version 属性を指定する必要はありません。

object 属性を指定しない場合は、guid 属性も指定できません。

typelibGUID
参照に使用するタイプ ライブラリの GUID を指定します。guid 属性を指定しない場合は、object 属性も指定できません。
version
省略可能です。使用するタイプ ライブラリのバージョン番号を指定します。形式は、<major version>[.<minor version>] です。バージョン番号を指定しない場合の既定値は、1.0 です。object 属性を使用してタイプ ライブラリを指定し、version 属性を指定しない場合は、指定されたプログラム ID のレジストリ キーからバージョン番号が検索されます。バージョン番号が見つからない場合は、既定値の 1.0 が使用されます。

解説

スクリプト コンポーネントでタイプ ライブラリを参照すると、タイプ ライブラリで定義された定数をスクリプト内で使用できます。<reference> 要素は、特定のプログラム ID またはタイプ ライブラリ名のどちらかに関連付けられたタイプ ライブラリを検索し、使用できるようにします。タイプ ライブラリ情報は、tlb ファイル、olb ファイル、dll ファイルのいずれかで使用できます。

<reference> 要素は、<component> 要素の内側に記述する必要があります。パッケージに複数のスクリプト コンポーネントがある場合は、タイプ ライブラリが宣言されている <component> 要素を持つスクリプト コンポーネントに対してのみ、タイプ ライブラリを適用できます。

例

次のコードは、MSAD015.DLL ファイルに含まれる ADO のタイプ ライブラリを参照することにより、adStateOpen などの ADO 定数をスクリプトで使用できるようにする例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<reference object="ADODB.Connection.2.0"/>
<registration progid="ADOScriptlet"/>
<public>
   <property name="cnnstate"/>
   <method name="openConnection"/>
   <method name="closeConnection"/>
</public>

<script language="VBScript">
<![CDATA[
Dim cnn
Dim cnnState
Function openConnection()
   Set cnn = CreateObject("ADODB.Connection")
   cnn.ConnectionString =
      "driver={SQL Server};server=myserver;uid=sa;database=pubs"
   cnn.Open
   If cnn.State = adStateOpen Then
      cnnState = "open"
   Else
      cnnState = "closed"
   End If
End Function

Function closeConnection()
   cnn.Close
   cnnState = "closed"
End Function
]]>
</script>

参 照

ほかのコンポーネントの参照


<registration> 要素

スクリプト コンポーネントを COM コンポーネントとして登録するために使用される情報を定義します。

<registration progid="progID" classid="GUID" description="description"
   version="version" [remotable=remoteFlag]/>

または

<registration progid="progID" classid="GUID" description="description"
      version="version" [remotable=remoteFlag]>
   <script>
      (登録および登録解除のスクリプト)
   </script>
</registration>

値

progID
省略可能です。スクリプト コンポーネントのインスタンスを作成するときに、プログラマがスクリプト コンポーネントを参照するために使用するテキスト名を指定します。たとえば、スクリプト コンポーネントのプログラム ID が Component.MyComponent である場合、Microsoft® Visual Basic では、次のようなステートメントを使ってそのスクリプト コンポーネントのインスタンスを作成します。
Set Component = CreateObject("Component.MyComponent")
メモ progid 属性は省略可能ですが、progid 属性と classid 属性のどちらかを指定する必要があります。両方の属性を指定することもできます。progid 属性だけを指定すると、自動的にクラス ID が生成されます。クラス ID だけを作成した場合、progid 属性は登録されず、そのオブジェクトは、クラス ID を直接参照することによってのみ作成できるようになります。
GUID
省略可能です。Uuidgen.exe などのクラス ID 生成プログラムを使って生成した GUID を指定します。ユーザーがクラス ID を指定しない場合は、登録プログラムがスクリプト コンポーネントにクラス ID を割り当てます。
description
省略可能です。スクリプト コンポーネントの説明文を記述します。レジストリに保存され、Visual Basic のオブジェクト ブラウザなど、特定のツールで使用されます。
version
省略可能です。数値でバージョン番号を指定します。アプリケーションからバージョン固有の名前が要求された場合、プログラム ID の後にピリオドとバージョン番号が追加されて返されます。たとえば、MyComponent.1 となります。指定できるのは数だけで、小数点は使用できません。
メモ <registration> の属性は、<registration> 要素の中で任意の順序で指定できます。
remoteFlag
省略可能です。DCOM を使用して、スクリプトのインスタンスをリモートで作成できるかどうかを示すブール値 (Boolean) を指定します。詳細については、トピック「アプリケーションでのスクリプト コンポーネントの使用」の「スクリプト コンポーネントのリモート インスタンスを作成する」を参照してください。

解説

作成したスクリプトを登録するには、Regsvr32.exe などのプログラムを使用します。このプログラムは、<registration> 要素の情報を読み込み、コンピュータの Windows レジストリに書き込みます。たとえば、次のようにしてスクリプトを登録できます。

regsvr32 file:\\myserver\MyComponent.wsc
メモ <registration> 要素は、常に必要というわけではありません。たとえば、Microsoft® Internet Explorer 5.0 では、ページ上でビヘイビアが検出されたとき、ビヘイビアのインスタンスを直接生成するので、DHTML Behavior インターフェイス ハンドラを実装しているスクリプト コンポーネントは、登録する必要がありません。登録の詳細な要件については、実装しているインターフェイス ハンドラのドキュメントを参照してください。また、どのホストでスクリプト コンポーネントが使用されるかについても注意してください。

開発者がクラス ID の情報を指定しない場合は、スクリプト コンポーネントの登録時に、登録プログラムによってクラス ID が割り当てられます。ただし、スクリプト コンポーネントは、登録された場所によってクラス ID が異なります。スクリプト コンポーネント用のクラス ID は自分で指定することを強くお勧めします。クラス ID を指定すると、登録されたすべてのコンピュータで、スクリプト コンポーネントのクラス ID が同じであることが保証されます。

クラス ID を保存する開発ツールと共にスクリプト コンポーネントを使用する場合、登録プログラムでクラス ID を作成することができると、問題が発生する可能性があります。登録するたびに新しいクラス ID が作成されると、アプリケーションが保存している ID と一致しなくなります。

スクリプト コンポーネントが登録されたときや、登録が解除されたときにスクリプトを実行することもできます。その場合は、<registration> 要素の中に <script> 要素を指定します。登録する間にスクリプトを実行するには、register( ) 関数を記述します。スクリプト コンポーネントの登録が解除される間にスクリプトを実行するには、unregister( ) 関数を記述します。

例

次のコードは、プログラム ID とクラス ID の両方が含まれている <registration> 要素の例です。

<registration
   progid="Component.TestScript"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}"
   description="My Test Component"
   version="1"/>

次のコードは、DCOM を介してスクリプト コンポーネントのインスタンスを作成する <registration> 要素の例です。

<registration>
   progid="Component.TestScript"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}"
   version="1"
   description="My Test Component"
   remotable=true/>

次のコードは、スクリプト コンポーネントが登録されたときと、登録を解除されたときに実行されるスクリプトを含む <registration> 要素の例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<registration
   progid="Component.TestScript"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}">
   version="1"
   description="My Test Component">

   <script language="VBScript">
      Function register()
         MsgBox "コンポーネント 'My Test Component' が登録されました。"
      End Function
      Function unregister()
         MsgBox "コンポーネント 'My Test Component' が登録されました。"
      End Function
   </script>
   ]]>
</registration>

参 照

登録情報の作成 | スクリプト コンポーネントの登録


<resource> 要素 (Windows Script Components)

Windows スクリプト コンポーネント

<resource> 要素

スクリプト コンポーネントのスクリプトに埋め込まない方がよいテキストや数値のデータを、ほかのコードから分離します。

<resource id="resourceID">
   ここにテキストや数値を入力します。
</resource>

値

ResourceID
スクリプト コンポーネント内のリソースに対する一意の識別子を指定します。

解説

<resource> 要素を使用すると、スクリプト コンポーネント内の文字列や数値をスクリプトと区別できます。たとえば、<resource> 要素は、ほかの言語にローカライズされる可能性のある文字列を保持するために使用されます。

リソースの値を取得するには、getResource 関数を呼び出し、使用するリソースの ID を渡します。

例

次のコードは、errNonNumeric というリソースを定義し、そのリソースをスクリプトで使用する例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <method name="random" internalName="getRandomNumber"/>
</public>
<resource id="errNonNumeric">
   数値以外の値が渡されました。
</resource>

<script language="VBScript">
<![CDATA[
Function getRandomNumber(upperBound)
   If IsNumeric(upperBound) Then
      getRandomNumber = Cint(upperBound * Rnd + 1)
   Else
      getRandomNumber=getResource("errNonNumeric")
   End If
End Function
]]>
</script>

参 照

ほかのコンポーネントの参照


<script> 要素 (Windows Script Components)

Windows スクリプト コンポーネント

<script> 要素

スクリプト コンポーネントのビヘイビアを定義します。

<script language="language">
   ここにスクリプトを記述します。
</script>

値

language
Microsoft® Visual Basic® Scripting Edition (VBScript) や JScript など、スクリプト コンポーネント ファイルで使用されるスクリプト言語の名前を指定します。

解説

XML 検査機能が無効な場合、XML パーサーは <script> 要素に含まれる行をすべて無視します。ただし、スクリプト コンポーネント ファイルの先頭に <?XML ?> を宣言して XML 検査機能を有効にしている場合は、XML の区切り文字としてスクリプトで使用される <、> などの記号を、XML パーサーが誤って解釈することがあります。

XML の構文どおりにファイルを作成する場合は、スクリプトの要素が XML の予約文字と見なされないようにする必要があります。そのためには、実際のスクリプトを <![CDATA[ ... ]]> セクションの中に記述します。XML 検査機能の詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。

メモ <?XML ?> を宣言しない場合も、CDATA セクションを使用しないでください。

例

<?XML version="1.0"?>
<component id="ScriptletFactorial">
<registration progid="Component.Factorial"/>
<public>
   <method name="factorial"/>
</public>

<script language="VBScript">
<![CDATA[
Function factorial(n)
   If isNumeric(n) Then
      If n <= 1 Then
         factorial = 1
      Else
         factorial = n * factorial(n-1)
      End If
   Else
      factorial = -2   ' エラー コード
   End If
End Function
]]>
</script>
</component>

参 照

スクリプト コンポーネント ファイルの内容


<component> 要素

Windows スクリプト コンポーネントの定義全体を囲みます。

<component id=componentid>
   ここにスクリプト コンポーネントの情報を記述します。
</component>

値

componentid
スクリプト コンポーネントを一意に識別する文字列を指定します。この値が役立つのは、1 つのドキュメントに複数のスクリプト コンポーネントが含まれている場合と、複数のスクリプト コンポーネントに対して 1 つのタイプ ライブラリを生成する場合です。識別子の先頭は必ず文字で始め、識別子内にスペースを入れることはできません。スクリプト コンポーネントのパッケージ内では、識別子は一意である必要があります。

コンポーネント ID を指定した場合、この値は、スクリプト コンポーネントのクラス名としてホスト アプリケーションで機能します。たとえば、<component> 要素内でコンポーネント ID に "MyComponent" を指定すると、Visual Basic のオブジェクト ブラウザでは、スクリプト コンポーネントはクラス MyComponent として識別されます。コンポーネント ID を指定しない場合の既定値は、ComponentCoClass です。

解説

スクリプト コンポーネント ファイルでは、スクリプト コンポーネントの定義全体 (<registration> 要素、<public> 要素、<implements> 要素などを含む) を、<component> 要素の内側に指定する必要があります。ファイルに複数のスクリプト コンポーネントが含まれている場合は、それらのスクリプト コンポーネントを <package> 要素の内部に記述しなければなりません。

例

次のコードは、factorial メソッドと name プロパティを含む、単純かつ完全なスクリプト コンポーネントの例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<?XML version="1.0"?>
<component>
<registration>
   description="My Test Component"
   progid="Component.TestScript"
   version="1"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}"
</registration>

<public>
   <property name="name"/>
   <method name="factorial"/>
</public>

<script language="VBScript">
   <![CDATA[
   Function factorial(n)
      If isNumeric(n) Then
         If n <= 1 Then
            factorial = 1
         Else
            factorial = n*factorial(n-1)
         End If
      Else
         factorial = -2   ' エラー コード
      End If
   End Function
   ]]>
</script>
</component>

参 照

スクリプト コンポーネント ファイルの内容


Behavior ハンドラ リファレンス

Microsoft® Internet Explorer は、Behavior ハンドラと共に、Behavior スクリプト コンポーネントがカスタム イベントを介してページに返信したり、ドキュメントのオブジェクト モデルにアクセスしたりするための手段を提供します。

次に示す要素、プロパティ、およびメソッドは、Behavior ハンドラに固有のものです。

  • <attach> 要素
  • <layout> 要素
  • element プロパティ
  • attachNotification メソッド
  • createEventObject メソッド
  • fireEvent メソッド


<attach> 要素

ドキュメントのイベントを、スクリプト コンポーネント内の関数にバインドします。

<attach event="eventName" handler="functionName" [for="elementName"]/>

値

eventName
onmouseclick など、バインドするイベントの名前を指定します。
functionName
イベントが発生したときに実行される、スクリプト コンポーネント ファイル内のプロシージャ (関数またはサブルーチン) の名前を指定します。省略すると、この属性は自動的に生成されます。

for 属性を指定しない場合、handler 属性の既定値は event 属性の値になります。for 属性を指定した場合、handler 属性の既定値は、for 属性の値と event 属性の値をアンダースコア (_) で連結した文字列になります。

elementName
イベントに関連付けられた要素を指定します。このイベントは、DHTML Behavior が明示的に結び付けられていない要素に使用されます。for 属性の値は、"document"、"window"、および "element" だけです。for 属性を指定しない場合は、"element" が既定値になり、ビヘイビアが結び付けられている要素でイベントが発生します。

例

次のコードは、<attach> 要素が 3 つのイベントをそれぞれの関数にバインドする例です。たとえば、DHTML onmouseover 要素は、スクリプト コンポーネントの do_onmouseover 関数にバインドされます。DHTML onmouseover イベントにバインドされた関数と onmouseout イベントは、ビヘイビアが結び付けられているドキュメント内の要素で発生した場合にのみ実行されます。docinit 関数は、DHTML document オブジェクトの onload イベントに明示的にバインドされます。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<?XML version="1.0"?>
<component id="bvrscript component1">
<registration progID="Behaviorscript component"/>
<implements type="Behavior">
   <attach event="onmouseover" handler="do_onmouseover"/>
   <attach event="onmouseout" handler="do_onmouseout"/>
   <attach for="window" event="onload" handler="docinit"/>
</implements>
<script language="JScript">
<![CDATA[
var normalColor, normalSpacing;
function do_onmouseover(){
   // 元の値を保存します。
   normalColor = style.color;
   normalSpacing= style.letterSpacing;
   style.color = "red";
   style.letterSpacing = 2;
}
function do_onmouseout(){
   // 元の値にリセットします。
   style.color = normalColor;
   style.letterSpacing = normalSpacing;
}
function docinit(){
   document.linkColor = "red";
}
]]>
</script>
</component>

参 照

Behavior スクリプト コンポーネントの作成


attachNotification メソッド

ホストから送信された通知メッセージに、スクリプト コンポーネント内の関数をバインドします。

behavior.attachNotification (fpNotify)

値

behavior
Behavior インターフェイスを実装するための <implements> 要素の ID を指定します。
メモ 既定では、Behavior ハンドラによって公開されたプロパティとメソッドは、グローバル スクリプト名前空間に自動的に追加されます。このため、これらのプロパティとメソッドにアクセスするときは、Behavior ハンドラ ID を参照する必要がありません。つまり、構文に示されている Behavior.attachNotification ではなく、attachNotification と指定するだけでメソッドにアクセスできます。詳細については、「<implements> 要素」を参照してください。
fpNotify
通知にバインドする関数の名前を指定します。

解説

一般にホストは、次の通知と共に、指定された関数を呼び出すことができます。

  • "contentReady" ビヘイビアが結び付けられている要素の内容に、変更がありました。これは、スクリプトが要素の DHTML innerHTML プロパティを設定するときと同じように、要素の終了タグが解析されるとすぐに発生します。ビヘイビアは、この通知を使用して、適用される要素の内容を取得できます。
  • "documentReady" ブラウザはドキュメントの解析を終了しました。内容について変更や初期化が必要であれば、この時点で実行できます。
    メモ attachNotification メソッドは、ドキュメント、ウィンドウ、ページ上の任意の要素で発生する標準的なイベントをスクリプト コンポーネントに通知しません。これらのイベントについての通知を受信するには、DHTML achEvent メソッドを使うことをお勧めします。

表示の設定、色およびフォントの変更など、要素の DHTML style プロパティを操作する場合は、次のコードのように、スクリプト コンポーネントの <script> 要素内でインラインで変更することをお勧めします。documentReady 通知の節に変更を加えると、メッセージが点滅することがあります。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<implements type="Behavior"/>
<script language="JScript">
<![CDATA[
   style.color = "green";
   style.letterSpacing = 5;
]]>
</script>

例

次のコードは、通知をトラップし、適切に処理できるように関数を設定する例です。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<?XML version="1.0"?>
<component>
<implements type="Behavior">
   <event name="onResultChange"/>
</implements>

<script language="JScript">
<![CDATA[
   attachNotification (onNotification);
   function onNotification (sNotification){
      if (sNotification == "contentReady"){
         // 要素の内容が変更されました。
      }
      else if (sNotification == "documentReady"){
         // ホストは要素の解析を終了しました。
      }
      window.status = sNotification;
   }
]]>
</script>
</component>

参 照

<event> 要素


createEventObject メソッド

fireEvent メソッドが呼び出されたときに、イベントのコンテキスト情報をドキュメントに渡すための DHTML event オブジェクトを作成します。

oEvent = behavior.createEventObject()

値

behavior
Behavior インターフェイスを実装するための <implements> 要素の ID を指定します。
メモ 既定では、createEventObject メソッドはグローバルなスコープを持ち、Behavior ハンドラ ID を参照しないでアクセスできます。たとえば、構文に示されている Behavior.createEventObject ではなく、createEventObject と指定するだけで、呼び出すことができます。詳細については、「<implements> 要素」を参照してください。
oEvent
メソッドによって作成される event オブジェクトを指定します。

解説

event オブジェクトは、fireEvent メソッドを複数回呼び出して、再使用することはできません。

例

次のコードは、計算機のスクリプト コンポーネントから派生しています。結果が変更されるたびに、スクリプト コンポーネントは、onResultChange カスタム イベントの通知をページに返し、結果を event オブジェクトの expando プロパティとして渡します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<component>
<implements type="Behavior">
   <event name="onResultChange"/>
</implements>

<script language="JScript">
<![CDATA[
attachEvent("onclick", doCalc);

function doCalc()
{
   // ここに計算を実行するコードを記述します。
   // その結果は、変数 sResult に代入します。
   oEvent = createEventObject();
   oEvent.result = sResult;
   fireEvent("onResultChange",oEvent);
}
]]>
</script>
</component>
次のコードは、DHTML ページの外観を示す例です。onResultChange イベントを発生させると、DHTML window.event オブジェクトの expando プロパティの result から計算結果が抽出され、resultWindow <DIV> 要素に表示されます。
<HTML>
<HEAD>
<xml:namespace prefix="LK" />
<style>
   LK\:CALC {behavior:url(engine.wsc)}
</style>
<script language="JScript">
function showResults(){
   resultWindow.innerText=window.event.result;
}
</script>
</HEAD>

<LK:CALC id="myCalc" onResultChange="showResults()">
<TABLE>
<TR>
   <DIV ID=resultWindow
      STYLE="border: '.025cm solid gray'"
         ALIGN=RIGHT>0.</DIV>
</TR>
<TR>
   <TD><INPUT TYPE=BUTTON VALUE=" 0 "></TD>
   <TD><INPUT TYPE=BUTTON VALUE="+/-"></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" . "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" + "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" = "></TD>
<TR>
</TABLE>
</LK:CALC>
</HTML>

参 照

Behavior スクリプト コンポーネントのカスタム イベントの公開


element プロパティ

ビヘイビアが適用される要素を返します。

[oElement = ] Behavior.element

値

oElement
ビヘイビアが適用される要素を返します。
Behavior
Behavior インターフェイスを実装するための <implements> 要素の ID を指定します。
メモ 既定では、Behavior ハンドラによって公開されたプロパティとメソッドは、グローバル スクリプト名前空間に自動的に追加されます。このため、これらのプロパティとメソッドにアクセスするときは、Behavior ハンドラ ID を参照する必要がありません。つまり、構文に示されている Behavior.element という式ではなく、element と指定するだけでプロパティにアクセスできます。詳細については、「<implements>」要素を参照してください。

解説

このプロパティは、読み取り専用です。

このプロパティを使用すると、ビヘイビアはそれを含んでいるドキュメントと通信できます。DHTML オブジェクト モデルによって公開されているすべてのプロパティ、メソッド、およびイベントが、このプロパティをとおしてアクセスできます。

例

次のコードは、スクリプト コンポーネントを使って目次の展開と折りたたみを実装する例です。スクリプト コンポーネントは、要素の DHTML onmouseover イベントに event_onmouseover() 関数を結び付けます。この関数は、要素の DHTML cursor プロパティを "hand" に設定して、目次の表示を切り替えるために要素をクリックできることをユーザーに通知します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<public>
   <attach event="onmouseover" handler="event_onmouseover");
</public>

<implements type="Behavior"/>
<script language="JScript">
<![CDATA[
   function event_onmouseover()
   {
      oElement = window.event.srcElement;
      if (oElement == element)
         oElement.style.cursor = "hand";
   }
]]>
</script>

参 照

DHTML 要素にビヘイビアを適用する方法の概要については、Microsoft Web サイトの Site Builder Network (SBN) Workshop に掲載されているトピック「Using DHTML Behaviors」を参照してください。


<layout> 要素

ドキュメントに挿入される HTML テキストを定義します。

<layout>
   <HTMLtag>挿入されるテキスト</HTMLtag>
</layout>

値

HTMLTag
要素のテキストに置換される HTML タグの名前を指定します。

解説

ビヘイビアを呼び出すと、<layout> 要素のテキストがドキュメントの対応する要素に読み込まれます。このビヘイビアは、要素の DHTML innerHTML プロパティの設定と同じです。

スクリプト コンポーネントが XML 対応として定義されていない場合、<layout> 要素の内容は隠蔽されます。ただし、スクリプト コンポーネントが XML に対応している場合は、<layout> 要素の内容を CDATA セクション内に記述して、明示的に隠蔽する必要があります。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。

例

次のコードは、<layout> 要素を含むスクリプト コンポーネントの例です。スクリプト コンポーネントの先頭に <?XML ?> 宣言があるので、XML パーサーに対して <layout> 要素の内容を隠蔽するために、<layout> 要素に CDATA セクションを記述しています。

<?XML version="1.0" ?>
<component id="bvrScriptlet1">
<registration progID="BehaviorScriptlet"/>
<implements type="Behavior">
   <layout>
   <![CDATA[
      <h1>要素内で表示する HTML です。</h1>
   ]]>
   </layout>
</implements>
</component>

参 照

DHTML 要素にビヘイビアを適用する方法の概要については、Microsoft Web サイトの Site Builder Network (SBN) Workshop に掲載されているトピック「Using DHML Behaviors」を参照してください。


fireEvent メソッド (Windows Script Components Behavior)

Windows スクリプト コンポーネント

fireEvent メソッド

カスタム イベントを発生させます。

Behavior.fireEvent(sEvent[, oEvent])

値

Behavior
Behavior インターフェイスを実装するための <implements> 要素の ID を指定します。
メモ 既定では、Behavior ハンドラによって公開されたプロパティとメソッドは、グローバル スクリプト名前空間に自動的に追加されます。このため、これらのプロパティとメソッドにアクセスするときは、Behavior ハンドラ ID を参照する必要がありません。つまり、構文に示されている Behavior.fireEvent ではなく、fireEvent と指定するだけでプロパティにアクセスできます。詳細については、「<implements> 要素」を参照してください。
sEvent
<implements> 要素で宣言されたカスタム イベントの名前を指定します。
oEvent
省略可能です。コンテキスト情報が格納されている event オブジェクトを指定します。event オブジェクトは、createEventObject メソッドを使用して作成されます。

解説

event オブジェクトは、fireEvent メソッドを複数回呼び出して、再使用することはできません。

例

次のコードは、計算機のスクリプト コンポーネントの例から派生しています。結果が変更されるたびに、スクリプト コンポーネントは、onResultChange カスタム イベントの通知をページに返し、結果を event オブジェクトの expando プロパティとして渡します。

メモ <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。
<component>
<public>
   <event name="onResultChange" />
</public>

<implements type="Behavior">
   <attach event="onclick" handler="doCalc");
</implements>

<script language="JScript">
<![CDATA[
function doCalc(){
   // ここに計算を実行するコードを記述します。
   // その結果は、変数 sResult に代入します。

   oEvent = createObjectEvent();
   oEvent.result = sResult;
   fireEvent("onResultChange",oEvent);
}
]]>
</script>
</component>
次のコードは、DHTML ページの外観を示す例です。onResultChange イベントを発生させると、DHTML window.event オブジェクトの expando プロパティの result から計算結果が抽出され、resultWindow <DIV> 要素に表示されます。
<HTML>
<HEAD>
<xml:namespace prefix="LK" />
<style>
   LK\:CALC {behavior:url(engine.wsc)}
</style>
<script language="JScript">
function showResults(){
   resultWindow.innerText=window.event.result;
}
</script>
</HEAD>

<LK:CALC id="myCalc" onResultChange="showResults()">
<TABLE>
<TR>
   <DIV ID=resultWindow
      STYLE="border: '.025cm solid gray'"
      ALIGN=RIGHT>0.</DIV>
</TR>
<TR>
   <TD><INPUT TYPE=BUTTON VALUE=" 0 "></TD>
   <TD><INPUT TYPE=BUTTON VALUE="+/-"></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" . "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" + "></TD>
   <TD><INPUT TYPE=BUTTON VALUE=" = "></TD>
<TR>
</TABLE>
</LK:CALC>
</HTML>

参 照

Behavior スクリプト コンポーネントのカスタム イベントの公開 | fireEvent


Microsoft Windows Script Interfaces-Introduction

Microsoft® Windows® Script Interfaces
Microsoft Windows Script Interfaces-Introduction 		Language Reference
Next

Microsoft® Windows® Script Interfaces introduce a new way for an application to add scripting and OLE Automation capabilities. With the advent of the interfaces, hosts can call upon disparate scripting engines from multiple sources and vendors to perform scripting between components. The implementation of the script itself—language, syntax, persistent format, execution model, and so on—is left to the script vendor. The designers have taken care to allow hosts that rely on Windows Script to use arbitrary language back ends.

  • Windows Script Hosts
  • Windows Script Engines
  • IDispatchEx
  • IProvideMultipleClassInfo
  • Active Script Debugging Interfaces
Windows Script Terms

This list contains definitions of the scripting-related terms used in this document.

Term | Definition
Code object | An instance created by the scripting engine that is associated with a named item, such as the module behind a form in Visual Basic®, or a C++ class associated with a named item. Preferably, this is an OLE Component Object Model (COM) object that supports OLE Automation so the host or other nonscript entity can manipulate the code object.
Named item | An OLE COM object (preferably one that supports OLE Automation) that the host deems interesting to the script. Examples include the HTML Page and Browser in a Web browser, and the Document and Dialogs in Microsoft Word.
Script | The data that makes up the program that the scripting engine runs. A script can be any contiguous executable data, including pieces of text, blocks of pcode, or even machine-specific executable byte codes. A host loads a script into the scripting engine through one of the IPersist* interfaces or through the IActiveScriptParse interface.
Scripting engine | The OLE object that processes scripts. A scripting engine implements the IActiveScript and, optionally, IActiveScriptParse interfaces.
Scripting host | The application or program that owns the Windows Script engine. The host implements the IActiveScriptSite and, optionally, IActiveScriptSiteWindow interfaces.
Scriptlet | A portion of a script that gets attached to an object through the IActiveScriptParse interface. The aggregate collection of scriptlets is the script.
Script language | The language in which a script is written (VBScript, for example) and the semantics of that language.

Windows Script Background

Windows Script components fall into two categories: Windows Script hosts and Windows Script engines. A host creates a scripting engine and calls on the engine to run the scripts. Examples of Windows Script hosts include:

  • Microsoft Internet Explorer
  • Internet authoring tools
  • Shell

Windows Script engines can be developed for any language or run-time environment, including:

  • Microsoft Visual Basic Scripting Edition (VBScript)
  • Perl
  • Lisp

To make implementation of the host as flexible as possible, an OLE Automation wrapper for Windows Script is provided. However, a host that uses this wrapper object to instantiate the scripting engine does not have the degree of control over the run-time name space, the persistence model, and so on, that it would if it used Windows Script directly.

The Windows Script design isolates the interface elements required only in an authoring environment so that nonauthoring hosts (such as browsers and viewers) and script engines (for example, VBScript) can be kept lightweight.

Windows Script Basic Architecture

The following illustration shows the interaction between an Windows Script host and an Windows Script engine.

Following is a description of the steps involved in the interaction between the host and engine. The actual nesting of the function calls is omitted for clarity.

  1. Create a Project. The host loads a project or document. (This step is not particular to Windows Script, but is included here for completeness.)
  2. Create the Windows Script Engine. The host calls CoCreateInstance to create a new Windows Script engine, specifying the class identifier (CLSID) of the specific scripting engine to use. For example, the HTML browsing component of Internet Explorer receives the scripting engine's class identifier through the CLSID= attribute of the HTML <OBJECT> tag.
  3. Load the Script. If the script contents have been persisted, the host calls the script engine's IPersist*::Load method to feed it the script storage, stream, or property bag. Otherwise, the host uses either the IPersist*::InitNew or IActiveScriptParse::InitNew method to create a null script. A host that maintains a script as text can use IActiveScriptParse::ParseScriptText to feed the scripting engine the text of the script, after calling IActiveScriptParse::InitNew.
  4. Add Named Items. For each top-level named item (such as pages and forms) imported into the scripting engine's name space, the host calls the IActiveScript::AddNamedItem method to create an entry in the engine's name space. This step is not necessary if top-level named items are already part of the persistent state of the script loaded in step 3. A host does not use IActiveScript::AddNamedItem to add sublevel named items (such as controls on an HTML page); rather, the engine indirectly obtains sublevel items from top-level items by using the host's ITypeInfo and IDispatch interfaces.
  5. Run the Script. The host causes the engine to start running the script by setting the SCRIPTSTATE_CONNECTED flag in the IActiveScript::SetScriptState method. This call would likely perform any scripting engine construction work, including static binding, hooking up to events (see below), and executing code, in a way similar to a scripted main() function.
  6. Get Item Information. Each time the script engine needs to associate a symbol with a top-level item, it calls the IActiveScriptSite::GetItemInfo method, which returns information about the given item.
  7. Hook Up Event Advise. Before starting the actual script, the scripting engine connects to the events of all the relevant objects through the IConnectionPoint interface.
  8. Invoke Properties and Methods. As the script runs, the scripting engine realizes references to methods and properties on named objects through IDispatch::Invoke or other standard OLE binding mechanisms.


Windows Script Hosts

Microsoft® Windows® Script Interfaces
Windows Script Hosts 		Language Reference
Previous
Next

When implementing Microsoft® Windows® Script host, you can safely assume that a scripting engine will only call the IActiveScriptSite interface in the context of the base thread as long as the host does the following:

  • Chooses a base thread (generally the thread that contains the message loop).
  • Instantiates the scripting engine in the base thread.
  • Calls scripting engine methods only from the base thread, except where specifically allowed, as in the cases of IActiveScript::InterruptScriptThread and IActiveScript::Clone.
  • Calls the scripting engine's dispatch object only from the base thread.
  • Ensures that the message loop runs in the base thread if a window handle is provided.
  • Ensures that objects in the host's object model only source events in the base thread.

These rules are automatically followed by all single-threaded hosts. The restricted model described above is intentionally loose enough to allow a host to abort a stuck script by calling IActiveScript::InterruptScriptThread from another thread (initiated by a CTRL+BREAK handler or the like), or to duplicate a script in a new thread using IActiveScript::Clone.

Also, none of these restrictions apply to a host that chooses to implement a free-threaded IActiveScriptSite interface and a free-threaded object model. Such a host can use the IActiveScript interface from any thread, without restriction.


Windows Script Engines

Microsoft® Windows® Script Interfaces
Windows Script Engines 		Language Reference
Previous
Next

To implement an Microsoft® Windows® Script engine, create an OLE COM object that supports the following interfaces.

Interface | Description
IActiveScript | Provides the basic scripting ability. Implementation of this interface is required.
IActiveScriptParse | Provides the ability to add script text, evaluate expressions, and so on. Implementation of this interface is optional; however, if it is not implemented, the script engine must implement one of the IPersist* interfaces in order to load a script.
IPersist* Provides persistence support. Implementation of at least one of the following interfaces is required if IActiveScriptParse is not implemented.
Interface | Description
IPersistStorage | Provides support for the DATA={url} attribute in the OBJECT tag.
IPersistStreamInit | Provides support for the same as IPersistStorage as well as the DATA="string-encoded byte stream" attribute in the OBJECT tag.
IPersistPropertyBag | Provides support for the PARAM= attribute in the OBJECT tag.

Note: It is possible that the scripting engine will never be called upon to save or restore a script state through IPersist*. Instead, IActiveScriptParse is used by calling IActiveScriptParse::InitNew to create a blank script, then scriptlets are added and connected to events with IActiveScriptParse::AddScriptlet and general code is added with IActiveScriptParse::ParseScriptText. Nonetheless, a scripting engine should fully implement at least one IPersist* interface (preferably IPersistStreamInit), because other host applications may try to make use of them.

The following sections describe implementing a Windows Scripting engine in more detail.

  • Registry Standard
  • Script Engine States
  • Scripting Engine Threading

See the Script Interface Reference for more information.

Registry Standard

An Windows Script engine can identify itself using component categories. Windows Script currently defines two component categories.

Category | Decription
CATID_ActiveScript | Indicates that the class identifiers (CLSIDs) are Windows Script engines that support, at a minimum, the IActiveScript interface and a persistence mechanism (the IPersistStorage, IPersistStreamInit, or IPersistPropertyBag interface).
CATID_ActiveScriptParse | Indicates that the CLSIDs are Windows Script engines that support, at a minimum, the IActiveScript and IActiveScriptParse interfaces.

Although IActiveScriptParse is not a true persistence mechanism, it does support the IActiveScriptParse::InitNew method that is functionally equivalent to IPersist*::InitNew.

Script Engine States

At any given time, an Windows Script engine can be in one of several states.

State | Descriptioon
uninitialized | The script has not been initialized or loaded using an IPersist* interface, or does not have an IActiveScriptSite interface set. The scripting engine is generally not usable from this state until the script is loaded.
initialized The script has been initialized with an IPersist* interface and has an IActiveScriptSite interface set, but is not connected to host objects and sinking events. Note that this state simply means that the IPersist*::Load, IPersist*::InitNew, or IActiveScriptParse::InitNew method has been completed, and that the IActiveScript::SetScriptSite method has been called. The engine cannot run code in this mode. The engine queues code that the host passes to it through the IActiveScriptParse::ParseScriptText method, and executes the code after transitioning to the started state.

Because languages can vary widely in semantics, scripting engines are not required to support this state transition. Engines that support the IActiveScript::Clone method must, however, support this state transition. Hosts must prepare for this transition and take the appropriate action: release the current scripting engine, create a new scripting engine, and call IPersist*::Load, IPersist*::InitNew, or IActiveScriptParse::InitNew (and possibly also call IActiveScriptParse::ParseScriptText). Use of this transition should be considered an optimization of the above steps. Note that any information the scripting engine has obtained about the names of Named Items and the type information describing Named Items remains valid.

Because languages vary widely, defining the exact semantics of this transition is difficult. At a minimum, the scripting engine must disconnect from all events, and release all of the SCRIPTINFO_IUNKNOWN pointers obtained by calling the IActiveScriptSite::GetItemInfo method. The engine must re-obtain these pointers after the script is run again. The scripting engine should also reset the script back to an initial state that is appropriate for the language. VBScript, for example, resets all variables and retains any code added dynamically by calling IActiveScriptParse::ParseScriptText with the SCRIPTTEXT_ISPERSISTENT flag set. Other languages may need to retain current values (such as Lisp because there is no code/data separation) or reset to a well-known state (this includes languages with statically initialized variables).

Note that the transition to the started state should have the same semantics (that is, it should leave the scripting engine in the same state) as calling IPersist*::Save to save the scripting engine, and then calling IPersist*::Load to load a new scripting engine; these actions should have the same semantics as IActiveScript::Clone. Scripting engines that do not yet support IActiveScript::Clone or IPersist* should carefully consider how the transition to the started state should behave, so that such a transition would not violate the above conditions if IActiveScript::Clone or IPersist* support was later added.

During this transition to the started state, the scripting engine will disconnect from event sinks after the appropriate destructors, and so on, are executed in the script. To avoid having these destructors executed, the host can first move the script into the disconnected state before moving into the started state.

Use IActiveScript::InterruptScriptThread to cancel a running script thread without waiting for current events, and so on, to finish running.

started | The transition from the initialized state to the started state causes the engine to execute any code that was queued in the initialized state. The engine can execute code while in the started state, but it is not connected to any events added through the IActiveScript::AddNamedItem method. The engine can execute code by calling the IDispatch interface obtained from the IActiveScript::GetScriptDispatch method, or by calling IActiveScriptParse::ParseScriptText. It is possible that further background initialization (progressive loading) is still ongoing, and that calling the IActiveScript::SetScriptState method with the SCRIPTSTATE_CONNECTED flag set may cause the script to block until initialization is complete.
connected | The script is loaded and connected for sinking events from host objects. If this is a transition from the initialized state, the scripting engine should transition through the started state, performing the necessary actions, before entering the connected state and connecting to events.
disconnected | The script is loaded and has a run-time state, but is temporarily disconnected from sinking events from host objects. This can be done either logically (ignoring events received) or physically (calling IConnectionPoint::Unadvise on the appropriate connection points). If this is a transition from the initialized state, the scripting engine should transition through the started state, performing the necessary actions, before entering the disconnected state. Event sinks that are in progress are completed before the state changes (use IActiveScript::InterruptScriptThread to cancel a running script thread). This state is distinguished from the initialized state in that the transition to this state does not cause the script to reset, the run-time state of the script is not reset, and a script initialization procedure is not executed.
closed | The script has been closed. The scripting engine no longer works and returns errors for most methods.

The following illustration shows the relationships between the various scripting engine states, and shows the methods that cause transitions from one state to another.

The following illustration shows the actions that the scripting engine performs during the various state transitions.

Scripting Engine Threading

Because an Windows Script engine can be used in many environments, it is important to keep its execution model as flexible as possible. For example, a server-based host may need to preserve a multithreaded design while using Windows Script in an efficient manner. At the same time, a host that does not use threading, such as a typical application, should not be burdened with threading management. Windows Script achieves this balance by restricting the ways a free-threaded scripting engine can call back to the host, freeing hosts from this burden.

Scripting engines used on servers are typically implemented as free-threading COM objects. This means that methods on the IActiveScript interface and its associated interfaces can be called from any thread in the process, without marshaling. (Unfortunately, this also means that the scripting engine must be implemented as an in-process server, because OLE does not currently support interprocess marshaling of free-threaded objects.) Synchronization is the responsibility of the scripting engine. For scripting engines that are not internally reentrant, or for language models that are not multithreaded, synchronization could be as simple as serializing access to the scripting engine with a mutex. Of course certain methods, such as IActiveScript::InterruptScriptThread, should not be serialized in this way so that a stuck script can be terminated from another thread.

The fact that IActiveScript is typically free-threaded generally implies that the IActiveScriptSite interface and the host's object model should be free-threaded as well. This would make implementation of the host quite difficult, particularly in the common case where the host is a single-threaded Microsoft Windows®-based application with single-threaded or apartment-model ActiveX Controls in its object model. For this reason, the following constraints are placed on the scripting engine's use of IActiveScriptSite:

  • The script site is always called in the context of a host thread. That is, the scripting engine never calls the script site in the context of a thread that the scripting engine created, but only from within a scripting engine method that was called from the host through IActiveScript and its derivatives, through the exposed scripting engine's dispatch object, through a Windows message, or from an event source in the host's object model.
  • The script site is never called from within the context of a simple thread state control method (for example, the IActiveScript::InterruptScriptThread method) or from the IActiveScript::Clone method.


Windows Script Interface Reference

Microsoft® Windows® Script Interfaces
Windows Script Interface Reference 		Language Reference
Previous
Next

The following interfaces are specific to Microsoft® Windows® Script hosts:

  • IActiveScriptSite
  • IActiveScriptSiteWindow

The following interfaces are specific to Windows Script Engines.

  • IActiveScript
  • IActiveScriptError
  • IActiveScriptParse

The following enumerations are specific to Windows Script Engines.

  • SCRIPTSTATE
  • SCRIPTTHREADSTATE


IActiveScript

Microsoft® Windows® Script Interfaces
IActiveScript 		Language Reference
Previous
Next

The IActiveScript interface provides the methods necessary to initialize the scripting engine. The scripting engine must implement the IActiveScript interface.

Methods in Vtable Order

Method | Description
SetScriptSite | Informs the scripting engine of the IActiveScriptSite site provided by the host.
GetScriptSite | Retrieves the site object associated with the Windows Script engine.
SetScriptState | Places the scripting engine into the specified state.
GetScriptState | Retrieves the current state of the scripting engine.
Close | Causes the scripting engine to abandon any currently loaded script, lose its state, and release any interface pointers it has to other objects, thus entering a closed state.
AddNamedItem | Adds the name of a root-level item to the scripting engine's name space.
AddTypeLib | Adds a type library to the name space for the script.
GetScriptDispatch | Retrieves the IDispatch interface for the running script.
GetCurrentScriptThreadID | Retrieves a scripting-engine-defined identifier for the currently executing thread.
GetScriptThreadID | Retrieves a scripting-engine-defined identifier for the thread associated with the given Microsoft Win32® thread.
GetScriptThreadState | Retrieves the current state of a script thread.
InterruptScriptThread | Interrupts the execution of a running script thread.
Clone | Clones the current scripting engine (minus any current execution state), returning a loaded scripting engine that has no site in the current thread.


IActiveScript::AddNamedItem

Microsoft® Windows® Script Interfaces
IActiveScript::AddNamedItem 		Language Reference
Previous
Next

HRESULT AddNamedItem(
    LPCOLESTR pstrName,  // address of item name
    DWORD dwFlags        // item flags
);

Adds the name of a root-level item to the scripting engine's name space. A root-level item is an object with properties and methods, an event source, or all three.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_INVALIDARG | An argument was invalid.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized).

pstrName
[in] Address of a buffer that contains the name of the item as viewed from the script. The name must be unique and persistable.
dwFlags
[in] Flags associated with an item. Can be a combination of these values:

Value | Meaning
SCRIPTITEM_CODEONLY | Indicates that the named item represents a code-only object, and that the host has no IUnknown to be associated with this code-only object. The host only has a name for this object. In object-oriented languages such as C++, this flag would create a class. Not all languages support this flag.
SCRIPTITEM_GLOBALMEMBERS | Indicates that the item is a collection of global properties and methods associated with the script. Normally, a scripting engine would ignore the object name (other than for the purpose of using it as a cookie for the IActiveScriptSite::GetItemInfo method, or for resolving explicit scoping) and expose its members as global variables and methods. This allows the host to extend the library (run-time functions and so on) available to the script. It is left to the scripting engine to deal with name conflicts (for example, when two SCRIPTITEM_GLOBALMEMBERS items have methods of the same name), although an error should not be returned because of this situation.
SCRIPTITEM_ISPERSISTENT | Indicates that the item should be saved if the scripting engine is saved. Similarly, setting this flag indicates that a transition back to the initialized state should retain the item's name and type information (the scripting engine must, however, release all pointers to interfaces on the actual object).
SCRIPTITEM_ISSOURCE | Indicates that the item sources events that the script can sink. Child objects (properties of the object that are in themselves objects) can also source events to the script. This is not recursive, but it provides a convenient mechanism for the common case, for example, of creating a container and all of its member controls.
SCRIPTITEM_ISVISIBLE | Indicates that the item's name is available in the name space of the script, allowing access to the properties, methods, and events of the item. By convention the properties of the item include the item's children; therefore, all child object properties and methods (and their children, recursively) will be accessible.
SCRIPTITEM_NOCODE | Indicates that the item is simply a name being added to the script's name space, and should not be treated as an item for which code should be associated. For example, without this flag being set, VBScript will create a separate module for the named item, and C++ might create a separate wrapper class for the named item.


IActiveScript::AddTypeLib

Microsoft® Windows® Script Interfaces
IActiveScript::AddTypeLib 		Language Reference
Previous
Next

HRESULT AddTypeLib(
    REFGUID guidTypeLib,  // CLSID of type library
    DWORD dwMaj,          // major version number
    DWORD dwMin,          // minor version number
    DWORD dwFlags         // option flags
);

Adds a type library to the name space for the script. This is similar to the #include directive in C/C++. It allows a set of predefined items such as class definitions, typedefs, and named constants to be added to the run-time environment available to the script.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_INVALIDARG | An argument was invalid.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized).
    TYPE_E_CANTLOADLIBRARY | The specified type library could not be loaded.

guidTypeLib
[in] CLSID of the type library to add.
dwMaj
[in] Major version number.
dwMin
[in] Minor version number.
dwFlags
[in] Option flags. Can be the following:

Value | Meaning
SCRIPTTYPELIB_ISCONTROL | The type library describes an ActiveX control used by the host.


IActiveScript::Clone

Microsoft® Windows® Script Interfaces
IActiveScript::Clone 		Language Reference
Previous
Next

HRESULT Clone(
    IActiveScript **ppscript  // receives pointer to IActiveScript
);

Clones the current scripting engine (minus any current execution state), returning a loaded scripting engine that has no site in the current thread. The properties of this new scripting engine will be identical to the properties the original scripting engine would be in if it were transitioned back to the initialized state.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_NOTIMPL | This method is not supported.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized).

ppscript
[out] Address of a variable that receives a pointer to the IActiveScript interface of the cloned scripting engine. The host must create a site and call the IActiveScript::SetScriptSite method on the new scripting engine before it will be in the initialized state and, therefore, usable.

The IActiveScript::Clone method is an optimization of IPersist*::Save, CoCreateInstance, and IPersist*::Load, so the state of the new scripting engine should be the same as if the state of the original scripting engine were saved and loaded into a new scripting engine. Named items are duplicated in the cloned scripting engine, but specific object pointers for each item are forgotten and are obtained with the IActiveScriptSite::GetItemInfo method. This allows an identical object model with per-thread entry points (an apartment model) to be used.

This method is used for multithreaded server hosts that can run multiple instances of the same script. The scripting engine may return E_NOTIMPL, in which case the host can achieve the same result by duplicating the persistent state and creating a new instance of the scripting engine with an IPersist* interface.

This method can be called from non-base threads without resulting in a non-base callout to host objects or to the IActiveScriptSite interface.


IActiveScript::Close

Microsoft® Windows® Script Interfaces
IActiveScript::Close 		Language Reference
Previous
Next

HRESULT Close(void);

Causes the scripting engine to abandon any currently loaded script, lose its state, and release any interface pointers it has to other objects, thus entering a closed state. Event sinks, immediately executed script text, and macro invocations that are already in progress are completed before the state changes (use IActiveScript::InterruptScriptThread to cancel a running script thread). This method must be called by the creating host before the interface is released to prevent circular reference problems.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine was already in the closed state).
    OLESCRIPT_S_PENDING | The method was queued successfully, but the state hasn't changed yet. When the state changes, the site will be called back on the IActiveScriptSite::OnStateChange method.
    S_FALSE | The method succeeded, but the script was already closed.


IActiveScript::GetCurrentScriptThreadID

Microsoft® Windows® Script Interfaces
IActiveScript::GetCurrentScriptThreadID 		Language Reference
Previous
Next

HRESULT GetCurrentScriptThreadID(
    SCRIPTTHREADID *pstidThread  // receives scripting thread identifier
);

Retrieves a scripting-engine-defined identifier for the currently executing thread. The identifier can be used in subsequent calls to script thread execution-control methods such as the IActiveScript::InterruptScriptThread method.

  • Returns S_OK if successful, or E_POINTER if an invalid pointer was specified.
pstidThread
[out] Address of a variable that receives the script thread identifier associated with the current thread. The interpretation of this identifier is left to the scripting engine, but it can be just a copy of the Windows thread identifier. If the Win32 thread terminates, this identifier becomes unassigned and can subsequently be assigned to another thread.

This method can be called from non-base threads without resulting in a non-base callout to host objects or to the IActiveScriptSite interface.


IActiveScript::GetScriptDispatch

Microsoft® Windows® Script Interfaces
IActiveScript::GetScriptDispatch 		Language Reference
Previous
Next

HRESULT GetScriptDispatch(
    LPCOLESTR pstrItemName  // address of item name
    IDispatch **ppdisp      // receives IDispatch pointer
);

Retrieves the IDispatch interface for the methods and properties associated with the currently running script.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_INVALIDARG | An argument was invalid.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized).
    S_FALSE | The scripting engine does not support a dispatch object; the ppdisp parameter is set to NULL.

pstrItemName
[in] Address of a buffer that contains the name of the item for which the caller needs the associated dispatch object. If this parameter is NULL, the dispatch object contains as its members all of the global methods and properties defined by the script. Through the IDispatch interface and the associated ITypeInfo interface, the host can invoke script methods or view and modify script variables.
ppdisp
[out] Address of a variable that receives a pointer to the object associated with the script's global methods and properties. If the scripting engine does not support such an object, NULL is returned.

Because methods and properties can be added by calling the IActiveScriptParse interface, the IDispatch interface returned by this method can dynamically support new methods and properties. Similarly, the IDispatch::GetTypeInfo method should return a new, unique ITypeInfo interface when methods and properties are added. Note, however, that language engines must not change the IDispatch interface in a way that is incompatible with any previous ITypeInfo interface returned. That implies, for example, that DISPIDs will never be reused.


IActiveScript::GetScriptSite

Microsoft® Windows® Script Interfaces
IActiveScript::GetScriptSite 		Language Reference
Previous
Next

HRESULT GetScriptSite(
    REFIID iid,           // interface identifier
    void **ppvSiteObject  // address of host site interface
);

Retrieves the site object associated with the Windows Script engine.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_INVALIDARG | An argument was invalid.
    E_NOINTERFACE | The specified interface is not supported.
    E_POINTER | An invalid pointer was specified.
    S_FALSE | No site has been set; the ppvSiteObject parameter is set to NULL.

iid
[in] Identifier of the requested interface.
ppvSiteObject
[out] Address of the location that receives the interface pointer to the host's site object.


IActiveScript::GetScriptState

Microsoft® Windows® Script Interfaces
IActiveScript::GetScriptState 		Language Reference
Previous
Next

HRESULT GetScriptState(
    SCRIPTSTATE *pss  // address of structure for state information
);

Retrieves the current state of the scripting engine. This method can be called from non-base threads without resulting in a non-base callout to host objects or to the IActiveScriptSite interface.

  • Returns S_OK if successful, or E_POINTER if an invalid pointer was specified.
pss
[out] Address of a variable that receives a value defined in the SCRIPTSTATE enumeration. The value indicates the current state of the scripting engine associated with the calling thread.


IActiveScript::GetScriptThreadID

Microsoft® Windows® Script Interfaces
IActiveScript::GetScriptThreadID 		Language Reference
Previous
Next

HRESULT GetScriptThreadID(
    DWORD dwWin32ThreadID,       // Win32 thread identifier
    SCRIPTTHREADID *pstidThread  // receives scripting thread identifier
);

Retrieves a scripting-engine-defined identifier for the thread associated with the given Win32 thread.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized) and therefore failed.

dwWin32ThreadID
[in] Thread identifier of a running Win32 thread in the current process. Use the GetCurrentScriptThreadID function to retrieve the thread identifier of the currently executing thread.
pstidThread
[out] Address of a variable that receives the script thread identifier associated with the given Win32 thread. The interpretation of this identifier is left to the scripting engine, but it can be just a copy of the Windows thread identifier. Note that if the Win32 thread terminates, this identifier becomes unassigned and may subsequently be assigned to another thread.

The retrieved identifier can be used in subsequent calls to script thread execution control methods such as the IActiveScript::InterruptScriptThread method.

This method can be called from non-base threads without resulting in a non-base callout to host objects or to the IActiveScriptSite interface.


IActiveScript::GetScriptThreadState

Microsoft® Windows® Script Interfaces
IActiveScript::GetScriptThreadState 		Language Reference
Previous
Next

HRESULT GetScriptThreadState(
    SCRIPTTHREADID stidThread,    // identifier of script thread
    SCRIPTTHREADSTATE *pstsState  // receives state flag
);

Retrieves the current state of a script thread.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized).

stidThread
[in] Identifier of the thread for which the state is desired, or one of the following special thread identifiers:

Value | Meaning
SCRIPTTHREADID_BASE | The base thread; that is, the thread in which the scripting engine was instantiated.
SCRIPTTHREADID_CURRENT | The currently executing thread.

pstsState
[out] Address of a variable that receives the state of the indicated thread. The state is indicated by one of the named constant values defined by the SCRIPTTHREADSTATE enumeration. If this parameter does not identify the current thread, the state may change at any time.

This method can be called from non-base threads without resulting in a non-base callout to host objects or to the IActiveScriptSite interface.


IActiveScript::InterruptScriptThread

Microsoft® Windows® Script Interfaces
IActiveScript::InterruptScriptThread 		Language Reference
Previous
Next

HRESULT InterruptScriptThread(
    SCRIPTTHREADID   stidThread,  // identifier of thread
    const EXCEPINFO *pexcepinfo,  // receives error information
    DWORD dwFlags
);

Interrupts the execution of a running script thread (an event sink, an immediate execution, or a macro invocation). This method can be used to terminate a script that is stuck (in an infinite loop, for example). It can be called from non-base threads without resulting in a non-base callout to host objects or to the IActiveScriptSite method.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_INVALIDARG | An argument was invalid.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized).

stidThread
[in] Identifier of the thread to interrupt, or one of the following special thread identifier values:

Value | Meaning
SCRIPTTHREADID_ALL | All threads. The interrupt is applied to all script methods currently in progress. Note that unless the caller has requested that the script be disconnected, by calling the IActiveScript::SetScriptState method with the SCRIPTSTATE_DISCONNECTED or SCRIPTSTATE_INITIALIZED flag set, the next scripted event causes script code to run again.
SCRIPTTHREADID_BASE | The base thread; that is, the thread in which the scripting engine was instantiated.
SCRIPTTHREADID_CURRENT | The currently executing thread.

pexcepinfo
[in] Address of an EXCEPINFO structure that receives error information associated with the error condition.
dwFlags
[in] Option flags associated with the interruption. Can be one of these values:

Value | Meaning
SCRIPTINTERRUPT_DEBUG | If supported, enter the scripting engine's debugger at the current script execution point.
SCRIPTINTERRUPT_RAISEEXCEPTION | If supported by the scripting engine's language, let the script handle the exception. Otherwise, the script method is aborted and the error code is returned to the caller; that is, the event source or macro invoker.


IActiveScript::SetScriptSite

Microsoft® Windows® Script Interfaces
IActiveScript::SetScriptSite 		Language Reference
Previous
Next

HRESULT SetScriptSite(
    IActiveScriptSite *pScriptSite  // address of host script site
);

Informs the scripting engine of the IActiveScriptSite interface site provided by the host. This method must be called before any other IActiveScript interface methods can be used.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_FAIL | An unspecified error occurred; the scripting engine was unable to finish initializing the site.
    E_INVALIDARG | An argument was invalid.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, a site was already set).

pScriptSite
[in] Address of the host-supplied script site to be associated with this instance of the scripting engine. The site must be uniquely assigned to this scripting engine instance; it cannot be shared with other scripting engines.


IActiveScript::SetScriptState

Microsoft® Windows® Script Interfaces
IActiveScript::SetScriptState 		Language Reference
Previous
Next

HRESULT SetScriptState(
    SCRIPTSTATE ss  // identifier of new state
);

Puts the scripting engine into the given state. This method can be called from non-base threads without resulting in a non-base callout to host objects or to the IActiveScriptSite interface.

  • Returns one of the following values:
    Return Value | Meaning
    S_OK | Success.
    E_FAIL | The scripting engine does not support the transition back to the initialized state. The host must discard this scripting engine and create, initialize, and load a new scripting engine to achieve the same effect.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized) and therefore failed.
    OLESCRIPT_S_PENDING | The method was queued successfully, but the state has not changed yet. When the state changes, the site will be called back through the IActiveScriptSite::OnStateChange method.
    S_FALSE | The method succeeded, but the script was already in the given state.
ss
[in] Sets the scripting engine to the given state. Can be one of the values defined in the SCRIPTSTATE enumeration.

For more information about scripting engine states, see Script Engine States.

See also IActiveScript::Clone, IActiveScript::GetScriptDispatch, IActiveScript::InterruptScriptThread, IActiveScriptParse::ParseScriptText, IActiveScriptSite::GetItemInfo


IActiveScriptError

Microsoft® Windows® Script Interfaces
IActiveScriptError 		Language Reference
Previous
Next

An object implementing this interface is passed to the IActiveScriptSite::OnScriptError method whenever the scripting engine encounters an unhandled error. The host then calls methods on this object to obtain information about the error that occurred.

Methods in Vtable Order

Method | Description
GetExceptionInfo | Retrieves information about an error.
GetSourcePosition | Retrieves the location in the source code where an error occurred.
GetSourceLineText | Retrieves the line in the source file where an error occurred.


IActiveScriptError::GetExceptionInfo

Microsoft® Windows® Script Interfaces
IActiveScriptError::GetExceptionInfo 		Language Reference
Previous
Next

HRESULT GetExceptionInfo(
    EXCEPINFO *pexcepinfo  // structure for exception information
);

Retrieves information about an error that occurred while the scripting engine was running a script.

  • Returns S_OK if successful, or E_FAIL if an error occurred.
pexcepinfo
[out] Address of an EXCEPINFO structure that receives error information.


IActiveScriptError::GetSourceLineText

Microsoft® Windows® Script Interfaces
IActiveScriptError::GetSourceLineText 		Language Reference
Previous
Next

HRESULT GetSourceLineText(
    BSTR *pbstrSourceLine  // address of buffer for source line
);

Retrieves the line in the source file where an error occurred while a scripting engine was running a script.

  • Returns S_OK if successful, or E_FAIL if the line in the source file was not retrieved.
pbstrSourceLine
[out] Address of a buffer that receives the line of source code in which the error occurred.


IActiveScriptError::GetSourcePosition

Microsoft® Windows® Script Interfaces
IActiveScriptError::GetSourcePosition 		Language Reference
Previous
Next

HRESULT GetSourcePosition(
    DWORD *pdwSourceContext,  // context cookie
    ULONG *pulLineNumber,     // line number of error
    LONG *pichCharPosition    // character position of error
);

Retrieves the location in the source code where an error occurred while the scripting engine was running a script.

  • Returns S_OK if successful, or E_FAIL if the location was not retrieved.
pdwSourceContext
[out] Address of a variable that receives a cookie that identifies the context. The interpretation of this parameter depends on the host application.
pulLineNumber
[out] Address of a variable that receives the line number in the source file where the error occurred.
pichCharPosition
[out] Address of a variable that receives the character position in the line where the error occurred.


IActiveScriptParse

Microsoft® Windows® Script Interfaces
IActiveScriptParse 		Language Reference
Previous
Next

If the Windows Script engine allows raw text code scriptlets to be added to the script or allows expression text to be evaluated at run time, it implements the IActiveScriptParse interface. For interpreted scripting languages that have no independent authoring environment, such as VBScript, this provides an alternate mechanism (other than IPersist*) to get script code into the scripting engine, and to attach script fragments to various object events.

Methods in Vtable Order

Method | Description
InitNew | Initializes the scripting engine.
AddScriptlet | Adds a code scriptlet to the script.
ParseScriptText | Parses the given code scriptlet, adding declarations into the name space and evaluating code as appropriate.


IActiveScriptParse::AddScriptlet

Microsoft® Windows® Script Interfaces
IActiveScriptParse::AddScriptlet 		Language Reference
Previous
Next

HRESULT AddScriptlet(
    LPCOLESTR pstrDefaultName,   // address of default name of scriptlet
    LPCOLESTR pstrCode,          // address of scriptlet text
    LPCOLESTR pstrItemName,      // address of item name
    LPCOLESTR pstrSubItemName,   // address of subitem name
    LPCOLESTR pstrEventName,     // address of event name
    LPCOLESTR pstrDelimiter,     // address of end-of-scriptlet delimiter
    DWORD dwSourceContextCookie, // application-defined value for debugging
    ULONG ulStartingLineNumber,  // starting line of the script
    DWORD dwFlags,               // scriptlet flags
    BSTR *pbstrName,             // address of actual name of scriptlet
    EXCEPINFO *pexcepinfo        // address of exception information
);

Adds a code scriptlet to the script. This method is used in environments where the persistent state of the script is intertwined with the host document and the host is responsible for restoring the script, rather than through an IPersist* interface. The primary examples are HTML scripting languages that allow scriptlets of code embedded in the HTML document to be attached to intrinsic events (for instance, ONCLICK="button1.text='Exit'").

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    DISP_E_EXCEPTION | An exception occurred in the parsing of the scriptlet; the pexcepinfo parameter contains information about the exception.
    E_INVALIDARG | An argument was invalid.
    E_NOTIMPL | This method is not supported; the scripting engine does not support adding event-sinking scriptlets.
    E_POINTER | An invalid pointer was specified.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine has not yet been loaded or initialized) and therefore failed.
    OLESCRIPT_E_INVALIDNAME | The default name supplied is invalid in this scripting language.
    OLESCRIPT_E_SYNTAX | An unspecified syntax error occurred in the scriptlet.

pstrDefaultName
[in] Address of a default name to associate with the scriptlet. If the scriptlet does not contain naming information (as in the ONCLICK example above), this name will be used to identify the scriptlet. If this parameter is NULL, the scripting engine manufactures a unique name, if necessary.
pstrCode
[in] Address of the scriptlet text to add. The interpretation of this string depends on the scripting language.
pstrItemName
[in] Address of a buffer that contains the item name associated with this scriptlet. This parameter, in addition to pstrSubItemName, identifies the object for which the scriptlet is an event handler.
pstrSubItemName
[in] Address of a buffer that contains the name of a subobject of the named item with which this scriptlet is associated; this name must be found in the named item's type information. This parameter is NULL if the scriptlet is to be associated with the named item instead of a subitem. This parameter, in addition to pstrItemName, identifies the specific object for which the scriptlet is an event handler.
pstrEventName
[in] Address of a buffer that contains the name of the event for which the scriptlet is an event handler.
pstrDelimiter
[in] Address of the end-of-scriptlet delimiter. When the pstrCode parameter is parsed from a stream of text, the host typically uses a delimiter, such as two single quotation marks ("), to detect the end of the scriptlet. This parameter specifies the delimiter that the host used, allowing the scripting engine to provide some conditional primitive preprocessing (for example, replacing a single quotation mark ['] with two single quotation marks for use as a delimiter). Exactly how (and if) the scripting engine makes use of this information depends on the scripting engine. Set this parameter to NULL if the host did not use a delimiter to mark the end of the scriptlet.
dwSourceContextCookie
[in] Application-defined value that is used for debugging purposes.
ulStartingLineNumber
[in] Zero-based value that specifies which line the parsing will begin at.
dwFlags
[in] Flags associated with the scriptlet. Can be a combination of the following values:

Return Value | Meaning
SCRIPTTEXT_ISVISIBLE | Indicates that the script text should be visible (and, therefore, callable by name) as a global method in the name space of the script.
SCRIPTTEXT_ISPERSISTENT | Indicates that the code added during this call should be saved if the scripting engine is saved (for example, through a call to IPersist*::Save), or if the scripting engine is reset by way of a transition back to the initialized state. For more information about this state, see Script Engine States.

pbstrName
[out] Actual name used to identify the scriptlet. This will be, in order of preference: a name explicitly specified in the scriptlet text, the default name provided in pstrDefaultName, or a unique name synthesized by the scripting engine.
pexcepinfo
[out] Address of a structure containing exception information. This structure should be filled in if DISP_E_EXCEPTION is returned.


IActiveScriptParse::InitNew

Microsoft® Windows® Script Interfaces
IActiveScriptParse::InitNew 		Language Reference
Previous
Next

HRESULT InitNew(void);

Initializes the scripting engine.

  • Returns S_OK if successful, or E_FAIL if an error occurred during initialization.

Before the scripting engine can be used, one of the following methods must be called: IPersist*::Load, IPersist*::InitNew, or IActiveScriptParse::InitNew. The semantics of this method are identical to IPersistStreamInit::InitNew, in that this method tells the scripting engine to initialize itself. Note that it is not valid to call both IPersist*::InitNew or IActiveScriptParse::InitNew and IPersist*::Load, nor is it valid to call IPersist*::InitNew, IActiveScriptParse::InitNew, or IPersist*::Load more than once.


IActiveScriptParse::ParseScriptText

Microsoft® Windows® Script Interfaces
IActiveScriptParse::ParseScriptText 		Language Reference
Previous
Next

HRESULT ParseScriptText(
    LPCOLESTR pstrCode,          // address of scriptlet text
    LPCOLESTR pstrItemName,      // address of item name
    IUnknown *punkContext,       // address of debugging context
    LPCOLESTR pstrDelimiter,     // address of end-of-scriptlet delimiter
    DWORD dwSourceContextCookie, // application-defined value for debugging
    ULONG ulStartingLineNumber,  // starting line of the script
    DWORD dwFlags,               // scriptlet flags
    VARIANT *pvarResult,         // address of buffer for results
    EXCEPINFO *pexcepinfo        // address of buffer for error data
);

Parses the given code scriptlet, adding declarations into the name space and evaluating code as appropriate.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    DISP_E_EXCEPTION | An exception occurred in the processing of the scriptlet. The pexcepinfo parameter contains information about the exception.
    E_INVALIDARG | An argument was invalid.
    E_POINTER | An invalid pointer was specified.
    E_NOTIMPL | This method is not supported. The scripting engine does not support run-time evaluation of expressions or statements.
    E_UNEXPECTED | The call was not expected (for example, the scripting engine is in the uninitialized or closed state, or the SCRIPTTEXT_ISEXPRESSION flag was set and the scripting engine is in the initialized state).
    OLESCRIPT_E_SYNTAX | An unspecified syntax error occurred in the scriptlet.

pstrCode
[in] Address of the scriptlet text to evaluate. The interpretation of this string depends on the scripting language.
pstrItemName
[in] Address of the item name that gives the context in which the scriptlet is to be evaluated. If this parameter is NULL, the code is evaluated in the scripting engine's global context.
punkContext
[in] Address of the context object. This object is reserved for use in a debugging environment, where such a context may be provided by the debugger to represent an active run-time context. If this parameter is NULL, the engine uses pstrItemName to identify the context.
pstrDelimiter
[in] Address of the end-of-scriptlet delimiter. When pstrCode is parsed from a stream of text, the host typically uses a delimiter, such as two single quotation marks ("), to detect the end of the scriptlet. This parameter specifies the delimiter that the host used, allowing the scripting engine to provide some conditional primitive preprocessing (for example, replacing a single quotation mark ['] with two single quotation marks for use as a delimiter). Exactly how (and if) the scripting engine makes use of this information depends on the scripting engine. Set this parameter to NULL if the host did not use a delimiter to mark the end of the scriptlet.
dwSourceContextCookie
[in] Application-defined value that is used for debugging purposes.
ulStartingLineNumber
[in] Zero-based value that specifies which line the parsing will begin at.
dwFlags
[in] Flags associated with the scriptlet. Can be a combination of these values:

Value | Meaning
SCRIPTTEXT_ISEXPRESSION | If the distinction between a computational expression and a statement is important but syntactically ambiguous in the script language, this flag specifies that the scriptlet is to be interpreted as an expression, rather than as a statement or list of statements. By default, statements are assumed unless the correct choice can be determined from the syntax of the scriptlet text.
SCRIPTTEXT_ISPERSISTENT | Indicates that the code added during this call should be saved if the scripting engine is saved (for example, through a call to IPersist*::Save), or if the scripting engine is reset by way of a transition back to the initialized state.
SCRIPTTEXT_ISVISIBLE | Indicates that the script text should be visible (and, therefore, callable by name) as a global method in the name space of the script.

pvarResult
[out] Address of a buffer that receives the results of scriptlet processing, or NULL if the caller expects no result (that is, the SCRIPTTEXT_ISEXPRESSION value is not set).
pexcepinfo
[out] Address of a structure that receives exception information. This structure is filled if IActiveScriptParse::ParseScriptText returns DISP_E_EXCEPTION.

If the scripting engine is in the initialized state, no code will actually be evaluated during this call; rather, such code is queued and executed when the scripting engine is transitioned into (or through) the started state. Because execution is not allowed in the initialized state, it is an error to call this method with the SCRIPTTEXT_ISEXPRESSION flag when in the initialized state.

The scriptlet can be an expression, a list of statements, or anything allowed by the script language. For example, this method is used in the evaluation of the HTML <SCRIPT> tag, which allows statements to be executed as the HTML page is being constructed, rather than just compiling them into the script state.

The code passed to this method must be a valid, complete portion of code. For example, in VBScript it is illegal to call this method once with Sub Function(x) and then a second time with End Sub. The parser must not wait for the second call to complete the subroutine, but rather must generate a parse error because a subroutine declaration was started but not completed.

For more information about script states, see Script Engine States.


IActiveScriptSite

Microsoft® Windows® Script Interfaces
IActiveScriptSite 		Language Reference
Previous
Next

The host must create a site for the Windows Script engine by implementing the IActiveScriptSite interface. Usually, this site will be associated with the container of all the objects that are visible to the script (for example, the ActiveX Controls). Typically, this container will correspond to the document or page being viewed. Microsoft Internet Explorer, for example, would create such a container for each HTML page being displayed. Each ActiveX control (or other automation object) on the page, and the scripting engine itself, would be enumerable within this container.

Methods in Vtable Order

Method | Description
GetLCID | Retrieves the locale identifier that the host uses for displaying user-interface elements.
GetItemInfo | Obtains information about an item that was added to an engine through a call to the IActiveScript::AddNamedItem method.
GetDocVersionString | Retrieves a host-defined string that uniquely identifies the current document version from the host's point of view.
OnScriptTerminate | Called when the script has completed execution.
OnStateChange | Informs the host that the scripting engine has changed states.
OnScriptError | Informs the host that an execution error occurred while the engine was running the script.
OnEnterScript | Informs the host that the scripting engine has begun executing the script code.
OnLeaveScript | Informs the host that the scripting engine has returned from executing script code.


IActiveScriptSite::GetDocVersionString

Microsoft® Windows® Script Interfaces
IActiveScriptSite::GetDocVersionString 		Language Reference
Previous
Next

HRESULT GetDocVersionString(
    BSTR *pbstrVersionString  // address of document version string
);

Retrieves a host-defined string that uniquely identifies the current document version. If the related document has changed outside the scope of Windows Script (as in the case of an HTML page being edited with NotePad), the scripting engine can save this along with its persisted state, forcing a recompile the next time the script is loaded.

  • Returns S_OK if successful, or E_NOTIMPL if this method is not supported.
pstrVersionString
[out] Address of the host-defined document version string.

If E_NOTIMPL is returned, the scripting engine should assume that the script is in sync with the document.


IActiveScriptSite::GetItemInfo

Microsoft® Windows® Script Interfaces
IActiveScriptSite::GetItemInfo 		Language Reference
Previous
Next

HRESULT IActiveScriptSite::GetItemInfo(
    LPCOLESTR pstrName,     // address of item name
    DWORD dwReturnMask,     // bit mask for information retrieval
    IUnknown **ppunkItem,   // address of pointer to item's IUnknown
    ITypeInfo **ppTypeInfo  // address of pointer to item's ITypeInfo
);

Allows the scripting engine to obtain information about an item added with the IActiveScript::AddNamedItem method.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_INVALIDARG | An argument was invalid.
    E_POINTER | An invalid pointer was specified.
    TYPE_E_ELEMENTNOTFOUND | An item of the specified name was not found.

pstrName
[in] The name associated with the item, as specified in the IActiveScript::AddNamedItem method.
dwReturnMask
[in] A bit mask specifying what information about the item should be returned. The scripting engine should request the minimum amount of information possible because some of the return parameters (for example, ITypeInfo) can take considerable time to load or generate. Can be a combination of the following values:

Value | Meaning
SCRIPTINFO_IUNKNOWN | Return the IUnknown interface for this item.
SCRIPTINFO_ITYPEINFO | Return the ITypeInfo interface for this item.

ppunkItem
[out] Address of a variable that receives a pointer to the IUnknown interface associated with the given item. The scripting engine can use the IUnknown::QueryInterface method to obtain the IDispatch interface for the item. This parameter receives NULL if dwReturnMask does not include the SCRIPTINFO_IUNKNOWN value. Also, it receives NULL if there is no object associated with the item name; this mechanism is used to create a simple class when the named item was added with the SCRIPTITEM_CODEONLY flag set in the IActiveScript::AddNamedItem method.
ppTypeInfo
[out] Address of a variable that receives a pointer to the ITypeInfo interface associated with the item. This parameter receives NULL if dwReturnMask does not include the SCRIPTINFO_ITYPEINFO value, or if type information is not available for this item. If type information is not available, the object cannot source events, and name binding must be realized with the IDispatch::GetIDsOfNames method. Note that the ITypeInfo interface retrieved describes the item's coclass (TKIND_COCLASS) because the object may support multiple interfaces and event interfaces. If the item supports the IProvideMultipleTypeInfo interface, the ITypeInfo interface retrieved is the same as the index zero ITypeInfo that would be obtained using the IProvideMultipleTypeInfo::GetInfoOfIndex method.

This method retrieves only the information indicated by the dwReturnMask parameter; this improves performance. For example, if an ITypeInfo interface is not needed for an item, it is simply not specified in dwReturnMask.


IActiveScriptSite::GetLCID

Microsoft® Windows® Script Interfaces
IActiveScriptSite::GetLCID 		Language Reference
Previous
Next

HRESULT GetLCID(
    LCID *plcid  // address of variable for language identifier
);

Retrieves the locale identifier associated with the host's user interface. The scripting engine uses the identifier to ensure that error strings and other user-interface elements generated by the engine appear in the appropriate language.

  • Returns one of the following values:

    Return Value | Meaning
    S_OK | Success.
    E_NOTIMPL | This method is not implemented. Use the system-defined locale.
    E_POINTER | An invalid pointer was specified.

plcid
[out] Address of a variable that receives the locale identifier for user-interface elements displayed by the scripting engine.

If this method returns E_NOTIMPL, the system-defined locale identifier should be used.


IActiveScriptSite::OnEnterScript

Microsoft® Windows® Script Interfaces
IActiveScriptSite::OnEnterScript 		Language Reference
Previous
Next

HRESULT OnEnterScript(void);

Informs the host that the scripting engine has begun executing the script code.

  • Returns S_OK if successful.

The scripting engine must call this method on every entry or reentry into the scripting engine. For example, if the script calls an object that then fires an event handled by the scripting engine, the scripting engine must call IActiveScriptSite::OnEnterScript before executing the event, and must call the IActiveScriptSite::OnLeaveScript method after executing the event but before returning to the object that fired the event. Calls to this method can be nested. Every call to this method requires a corresponding call to IActiveScriptSite::OnLeaveScript.


IActiveScriptSite::OnLeaveScript

Microsoft® Windows® Script Interfaces
IActiveScriptSite::OnLeaveScript 		Language Reference
Previous
Next

HRESULT IActiveScriptSite::OnLeaveScript(void);

Informs the host that the scripting engine has returned from executing script code.

  • Returns S_OK if successful.

The scripting engine must call this method before returning control to a calling application that entered the scripting engine. For example, if the script calls an object that then fires an event handled by the scripting engine, the scripting engine must call the IActiveScriptSite::OnEnterScript method before executing the event, and must call IActiveScriptSite::OnLeaveScript after executing the event before returning to the object that fired the event. Calls to this method can be nested. Every call to IActiveScriptSite::OnEnterScript requires a corresponding call to this method.


IActiveScriptSite::OnScriptError

Microsoft® Windows® Script Interfaces
IActiveScriptSite::OnScriptError 		Language Reference
Previous
Next

HRESULT IActiveScriptSite::OnScriptError(
    IActiveScriptError *pase  // address of error interface
);

Informs the host that an execution error occurred while the engine was running the script.

  • Returns S_OK if the error was correctly handled, or an OLE defined error code otherwise.
pase
[in] Address of the error object's IActiveScriptError interface. A host can use this interface to obtain information about the execution error.


IActiveScriptSite::OnScriptTerminate

Microsoft® Windows® Script Interfaces
IActiveScriptSite::OnScriptTerminate 		Language Reference
Previous
Next

HRESULT OnScriptTerminate(
    VARIANT *pvarResult,   // address of script results
    EXCEPINFO *pexcepinfo  // address of structure with exception information
);

Informs the host that the script has completed execution.

  • Returns S_OK if successful.
pvarResult
[in] Address of a variable that contains the script result, or NULL if the script produced no result.
pexcepinfo
[in] Address of an EXCEPINFO structure that contains exception information generated when the script terminated, or NULL if no exception was generated.

The scripting engine calls this method before the call to the IActiveScriptSite::OnStateChange method, with the SCRIPTSTATE_INITIALIZED flag set, is completed. This method can be used to return completion status and results to the host. Note that many script languages, which are based on sinking events from the host, have life spans that are defined by the host. In this case, this method may never be called.


IActiveScriptSite::OnStateChange

Microsoft® Windows® Script Interfaces
IActiveScriptSite::OnStateChange 		Language Reference
Previous
Next

HRESULT IActiveScriptSite::OnStateChange(
    SCRIPTSTATE ssScriptState  // new state of engine
);

Informs the host that the scripting engine has changed states.

  • Returns S_OK if successful.
ssScriptState
[in] Value that indicates the new script state. See the IActiveScript::GetScriptState method for a description of the states.


IActiveScriptSiteWindow

Microsoft® Windows® Script Interfaces
IActiveScriptSiteWindow 		Language Reference
Previous
Next

This interface is implemented by hosts that support a user interface on the same object as IActiveScriptSite. Hosts that do not support a user interface, such as servers, would not implement the IActiveScriptSiteWindow interface. The scripting engine accesses this interface by calling QueryInterface from IActiveScriptSite.

Methods in Vtable Order

Method | Description
GetWindow | Retrieves the window handle that can act as the owner of a pop-up window that the scripting engine must display.
EnableModeless | Causes the host to enable or disable its main window as well as any modeless dialog boxes.


IActiveScriptSiteWindow::EnableModeless

Microsoft® Windows® Script Interfaces
IActiveScriptSiteWindow::EnableModeless 		Language Reference
Previous
Next

HRESULT IActiveScriptSite::EnableModeless(
    BOOL fEnable  // enable flag
);

Causes the host to enable or disable its main window as well as any modeless dialog boxes.

  • Returns S_OK if successful, or E_FAIL if an error occurred.
fEnable
[in] Flag that, if TRUE, enables the main window and modeless dialogs or, if FALSE, disables them.

This method is identical to the IOleInPlaceFrame::EnableModeless method.

Calls to this method can be nested.


IActiveScriptSiteWindow::GetWindow

Microsoft® Windows® Script Interfaces
IActiveScriptSiteWindow::GetWindow 		Language Reference
Previous
Next

HRESULT GetWindow(
    HWND *phwnd  // address of variable for window handle
);

Retrieves the handle to a window that can act as the owner of a pop-up window that the scripting engine must display.

  • Returns S_OK if successful, or E_FAIL if an error occurred.
phwnd
[out] Address of a variable that receives the window handle.

This method is similar to the IOleWindow::GetWindow method.


Enumerations

Microsoft® Windows® Script Interfaces
Enumerations 		Language Reference
Previous
Next

This section describes the enumerations used by Windows Script engines.

  • SCRIPTSTATE
  • SCRIPTTHREADSTATE


SCRIPTSTATE

Microsoft® Windows® Script Interfaces
SCRIPTSTATE 		Language Reference
Previous
Next

typedef enum tagSCRIPTSTATE {
    SCRIPTSTATE_UNINITIALIZED = 0,
    SCRIPTSTATE_INITIALIZED   = 5,
    SCRIPTSTATE_STARTED       = 1,
    SCRIPTSTATE_CONNECTED     = 2,
    SCRIPTSTATE_DISCONNECTED  = 3,
    SCRIPTSTATE_CLOSED        = 4
} SCRIPTSTATE;

Contains named constant values that specify the state of a scripting engine. This enumeration is used by the IActiveScript::GetScriptState, IActiveScript::SetScriptState, and IActiveScriptSite::OnStateChange methods.

SCRIPTSTATE_UNINITIALIZED
Script has just been created, but has not yet been initialized using an IPersist* interface and IActiveScript::SetScriptSite.
SCRIPTSTATE_INITIALIZED
Script has been initialized, but is not running (connecting to other objects or sinking events) or executing any code. Code can be queried for execution by calling the IActiveScriptParse::ParseScriptText method.
SCRIPTSTATE_STARTED
Script can execute code, but is not yet sinking the events of objects added by the IActiveScript::AddNamedItem method.
SCRIPTSTATE_CONNECTED
Script is loaded and connected for sinking events.
SCRIPTSTATE_DISCONNECTED
Script is loaded and has a run-time execution state, but is temporarily disconnected from sinking events.
SCRIPTSTATE_CLOSED
Script has been closed. The scripting engine no longer works and returns errors for most methods.


SCRIPTTHREADSTATE

Microsoft® Windows® Script Interfaces
SCRIPTTHREADSTATE 		Language Reference
Previous

typedef enum tagSCRIPTTHREADSTATE {
    SCRIPTTHREADSTATE_NOTINSCRIPT  = 0,
    SCRIPTTHREADSTATE_RUNNING      = 1
} SCRIPTTHREADSTATE;

Contains named constant values that specify the state of a thread in a scripting engine. This enumeration is used by the IActiveScript::GetScriptThreadState method.

SCRIPTTHREADSTATE_NOTINSCRIPT
Specified thread is not currently servicing a scripted event, processing immediately executed script text, or running a script macro.
SCRIPTTHREADSTATE_RUNNING
Specified thread is actively servicing a scripted event, processing immediately executed script text, or running a script macro.


IDispatchEx Interface

IDispatchEx, an extension of the IDispatch interface, supports features appropriate for dynamic languages such as scripting languages. This section describes the IDispatchEx interface itself, the differences between IDispatch and IDispatchEx, and the rationale for the extensions. It is expected that readers are familiar with IDispatch and have access to the IDispatch documentation.

Remarks

IDispatch was developed essentially for Microsoft® Visual Basic®. The primary limitation of IDispatch is that it assumes that objects are static. In other words, since objects do not change during run time, type information can fully describe them at compile time. Dynamic run-time models that are found in scripting languages such as Visual Basic Scripting Edition (VBScript) and JScript and object models such as Dynamic HTML require a more flexible interface.

IDispatchEx was developed to provide all the services of IDispatch as well as some extensions that are appropriate for more dynamic late-bound languages such as scripting languages. The additional features of IDispatchEx beyond those provided by IDispatch are:

  • Add new members to an object ("expando") — use GetDispID with the fdexNameEnsure flag.
  • Delete members of an object — use DeleteMemberByName or DeleteMemberByDispID.
  • Case-sensitive dispatch operations — use fdexNameCaseSensitive or fdexNameCaseInsensitive.
  • Search for member with implicit name — use fdexNameImplicit.
  • Enumerate DISPIDs of an object — use GetNextDispID.
  • Map from DISPID to element name — use GetMemberName.
  • Obtain properties of object members — use GetMemberProperties.
  • Method invocation with this pointer — use InvokeEx with DISPATCH_METHOD.
  • Allow browsers that support the concept of name spaces to obtain the name space parent of an object — use GetNameSpaceParent.

Objects that support IDispatchEx might also support IDispatch for backward compatibility. The dynamic nature of objects that support IDispatchEx has a few implications for the IDispatch interface of those objects. For example, IDispatch makes the following assumption:

The member and parameter DISPIDs must remain constant for the lifetime of the object. This allows a client to obtain DISPIDs once and cache them for later use.

Since IDispatchEx allows the addition and deletion of members, the set of valid DISPIDs does not remain constant. However, IDispatchEx requires that the mapping between DISPID and member name remain constant. This means that if a member is deleted:

  • The DISPID cannot be reused until a member with the same name is created.
  • The DISPID must remain valid for GetNextDispID.
  • The DISPID must be accepted gracefully by any of the IDispatch/IDispatchEx methods — they must recognize the member as deleted and return an appropriate error code (usually DISP_E_MEMBERNOTFOUND or S_FALSE).

Examples

This JScript code in the function test() does the following:

  • Creates a new object by calling the Object constructor and assigns a pointer to the new object to the variable Obj.
  • Creates a new element named Elem in the object and assigns to this element a pointer to the function cat.
  • Calls this function. Since it is being called as a method, the this pointer refers to the object Obj. The function adds a new element, Bar, to the object.

The full HTML code is:

   <HTML>
   <BODY>
   <SCRIPT LANGUAGE="JScript">
   function cat()
   {
      // Create new element and assign the value 10
      this.Bar = 10;
   }

   function test()
   {
      // Construct new object
      Obj = new Object();

      // Create new element and assign function pointer
      Obj.Elem = cat;

      // Call Elem method ("this" == Obj)
      Obj.Elem();

      // Obj.Bar now exists
   }
   test();
   </SCRIPT>
   </BODY>
   </HTML>

A control placed on this same Web page could obtain a dispatch pointer to the script engines from the browser. The control could then implement the function test():

   <HTML>
   <BODY>
   <SCRIPT LANGUAGE="JScript">
   function cat()
   {
      // Create new element and assign the value 10
      this.Bar = 10;
   }
   </SCRIPT>
   <OBJECT ID="test" <CLASSID="CLSID:9417DB5D-FA2A-11D0-8CB3-00C04FC2B085">>
   </OBJECT>
   </BODY>
   </HTML>

Code from the control, test, does the same thing as the JScript function test(). Note that these dispatch calls are made into the running JScript engine and change the state of the engine:

  • Obtains the dispatch pointer to the cat function using GetDispID().
  • Obtains the dispatch pointer to the Object function using GetDispID().
  • Constructs an object by calling the Object function with InvokeEx() and obtains a dispatch pointer to the newly constructed object.
  • Creates a new element, Elem, in the object using GetDispID() with the fdexNameEnsure flag.
  • Puts the dispatch pointer to cat in the element using InvokeEx().
  • Calls the dispatch pointer to cat as a method by calling InvokeEx() and passing in the dispatch pointer to the constructed object as the this pointer.
  • The cat method creates a new element, Bar, on the current this object.
  • Verifies that the new element, Bar, was created in the constructed object by enumerating through the elements using GetNextDispID().

The code for the test control:

   BOOL test(IDispatchEx *pdexScript)
   {
      HRESULT hr;
      VARIANT var;
      BSTR bstrName;
      DISPID dispid, putid;
      IDispatchEx *pdexObj;
      IDispatch   *pdispObj, *pdispCat;
      DISPPARAMS dispparams, dispparamsNoArgs = {NULL, NULL, 0, 0};

      // Get dispatch pointer for "cat"
      bstrName = SysAllocString(OLESTR("cat"));
      pdexScript->GetDispID(bstrName, 0, &dispid);
      SysFreeString(bstrName);
      pdexScript->InvokeEx(dispid, LOCALE_USER_DEFAULT,
         DISPATCH_PROPERTYGET, &dispparamsNoArgs,
         &var, NULL, NULL);
      pdispCat = var.pdispVal;

      // Create object by calling "Object" constructor
      bstrName = SysAllocString(OLESTR("Object"));
      pdexScript->GetDispID(bstrName, 0, &dispid);
      SysFreeString(bstrName);
      pdexScript->InvokeEx(dispid, LOCALE_USER_DEFAULT,
         DISPATCH_CONSTRUCT, &dispparamsNoArgs,
         &var, NULL, NULL);
      pdispObj = var.pdispVal;
      pdispObj->QueryInterface(IID_IDispatchEx, (void **)&pdexObj);

      // Create new element in object
      bstrName = SysAllocString(OLESTR("Elem"));
      pdexObj->GetDispID(bstrName, fdexNameEnsure, &dispid);
      SysFreeString(bstrName);

      // Assign "cat" dispatch pointer to element
      putid = DISPID_PROPERTYPUT;
      var.vt = VT_DISPATCH;
      var.pdispVal = pdispCat;
      dispparams.rgvarg = &var;
      dispparams.rgdispidNamedArgs = &putid;
      dispparams.cArgs = 1;
      dispparams.cNamedArgs = 1;
      pdexObj->InvokeEx(dispid, LOCALE_USER_DEFAULT,
         DISPATCH_PROPERTYPUTREF, &dispparams,
         NULL, NULL, NULL);

      // Invoke method with "this" pointer
      putid = DISPID_THIS;
      var.vt = VT_DISPATCH;
      var.pdispVal = pdispObj;
      dispparams.rgvarg = &var;
      dispparams.rgdispidNamedArgs = &putid;
      dispparams.cArgs = 1;
      dispparams.cNamedArgs = 1;
      pdexObj->InvokeEx(dispid, LOCALE_USER_DEFAULT,
         DISPATCH_METHOD, &dispparams,
      NULL, NULL, NULL);

      // Confirm that new element "Bar" is in object
      hr = pdexObj->GetNextDispID(fdexEnumAll, DISPID_STARTENUM, &dispid);
      while (hr != S_FALSE)
      {
         pdexObj->GetMemberName(dispid, &bstrName);
         if (!wcscmp(bstrName, OLESTR("Bar")))
            return TRUE;
         SysFreeString(bstrName);
         hr = pdexObj->GetNextDispID(fdexEnumAll, dispid, &dispid);
      }
      return FALSE;
   }

Methods

IDispatchEx Methods

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx Methods

In This Section

IDispatchEx::DeleteMemberByDispID
Deletes a member by DISPID.
IDispatchEx::DeleteMemberByName
Deletes a member by name.
IDispatchEx::GetDispID
Maps a single member name to its corresponding DISPID, which can then be used on subsequent calls to IDispatchEx::InvokeEx.
IDispatchEx::GetMemberName
Retrieves the name of a member.
IDispatchEx::GetMemberProperties
Retrieves a member's properties.
IDispatchEx::GetNameSpaceParent
Retrieves the interface for the namespace parent of an object.
IDispatchEx::GetNextDispID
Enumerates the members of the object.
IDispatchEx::InvokeEx
Provides access to properties and methods exposed by an IDispatchEx object.

Related Section

IDispatchEx Interface

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::DeleteMemberByDispID

Deletes a member by DISPID.

HRESULT DeleteMemberByDispID(
    DISPID id
);

Returns one of the following values:

S_OK | Success.
S_FALSE | Member exists but cannot be deleted.

Parameters

id
Member identifier. Uses GetDispID or GetNextDispID to obtain the dispatch identifier.

Remarks

If the member is deleted, the DISPID needs to remain valid for GetNextDispID.

If a member with a given name is deleted and later a member with the same name is recreated, the DISPID should be the same. (Whether member names that differ only by case are the "same" is object-dependent.)

Example

BSTR bstrName;
DISPID dispid;
IDispatch *pdex;

// Assign to pdex and bstrName
pdex->GetDispID(bstrName, fdexNameCaseSensitive, &dispid);
pdex->DeleteMemberByDispID(dispid);

See Also

IDispatchEx Interface | IDispatchEx::GetDispID | IDispatchEx::GetNextDispID

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::DeleteMemberByName

Deletes a member by name.

HRESULT DeleteMemberByName(
   BSTR bstrName,
   DWORD grfdex
);

Returns one of the following values:

S_OK | Success.
S_FALSE | Member exists but cannot be deleted.

Parameters

bstrName
Name of member to be deleted.
grfdex
Determines if the member name is case sensitive. This can be one of the following values:
Value | Meaning
fdexNameCaseSensitive | Requests that the name lookup be done in a case-sensitive manner. Can be ignored by object that does not support case-sensitive lookup.
fdexNameCaseInsensitive | Requests that the name lookup be done in a case-insensitive manner. Can be ignored by object that does not support case-insensitive lookup.

Remarks

If the member is deleted, the DISPID needs to remain valid for GetNextDispID.

If a member with a given name is deleted and later a member with the same name is recreated, the DISPID should be the same. (Whether members that differ only by case are the "same" is object-dependent.)

Example

BSTR bstrName;
IDispatch *pdex;

// Assign to pdex and bstrName
pdex->DeleteMemberByName(bstrName, fdexNameCaseSensitive);

See Also

IDispatchEx Interface

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::GetDispID

Maps a single member name to its corresponding DISPID, which can then be used on subsequent calls to IDispatchEx::InvokeEx.

 HRESULT GetDispID(
   BSTR bstrName,
   DWORD grfdex,
   DISPID *pid
);

Returns one of the following values:

S_OK | Success.
E_OUTOFMEMORY | Out of Memory.
DISP_E_UNKNOWNNAME | The name was not known.

Parameters

bstrName
Passed in name to be mapped.
grfdex
Determines the options for obtaining the member identifier. This can be a combination of the following values:
Value | Meaning
fdexNameCaseSensitive | Requests that the name lookup be done in a case-sensitive manner. May be ignored by object that does not support case-sensitive lookup.
fdexNameEnsure | Requests that the member be created if it does not already exist. The new member should be created with the value VT_EMPTY.
fdexNameImplicit | Indicates that the caller is searching object(s) for a member of a particular name when the base object is not explicitly specified.
fdexNameCaseInsensitive | Requests that the name lookup be done in a case-insensitive manner. May be ignored by object that does not support case-insensitive lookup.
pid
Pointer to caller-allocated location to receive DISPID result. If an error occurs, pid contains DISPID_UNKNOWN.

Remarks

GetDispID can be used instead of GetIDsOfNames to obtain the DISPID for a given member.

Because IDispatchEx allows the addition and deletion of members, the set of DISPIDs does not remain constant for the lifetime of an object.

The unused riid parameter in IDispatch::GetIDsOfNames has been removed.

Example

BSTR bstrName;
   DISPID dispid;
   IDispatch *pdex;

   // Assign to pdex and bstrName
   pdex->GetDispID(bstrName, fdexNameCaseSensitive, &dispid);
   // Use dispid

See Also

IDispatchEx Interface

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::GetMemberName

Retrieves the name of a member.

HRESULT GetMemberName(
   DISPID id,
   BSTR *pbstrName
);

Returns one of the following values:

S_OK | Success.
DISP_E_UNKNOWNNAME | The name was not known.

Parameters

id
Identifies the member. Uses GetDispID or GetNextDispID to obtain the dispatch identifier.
pbstrName
Address of a BSTR that receives the name of the member. The calling application is responsible for freeing this value.

Example

HRESULT hr;
   BSTR bstrName;
   DISPID dispid;
   IDispatch *pdex;

   // Assign to pdex
   hr = pdex->GetNextDispID(fdexEnumAll, DISPID_STARTENUM, &dispid);
   while (hr != S_FALSE)
   {
   pdex->GetMemberName(dispid, &bstrName);
   if (!wcscmp(bstrName, OLESTR("Bar")))
      return TRUE;
   SysFreeString(bstrName);
   hr = pdexObj->GetNextDispID(fdexEnumAll, dispid, &dispid);
}

See Also

IDispatchEx Interface | IDispatchEx::GetDispID | IDispatchEx::GetNextDispID

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::GetMemberProperties

Retrieves a member's properties.

HRESULT GetMemberProperties(
   DISPID id,
   DWORD grfdexFetch,
   DWORD *pgrfdex
);

Returns one of the following values:

S_OK | Success.
DISP_E_UNKNOWNNAME | The name was not known.

Parameters

id
Identifies the member. Uses GetDispID or GetNextDispID to obtain the dispatch identifier.
grfdexFetch
Determines which properties to retrieve. This can be a combination of the values listed under pgrfdex and/or a combination of the following values:
Value | Meaning
grfdexPropCanAll | Combines fdexPropCanGet, fdexPropCanPut, fdexPropCanPutRef, fdexPropCanCall, fdexPropCanConstruct and fdexPropCanSourceEvents.
grfdexPropCannotAll | Combines fdexPropCannotGet, fdexPropCannotPut, fdexPropCannotPutRef, fdexPropCannotCall, fdexPropCannotConstruct and fdexPropCannotSourceEvents.
grfdexPropExtraAll | Combines fdexPropNoSideEffects and fdexPropDynamicType.
grfdexPropAll | Combines grfdexPropCanAll, grfdexPropCannotAll and grfdexPropExtraAll.
pgrfdex
Address of a DWORD that receives the requested properties. This can be a combination of the following values:
Value | Meaning
fdexPropCanGet | The member can be obtained using DISPATCH_PROPERTYGET.
fdexPropCannotGet | The member cannot be obtained using DISPATCH_PROPERTYGET.
fdexPropCanPut | The member can be set using DISPATCH_PROPERTYPUT.
fdexPropCannotPut | The member cannot be set using DISPATCH_PROPERTYPUT.
fdexPropCanPutRef | The member can be set using DISPATCH_PROPERTYPUTREF.
fdexPropCannotPutRef | The member cannot be set using DISPATCH_PROPERTYPUTREF.
fdexPropNoSideEffects | The member does not have any side effects. For example, a debugger could safely get/set/call this member without changing the state of the script being debugged.
fdexPropDynamicType | The member is dynamic and can change during the lifetime of the object.
fdexPropCanCall | The member can be called as a method using DISPATCH_METHOD.
fdexPropCannotCall | The member cannot be called as a method using DISPATCH_METHOD.
fdexPropCanConstruct | The member can be called as a constructor using DISPATCH_CONSTRUCT.
fdexPropCannotConstruct | The member cannot be called as a constructor using DISPATCH_CONSTRUCT.
fdexPropCanSourceEvents | The member can fire events.
fdexPropCannotSourceEvents | The member cannot fire events.

Example

BSTR bstrName;
   DISPID dispid;
   IDispatch *pdex;
   DWORD dwProps;

   // Assign to pdex and bstrName
   pdex->GetDispID(bstrName, fdexNameCaseSensitive, &dispid);
   pdex->GetMemberProperties(dispid, grfdexPropAll, &dwProps);
   if (dwProps & fdexPropCanPut)
      // Assign to member

See Also

IDispatchEx Interface | IDispatchEx::GetDispID | IDispatchEx::GetNextDispID

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::GetNameSpaceParent

Retrieves the interface for the namespace parent of an object.

HRESULT GetNameSpaceParent(
   IUnknown **ppunk
);

Returns S_OK if successful or an OLE-defined error code otherwise.

Parameters

ppunk
Address of an IUnknown interface pointer that receives the namespace parent's interface.

See Also

IDispatchEx Interface

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::GetNextDispID

Enumerates the members of the object.

HRESULT GetNextDispID(
   DWORD grfdex,
   DISPID id,
   DISPID *pid
);

Returns one of the following values:

S_OK | Success.
S_FALSE | Enumeration is done.

Parameters

grfdex
Determines which set of items will be enumerated. This can be a combination of the following values:
Value | Meaning
fdexEnumDefault | Requests that the object enumerates the default elements. The object is allowed to enumerate any set of elements.
fdexEnumAll | Requests that the object enumerates all of the elements. The object is allowed to enumerate any set of elements.
id
Identifies the current member. GetNextDispID will retrieve the item in the enumeration after this one. Uses GetDispID or a previous call to GetNextDispID to obtain this identifier. Uses the DISPID_STARTENUM value to obtain the first identifier of the first item.
pid
Address of a DISPID variable that receives the identifier of the next item in the enumeration.

If a member is deleted by DeleteMemberByName or DeleteMemberByDispID, the DISPID needs to remain valid for GetNextDispID.

Example

HRESULT hr;
   BSTR bstrName;
   DISPID dispid;
   IDispatch *pdex;

   // Assign to pdex
   hr = pdex->GetNextDispID(fdexEnumAll, DISPID_STARTENUM, &dispid);
   while (hr != S_FALSE)
   {
      pdex->GetMemberName(dispid, &bstrName);
      if (!wcscmp(bstrName, OLESTR("Bar")))
      return TRUE;
      SysFreeString(bstrName);

      hr = pdexObj->GetNextDispID(fdexEnumAll, dispid, &dispid);
   }

See Also

IDispatchEx Interface | IDispatchEx::GetDispID | IDispatchEx::GetNextDispID | IDispatchEx::DeleteMemberByName | IDispatchEx::DeleteMemberByDispID

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


IDispatchEx::InvokeEx

Provides access to properties and methods exposed by an IDispatchEx object.

HRESULT InvokeEx(
   DISPID id,
   LCID lcid,
   WORD wFlags,
   DISPARAMS *pdp,
   VARIANT *pVarRes,
   EXCEPINFO *pei,
   IServiceProvider *pspCaller
);

Returns one of the following values:

S_OK | Success.
DISP_E_BADPARAMCOUNT | The number of elements provided to DISPPARAMS is different from the number of arguments accepted by the method or property.
DISP_E_BADVARTYPE | One of the arguments in rgvarg is not a valid variant type.
DISP_E_EXCEPTION | The application needs to raise an exception. In this case, the structure passed in pei should be filled in.
DISP_E_MEMBERNOTFOUND | The requested member does not exist, or the call to InvokeEx tried to set the value of a read-only property.
DISP_E_NONAMEDARGS | This implementation of IDispatch does not support named arguments.
DISP_E_OVERFLOW | One of the arguments in rgvarg could not be coerced to the specified type.
DISP_E_PARAMNOTFOUND | One of the parameter DISPIDs does not correspond to a parameter on the method.
DISP_E_TYPEMISMATCH | One or more of the arguments could not be coerced.
DISP_E_UNKNOWNLCID | The member being invoked interprets string arguments according to the LCID, and the LCID is not recognized. If the LCID is not needed to interpret arguments, this error should not be returned.
DISP_E_PARAMNOTOPTIONAL | A required parameter was omitted.

Parameters

id
Identifies the member. Uses GetDispID or GetNextDispID to obtain the dispatch identifier.
lcid
The locale context in which to interpret arguments. The lcid is passed to InvokeEx to allow the object to interpret its arguments specific to a locale.
wFlags
Flags describing the context of the InvokeEx call:
Value | Meaning
DISPATCH_METHOD | The member is invoked as a method. If a property has the same name, both this and the DISPATCH_PROPERTYGET flag may be set (defined by IDispatch).
DISPATCH_PROPERTYGET | The member is retrieved as a property or data member (defined by IDispatch).
DISPATCH_PROPERTYPUT | The member is changed as a property or data member (defined by IDispatch).
DISPATCH_PROPERTYPUTREF | The member is changed by a reference assignment rather than a value assignment. This flag is valid only when the property accepts a reference to an object (defined by IDispatch).
DISPATCH_CONSTRUCT The member is being used as a constructor. (This is a new value defined by IDispatchEx). The legal values for wFlags are:
DISPATCH_PROPERTYGET
DISPATCH_METHOD
DISPATCH_PROPERTYGET
DISPATCH_METHOD
DISPATCH_PROPERTYPUT
DISPATCH_PROPERTYPUTREF
DISPATCH_PROPERTYPUT
DISPATCH_PROPERTYPUTREF
DISPATCH_CONSTRUCT
pdp
Pointer to a structure containing an array of arguments, an array of argument DISPIDs for named arguments, and counts for the number of elements in the arrays. See the IDispatch documentation for a full description of the DISPPARAMS structure.
pVarRes
Pointer to the location where the result is to be stored or Null if the caller expects no result. This argument is ignored if DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF is specified.
pei
Pointer to a structure that contains exception information. This structure should be filled in if DISP_E_EXCEPTION is returned. Can be Null. See the IDispatch documentation for a full description of the EXCEPINFO structure.
pspCaller
Pointer to a service provider object supplied by the caller, which allows the object to obtain services from the caller. Can be Null.

IDispatchEx::InvokeEx provides all of the same features as IDispatch::Invoke and adds a few extensions:

DISPATCH_CONSTRUCT | Indicates that the item is being used as a constructor.
pspCaller | The pspCaller allows the object access to services provided by the caller. Specific services may be handled by the caller itself or delegated to callers further up the call chain. For example, if a script engine inside a browser makes an InvokeEx call to an external object, the object can follow the pspCaller chain to obtain services from the script engine or browser. (Note that the call chain is not the same as the creation chain — also known as container chain or site chain. The creation chain may be available through some other mechanism such as IObjectWithSite.)
"this" pointer | When DISPATCH_METHOD is set in wFlags, there may be a "named parameter" for the "this" value. The DISPID will be DISPID_THIS and it must be the first named parameter. The unused riid parameter in IDispatch::Invoke has been removed. The puArgArr parameter in IDispatch::Invoke has been removed.

See the IDispatch::Invoke documentation for the following examples:

"Calling a method with no arguments"

"Getting and setting properties"

"Passing parameters"

"Indexed Properties"

"Raising exceptions during Invoke"

"Returning errors"

Example

VARIANT var;
   BSTR bstrName;
   DISPID dispid;
   IDispatch *pdex;
   DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};

   // Assign to pdex and bstrName
   pdex->GetDispID(bstrName, fdexNameCaseSensitive, &dispid);
   pdex->InvokeEx(dispid, LOCALE_USER_DEFAULT,
   DISPATCH_PROPERTYGET, &dispparamsNoArgs,
   &var, NULL, NULL);

See Also

IDispatchEx Interface | IDispatchEx::GetDispID | IDispatchEx::GetNextDispID

© 2001 Microsoft Corporation. All rights reserved.

Build: 9309.1546


getFileVersion メソッド

指定したファイルのバージョン番号を返します。

object.GetFileVersion(pathspec)

引数

object
必ず指定します。FileSystemObject オブジェクトの名前を指定します。
pathspec
必ず指定します。指定したファイルの絶対パスまたは相対パスです。

解説

引数 pathspec に指定した文字列の最後が名前付きのファイルになっていないか、指定したファイルにバージョン情報が含まれていない場合、GetFileVersion メソッドは長さ 0 の文字列 ("") を返します。

メモ GetFileVersion メソッドは、パス文字列で指定された文字列に対してのみ処理を行います。指定されたパスを解決したり、指定されたパスが実際に存在するかどうかを確認したりしません。

次のコードは、GetFileVersion メソッドの使用例です。

function ShowFileVersion(pathspec){
  var fso, s = "";
  fso = new ActiveXObject("Scripting.FileSystemObject");
  s += fso.GetFileVersion(pathspec);
  if (s == "")
s = "バージョン情報はありません。";
  return(s);
}

必要条件

バージョン 1


SerialNumber プロパティ (Jscript)

JScript

SerialNumber プロパティ

ディスク ボリュームを一意に識別する場合に使用されされる 10 進数のシリアル番号を返します。

object.SerialNumber

object には、Drive オブジェクトの名前を指定します。

解説

SerialNumber プロパティを使って、リムーバブル メディア ドライブに正しいディスクが挿入されていることを確認できます。

次のコードは、SerialNumber プロパティの使用例です。

function ShowDriveInfo(drvpath){
  var fso, d, s, t;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)));
  switch (d.DriveType)
  {
    case 0:t = "不明"; break;
    case 1:t = "リムーバブル ディスク"; break;
    case 2:t = "ハード ディスク"; break;
    case 3:t = "ネットワーク ドライブ"; break;
    case 4:t = "CD-ROM"; break;
    case 5:t = "RAM ディスク"; break;
  }
  s = "ドライブ " + d.DriveLetter + ": - " + t;
  s += "<br>" + "SN: " + d.SerialNumber;
  return(s);
}

必要条件

バージョン 1


トピックがありません

クリックしたリンクは、目的ページにジャンプできません。次に、その主な理由と解決法を示します。

理由 | 解決方法
目的トピックの URL に誤りがあるか、URL が変更されました。 | [目次] コマンドまたは [検索] コマンドを使用してください。
インストールに問題があります。 | ヘルプをアンインストールして、再度セットアップを実行してください。


メッセージ ボックスの使用

警告、確認、および入力のメッセージ ボックスを使用する

警告メッセージ ボックス、確認メッセージ ボックス、および入力メッセージ ボックスは、ユーザーからの入力を受け取るためのボックスです。これらのボックスを表示するには、インターフェイスとなる window オブジェクトのメソッドを使用します。window オブジェクトはオブジェクト階層構造の最上位に位置するため、実際には、どのメッセージ ボックスを表示するにも完全な名前 ("window.alert()" など) を使用する必要はありません。とはいえ、これらのボックスがどのオブジェクトに属するのかを覚えておくために完全な名前を使用することをお勧めします。

警告メッセージ ボックス

警告メッセージ ボックスを表示する alert メソッドの引数は、1 つです。この引数には、ユーザーに対して表示するテキスト文字列を指定します。指定する文字列は、HTML ではありません。メッセージ ボックスには [OK] ボタンが表示され、ユーザーがそれをクリックするとボックスが閉じます。このボックスはモーダルなので、ユーザーは、作業を続行するには必ずメッセージ ボックスを閉じる必要があります。

window.alert("ようこそ!続行するには [OK] をクリックしてください。");

確認メッセージ ボックス

確認メッセージ ボックスでは、ユーザーに "Yes" か "No" で答える質問をすることができます。ボックスには、[OK] ボタンと [キャンセル] ボタンが表示され、ユーザーはそのどちらかをクリックできます。それに応じて、confirm メソッドから真 (true) または偽 (false) が返されます。

var truthBeTold = window.confirm("続行するには [OK] をクリックし、停止するには [キャンセル] をクリックしてください。");
if (truthBeTold) {
window.alert("当社の Web サイトへようこそ!");
} else  window.alert("終了します。");

入力メッセージ ボックス

入力メッセージ ボックスには、ユーザーが入力要求に応答してテキストを入力するためのテキスト フィールドが表示されます。また、[OK] ボタンと [キャンセル] ボタンも表示されます。このメソッドに 2 番目の引数 (文字列) を渡すと、その文字列が既定としてテキスト フィールドに表示されます。2 番目の引数 (文字列) を渡さなかった場合、既定のテキストは "<undefined>" となります。

alert() メソッドや confirm() メソッドと同様、prompt() メソッドにより表示されるメッセージ ボックスもモーダル型です。ユーザーは、作業を続行するにはボックスを閉じなければなりません。

var theResponse = window.prompt("ようこそ!","名前を入力してください。");


ブラウザへの情報表示

Microsoft® JScript® (以下 JScript) では、ブラウザにデータを直接表示する方法として 2 とおり用意されています。1 つは、document オブジェクトの write( ) メソッドおよび writeln( ) メソッドを使用する方法です。もう 1 つは、ブラウザ内のフォームや、警告、確認、および入力のメッセージ ボックスに情報を表示する方法です。

document.write( ) と document.writeln( ) を使用する

情報を表示する最も一般的な方法が、document オブジェクトの write( ) メソッドを使用する方法です。このメソッドには、ブラウザに表示する文字列を受け取るための引数が 1 つあります。引数に指定する文字列は、単なるテキストでも HTML でもかまいません。

文字列を囲む引用符には、シングル クォーテーション (') もダブル クォーテーション (") も使用できます。この仕様により、文字列の中で引用符やアポストロフィを使うことができます。

document.write("π の値は、約 " + Math.PI + "です。");
document.write( );
メモ 次のコードの例は、ブラウザ ウィンドウに何かを表示しようとするたびに "document.write" と入力する手間を省くための簡単な関数です。この関数では、表示しようとした内容が未定義のものであってもエラーは発生せず、"w();" を実行した場合と同じ処理 (空白行の表示) が行われます。
function w(m) { // 関数を記述します。
m = "" + m + ""; // m を確実に文字列にします。
if ("undefined" != m) { // 空の文字列や未定義項目でないかどうかを調べます。
   document.write(m);
   }
document.write("<BR>");
}

w('<IMG SRC="horse.gif">');
w();
w("これは馬の彫刻です。");
w();

writeln( ) メソッドは、write( ) メソッドとほとんど同じですが、受け渡しした文字列の最後に必ず改行文字を追加するという点だけが異なります。HTML では、通常はこの改行は単なる空白文字に変換されますが、<PRE> タグや <XMP> タグを使っていれば、そのまま改行文字としてブラウザに表示されます。

write( ) メソッドは、メソッドが呼び出されたとき、表示先となるドキュメントが開いて追跡しているプロセス内に存在していなければ、ドキュメントは開かれてクリアされます。これは、場合によっては危険です。次のコードの例は、1 分おきに時刻を表示するように記述したスクリプトですが、プロセス内で自分自身をクリアしてしまうため、2 回目以降の表示処理は失敗します。

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JScript">
function singOut()  {
var theMoment = new Date();
var theHour = theMoment.getHours();
var theMinute = theMoment.getMinutes();
var theDisplacement = (theMoment.getTimezoneOffset() / 60);
theHour -= theDisplacement;
if (theHour > 23)  {
theHour -= 24
}
document.write("現在、世界協定時刻で " + theHour + " 時 " + theMinute + " 分です。");
window.setTimeout("singOut();", 60000);
}
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT>
singOut();
</SCRIPT>
</BODY>
</HTML>

document.write() の代わりに window オブジェクトの alert() メソッドを次のように使えば、このスクリプトは正常に動作します。

window.alert("現在、世界協定時刻で " + theHour + " 時 " + theMinute + " 分です。");
window.setTimeout("singOut();", 60000);
}

現在のドキュメントをクリアする

document オブジェクトの clear() メソッドは、現在のドキュメントの内容をクリアします。このメソッドは、ドキュメントのほかの部分と一緒にスクリプトもクリアするため、使用には十分注意する必要があります。

document.clear();


著作権について

Microsoft® JScript®

このドキュメントに記載されている内容は、予告なしに変更されることがあります。このドキュメントに使用されている会社、製品、個人、特性、およびデータの名称は架空のものであり、特に注記されていない限り、実在する個人名、会社名、製品名、事件名とは一切関係ありません。お客様は、適用される著作権法を遵守する責任を負います。マイクロソフトの書面による明示的な承諾がない限り、このドキュメントの一部または全部を、いかなる形式、いかなる手段 (電子的または機械的な手段を含む)、またはいかなる目的でも、複製または転載することはできません。

マイクロソフトは、このドキュメントに記載される内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。このドキュメントは、これらの特許、商標、著作権またはその他の無体財産権に関する権利をお客様に許諾するものではありません。

© 1991-2001 Microsoft Corporation. All rights reserved.

Microsoft、MS、MS-DOS、ActiveX、JScript、Microsoft Press、Visual Basic、Windows、Windows NT、Win32、および Win32s は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。

その他、記載されている会社名、製品名は、各社の商標および登録商標です。


配列の長さには、正の有限数が割り当てられなければなりません。

既存の Array オブジェクトの length プロパティを設定するとき、配列の長さとして正の数値および 0 以外の値を指定しています。このエラーは、Array オブジェクトの length プロパティに負の数値または数値でない値 (NaN) を指定したときに発生します。JScript では、小数は自動的に 0 または正の整数に変換されます。

このエラーを解決するには

length プロパティに 0 または正の数値を指定します。配列サイズに上限はありませんが、整数値の最大値には制限があります (約 40 億)。Array オブジェクトの length プロパティを設定する正しい方法を次に示します。

var my_array = new Array();
my_array.length = 99;

参 照

配列の使用


配列の長さは、正の有限整数でなければなりません。

Array コンストラクタを呼び出すときに、0 および正の整数以外の引数を指定しています。

このエラーを解決するには

Array オブジェクトを新規作成するときは、正の整数だけを使用します。整数でない要素 1 つだけの配列を作成する場合は、次のように 2 つの手順で作成します。最初に要素 1 つだけの配列を作成し、次に最初の要素 (array[0]) に値を代入します。このエラーが発生する例を次に示します。

var piArray = new Array(3.14159);

数値要素 1 つだけの配列を指定する正しい方法を次に示します。

var piArray = new Array(1);
piArray [0] = 3.14159;

配列サイズに上限はありませんが、整数値の最大値には制限があります (約 40 億)。

参 照

配列の使用


Array または arguments オブジェクトがありません。

引数として配列を指定していません。このエラーは Function.prototype.apply メソッドのみに適用されます。配列を指定している場合は、2 番目の引数は Array オブジェクトまたは Arguments オブジェクトである必要があります。

このエラーを解決するには

2 番目の引数として Array または Arguments オブジェクトを指定します。

参 照

配列の使用 | apply メソッド | JScript の関数


ブール型 (Boolean) を指定してください。

ブール (Boolean) 型以外のオブジェクトで、Boolean.prototype.toString メソッドまたは Boolean.prototype.valueOf メソッドを実行しようとしました。この型のオブジェクトを実行するには、ブール (Boolean) 型である必要があります。次に例を示します。

var o = new Object;
o.f = Boolean.prototype.toString;
o.f();

このエラーを解決するには

ブール (Boolean) 型のオブジェクトでは、Boolean.prototype.toString メソッドまたは Boolean.prototype.valueOf メソッドだけを実行します。

参 照

Boolean オブジェクト | JScript のデータ型 | プログラム フローの制御 | データのコピー、受け渡し、および比較


関数の戻り値に割り当てることはできません。

関数の戻り値に値を割り当てようとしました。関数の戻り値は、変数に割り当てることはできますが、変数として使用することはできません。関数自体に新しい値を割り当てる場合は、かっこ (関数呼び出し演算子) を省略します。このエラーが発生する例を次に示します。

myFunction() = 42;  // 関数の戻り値に値 42 を割り当てようとしています。

このエラーを解決するには

  • 関数の戻り値を割り当て先として使用しないようにします。ただし、関数の戻り値を変数に割り当てることはできます。
    myVar = myFunction(42);
  • さらに、関数の戻り値ではなく、関数自体を変数に割り当てることができます。
    myFunction = new Function("return 42;");

参 照

Function 関数 | JScript コードの記述 | JScript の関数


'this' に割り当てることはできません。

this に値を割り当てようとしました。this は JScript のキーワードで、次のものを参照します。

  • 現在メソッドを実行しているオブジェクト
  • カレント メソッドがない場合 (またはメソッドがどのオブジェクトにも属していない場合) はグローバル オブジェクト

メソッドは、オブジェクトによって実行された JScript 関数です。メソッド内部では、キーワード this は、メソッドが起動されたオブジェクトへの参照です。また、new 演算子を使用し、クラス コンストラクタを実行して作成したオブジェクトに対する参照の場合もあります。

メソッド内部では、this を使用してカレント オブジェクトを参照できますが、新しい値を this に割り当てることはできません。

このエラーを解決するには

this に割り当てないようにします。インスタンス化されたオブジェクトのプロパティまたはメソッドにアクセスするには、ドット演算子を使用します (circle.radius など)。

メモ 変数 this でユーザーの名前を作成することはできません。this は JScript の予約語です。

参 照

This | スクリプトのトラブルシューティング


'break' はループの外側には指定できません。

ループの外側で break キーワードを使用しようとしました。break キーワードは、ループまたは switch ステートメントを終了するのに使用します。ループまたは switch ステートメントの中に配置する必要があります。

例外

キーワード break の後ろにラベルを指定することができます。

break labelname;

break キーワードでラベルを指定する必要があるのは、ループまたは switch ステートメントをネストしている場合に、最も内側でないループを終了する必要があるときです。

このエラーを解決するには

break キーワードがループまたは switch ステートメントの内側にあることを確認します。

参 照

Break | プログラム フロー制御 | スクリプトのトラブルシューティング


'continue' はループの外側には指定できません。

ループの外側で continue ステートメントを使用しようとしました。continue ステートメントは、次に示すループの内側だけで使用できます。

  • do-while ループ
  • while ループ
  • for ループ
  • for/in ループ

このエラーを解決するには

  • continue ステートメントは、次に示すループの内側だけで使用するようにします。
  • do-while ループ
  • while ループ
  • for ループ
  • for/in ループ

参 照

Continue | プログラム フロー制御 | スクリプトのトラブルシューティング


条件コンパイルは中止されます。

条件コンパイルをオンにしないで、条件コンパイル変数を使用しようとしました。条件コンパイルをオンにすると、JScript コンパイラでは、@ で始まる識別子を条件コンパイル変数としてコンパイルします。条件コンパイルを指定するには、次に示すステートメントで条件コードを開始します。

/*@cc_on @*/

このエラーを解決するには

次のコードを条件コードの先頭に追加します。

/*@cc_on @*/

参 照

条件コンパイル | 条件コンパイル変数 | @cc_on | @if ステートメント | @set ステートメント


Date オブジェクトを指定してください。

Date 型以外のオブジェクトで Date.prototype.toString メソッドまたは Date.prototype.valueOf メソッドを実行しようとしました。この型のオブジェクトを実行するには、Date 型である必要があります。次に例を示します。

var o = new Object;
o.f = Date.prototype.toString;
o.f();

このエラーを解決するには

Date 型のオブジェクトでは、Date.prototype.toString メソッドまたは Date.prototype.valueOf メソッドだけを実行します。

参 照

Date オブジェクト | getDate メソッド | Intrinsic オブジェクト


'default' は 'switch' ステートメントのなかでは、一度のみ表示されます。

switch ステートメントで default ステートメントを複数回使用しようとしました。default case は、常に、switch ステートメントの最後の case ステートメントになります (式の値と一致しなかった場合に実行される case)。

このエラーを解決するには

switch ステートメントから余分な default case ステートメントを削除します。1 つの switch ステートメント内で使用する defalt case ステートメントの数は、最大でも 1 個にしてください。

参 照

Switch | プログラム フロー制御 | JScript の予約キーワード


Enumerator オブジェクトを指定してください。

Enumerator 型以外のオブジェクトで Enumerator.prototype.atEnd、Enumerator.prototype.item、Enumerator.prototype.moveFirst、または Enumerator.prototype.moveNext の各メソッドを実行しようとしました。この型のオブジェクトを実行するには、Enumerator 型である必要があります。このエラーが発生する例を次に示します。

var o = new Object;
o.f = Enumerator.prototype.atEnd;
o.f();

このエラーを解決するには

Enumerator 型のオブジェクトでは、Enumerator.prototype.atEnd、Enumerator.prototype.item、Enumerator.prototype.moveFirst、または Enumerator.prototype.moveNext の各メソッドだけを実行します。Enumerator 型のオブジェクトであるかどうかを確認するには次のようにします。

if(x instanceof Enumerator)

参 照

Enumerator オブジェクト


catch ステートメントでは適用されますが、throw ステートメントでは適用されません。

コードに throw ステートメントが記述されていますが、try ブロック内にないか、エラーを検出するための対応する catch ブロックがありません。例外は、try ブロック内で throw ステートメントによってスローされ、try ブロックの外側にある catch ステートメントによって処理されます。

このエラーを解決するには

  • 例外をスローする可能性のあるコードを try ブロック内に記述し、対応する catch ブロックがあることを確認します。
  • 使用する catch ステートメントが適切な例外書式に対応するよう記述されていることを確認します。
  • 例外が再スローされる場合には、これに対応する別の catch ステートメントが用意してあることを確認します。

参 照

Error オブジェクト | throw ステートメント | try...catch ステートメント


(' がありません。 (Jscript)

JScript

'(' がありません。

かっこ内に式を記述しようとしていますが、対応する左かっこがありません。左かっこと右かっこの中に式を記述する必要があります。次の例でのかっこの使い方に注目してください。

for (initialize; test; increment) {
statement;
}

このエラーを解決するには

対応する左かっこを追加します。


)' がありません。 (Jscript)

JScript

')' がありません。

かっこ内に式を記述しようとしていますが、対応する右かっこがありません。左かっこと右かっこの中に式を記述する必要があります。次の例でのかっこの使い方に注目してください。

for (initialize; test; increment) {
statement;
}

このエラーを解決するには

対応する右かっこを追加します。


'/' がありません。

正規表現リテラルを作成しようとしましたが、スラッシュ (/) が指定されていません。文字列リテラルを引用符の対で囲むのと同じように、正規表現リテラルはスラッシュ (/) の対で囲む必要があります。

このエラーを解決するには

正規表現を終了する右スラッシュを追加します。

参 照

Regular Expression オブジェクト | 正規表現の構文


:' がありません。 (Jscript)

JScript

':' がありません。

条件演算子を使用して式を作成しようとしましたが、第 2 オペランドと第 3 オペランドの間にコロンがありません。条件演算子では、第 2 オペランド (true) と第 3 オペランド (false) の間にコロンを指定する必要があります。

このエラーを解決するには

第 2 オペランドと第 3 オペランドの間にコロンを追加します。

参 照

条件演算子 (?:) | JScript の演算子


';' がありません。

1 行に複数のステートメントを記述しようとしましたが、セミコロンで区切られていません。ステートメントを終了するには、セミコロンを使用します。1 行に複数のステートメントを記述することができますが、各ステートメントはセミコロンで区切る必要があります。

このエラーを解決するには

  • 各ステートメントをセミコロンで終了するようにします。
  • 関数の呼び出しで、かっこが正しく指定されていることを確認します。
  • for ループのヘッダにセミコロンが指定されていることを確認します。

参 照

JScript コードの記述


'@' がありません。

@set ステートメントを使用して、条件コンパイルのステートメントで変数を使用しようとしましたが、変数名の先頭に "@" 記号がありません。

このエラーを解決するには

変数名の先頭に "@" 記号を追加します。次に例を示します。

@set @myvar = 1

参 照

@set ステートメント | 条件コンパイル | 条件コンパイル変数


'}' がありません。

関数本体、ループ、コード ブロック、オブジェクト イニシャライザの終了を表す右中かっこがありません。たとえば、for ループで、ループを開始する左中かっこだけが指定されているときに、このエラーが発生します。

このエラーを解決するには

関数、ループ、コード ブロック、オブジェクト イニシャライザの終了を表す右中かっこを追加します。

参 照

Function オブジェクト | プログラム フロー制御


=' がありません。 (Jscript)

JScript

'=' がありません。

条件コンパイルのステートメントで変数を使用しようとしましたが、変数と、その変数に代入する値との間に等号記号がありません。

このエラーを解決するには

等号記号を追加します。次に例を示します。

@set @myvar1 = 1

参 照

条件コンパイル | 条件コンパイル変数


]' がありません。 (Jscript)

JScript

']' がありません。

配列要素を参照しようとしましたが、右角かっこがありません。式で配列要素を参照するには、左角かっこと右角かっこが必要です。

このエラーを解決するには

配列要素を参照する式に右角かっこを追加します。

参 照

配列の使用 | Array オブジェクト


正規表現の中に ']' を指定してください。 (Jscript)

JScript

正規表現の中に ']' を指定してください。

正規表現の一致で文字クラスを作成しようとしましたが、右角かっこがありません。個々のリテラル文字の組み合わせは、角かっこで囲んで文字クラスにまとめることができます。文字クラスの中の 1 文字と一致させることができます。たとえば、/[abc]/ は、"a"、"b"、または "c" のいずれかの文字と一致します。

このエラーを解決するには

対応する右角かっこを正規表現に追加します。

メモ 1 つの角かっこ記号を一致させるには、バックスラッシュでエスケープして \[ と指定します。エスケープすることで、JScript では特殊文字として解釈されなくなります。

参 照

Regular Expression オブジェクト | 正規表現の構文


catch ステートメントがありません。

例外処理の try ブロックを使用していますが、対応する catch ステートメントが記述されていません。例外処理では、エラーが発生する可能性のあるコードと、エラーが発生したときに実行してはいけないコードを try ブロックの内側に記述します。例外は、try ブロック内の throw ステートメントによってスローされ、try ブロックの外側にある 1 つ以上の catch ステートメントで処理されます。

このエラーを解決するには

  • 対応する catch ブロックを追加します。
  • catch ブロックの代わりに finally ブロックを使用します。

参 照

try...catch ステートメント | Error オブジェクト


定数がありません。

条件コンパイル テスト ステートメントで、条件コンパイル変数ではない変数を使用しようとしました。条件コンパイル テスト ステートメントでは、定数を評価する必要があります。

このエラーを解決するには

  • 変数をリテラルに変更します。
  • 変数を条件コンパイル変数と変更します。

参 照

条件コンパイル | 条件コンパイル変数


'@end' がありません。

コード ブロックを条件コンパイルしようとしましたが、@end ステートメントで終了していません。JScript ステートメントを条件コンパイルするには、@if/@end ブロック内に記述する必要があります。

このエラーを解決するには

対応する @end ステートメントを追加します。

参 照

条件コンパイル | 条件コンパイル変数


16 進数を指定してください。

不正な Unicode エスケープ シーケンスが作成されました。Unicode エスケープ シーケンスは \u で始め、必ず 4 桁の 16 進数を続けます。Unicode 16 進数には、数字の 0 ～ 9 と、大文字の A ～ F または小文字の a ～ f が使用できます。Unicode エスケープ シーケンスの正しい使用例を次に示します。

z = "\u1A5F";

このエラーを解決するには

Unicode 16 進数が \u で始まり、数字の 0 ～ 9 と、大文字の A ～ F または小文字の a ～ f を使用して 4 桁で指定していることを確認します。

メモ 文字列でリテラル テキスト \u を使用する場合は、バックスラッシュを 2 つ使用して (\\u)、\u のバックスラッシュをエスケープします。

参 照

JScript のデータ型


識別子がありません。 (Jscript)

JScript

識別子がありません。

識別子が必要なコンテキストで、識別子以外のものが指定されています。以下のものを識別子として使用できます。

  • 変数
  • プロパティ
  • 配列
  • 関数名

このエラーを解決するには

識別子が等号の左側に来るように式を変更します。

参 照

配列の使用


識別子、文字列または数がありません。

オブジェクト リテラルの宣言で、リテラル構文が不正です。オブジェクト リテラルのプロパティは、識別子、文字列、または数のいずれかである必要があります。オブジェクト リテラル (「オブジェクト イニシャライザ」とも呼びます) は、プロパティ : カンマ区切りの値のペアをリストにして、全体をかっこで囲んで指定します。次に例を示します。

var point = {x:1.2, y:-3.4};

このエラーを解決するには

正しいリテラル構文で指定します。

参 照

カンマ演算子 (,)


正規表現の中に ')' を指定してください。 (Jscript)

JScript

正規表現の中に ')' を指定してください。

正規表現を使用したキャプチャ、アサーション、またはグループを作成しようとしましたが、右かっこが指定されていません。正規表現では、かっこにはいろいろな意味があります。主に、サブ式のキャプチャ、アサーションの指定、パターンのグループ化を行うのに使用し、項目が *、+、? などによって 1 つの単位として扱われるようにします。

このエラーを解決するには

右かっこを追加します。

メモ 1 つのかっこ記号を一致させるには、バックスラッシュでエスケープして \( と指定します。エスケープすることで、JScript では特殊文字として解釈されなくなります。

参 照

Regular Expression オブジェクト | 正規表現の構文


while を指定してください。

do ? while ループに while 条件が指定されていません。do ステートメントでは、対応する while テスト ステートメントをコード ブロックの最後に指定する必要があります。

このエラーを解決するには

ブロックの終わりを表す右中かっこの後ろに while テスト ステートメントを追加します。

参 照

while ステートメント | プログラム フロー制御


'{' がありません。

関数本体の開始を表す左中かっこがありません。関数本体のコードは、1 行であっても、左中かっこと右中かっこで囲む必要があります。関数本体で中かっこを使用した場合は、ループよりも優先されます。

このエラーを解決するには

関数本体を開始する左中かっこを追加します。

参 照

Function オブジェクト


関数には、有効なプロトタイプ オブジェクトが存在しません。

オブジェクトが特定の関数クラスのインスタンスかどうかを instanceof 演算子で調べようとしましたが、オブジェクトの prototype プロパティが null かまたは外部オブジェクト型として再定義されています (両者とも JScript オブジェクトとしては無効です)。外部オブジェクトは、ホスト オブジェクト モデルのオブジェクト (Internet Explorer のドキュメントやウィンドウ オブジェクトなど) または外部 COM オブジェクトのどちらでもかまいません。

このエラーを解決するには

関数の prototype プロパティで有効な JScript オブジェクトを参照するようにします。

参 照

Function オブジェクト | prototype プロパティ


関数を指定してください。

Function オブジェクトでないオブジェクトで Function prototype メソッドの 1 つを実行しようとしたか、関数呼び出しコンテキストでオブジェクトを使用しようとしました。次のコード例では、foo が関数ではないため、このエラーが発生します。

var example = new Object();  // "example" というオブジェクトを新規作成します。
var x = example();  // example を関数として呼び出そうとしています。

このエラーを解決するには

  • Function オブジェクトでは、Function prototype メソッドだけを呼び出すようにします。
  • 関数呼び出し演算子 () は、関数呼び出しだけで使用するようにします。

参 照

Function オブジェクト | prototype プロパティ


不正な代入です。 (Jscript)

JScript

不正な代入です。

読み取り専用の識別子に値を代入しようとしました。読み取り専用の識別子に値は代入できません。たとえば、ホスト定義のオブジェクトと外部 COM オブジェクトがこれに当たります。

このエラーを解決するには

読み取り専用の識別子に値を代入しないようにします。

参 照

代入演算子 (=)


文字が正しくありません。

識別子の文字に、JScript コンパイラで識別できない文字が使用されています。次の規則に従う文字が有効です。

  • 先頭がアスキー文字 (大文字または小文字) かアンダースコア (_) であること。
  • 先頭文字に続く文字は、アスキー文字、数字、またはアンダースコアであること。
  • 識別子名に予約語は使用できません。

このエラーを解決するには

JScript 言語定義で使用されない文字は使用しないようにします。

参 照

JScript の変数 | 特殊文字 | JScript のデータ型


文字セットの範囲が不正です。

無効な文字セットの範囲を指定して正規表現を作成しようとしました。文字セットの範囲は a-z や 0-9 など、1 文字で指定する必要があります。\w などの文字クラスは文字セットでは使用できません。また、範囲を指定する 1 番目の文字は、範囲を指定する 2 番目の文字よりも前にある必要があります。次に例を示します。

var good = /[a-z]/;  // 有効な文字範囲 - a は z の前にあります。
var notGood = /[z-a]/;  // 無効な文字範囲 - z は a の前にありません。

このエラーを解決するには

正規表現の文字セットは 1 文字で指定し、正しい順番であることを確認します。

参 照

Regular Expression オブジェクト | 正規表現の構文


JScript オブジェクトを指定してください。

JScript オブジェクトを必要とする組み込み関数に対して、JScript オブジェクト以外のオブジェクトを渡そうとしました。各種組み込み関数では、(ホストで定義されたオブジェクト、またはコントロールなど、外部の構成要素とは対照的に) JScript で定義されたオブジェクトが必要になります。

このエラーを解決するには

引数として渡すオブジェクトが正しい型であることを確認します。

参 照

JScript のオブジェクト | 配列の使用


この Label が定義されていません。

存在しないラベルを参照しています。ラベルはコード ブロックにマークを付けるのに使用しますが、特定のスコープ内では一意である必要があります。

このエラーを解決するには

  • ラベル名の入力に誤りがないことを確認します。
  • すべてのラベル参照が、現在のスコープ内で定義されているラベル (前方の定義も含む) を参照していることを確認します。スコープ内の前方にある定義も含みます。

参 照

ラベル ステートメント | switch ステートメント | break ステートメント | continue ステートメント


この Label は既に定義されています。

既に存在するラベルと同じ名前のラベルを作成しようとしました。ラベルはコード ブロックにマークを付けるのに使用しますが、特定のスコープ内では一意である必要があります。

このエラーを解決するには

プログラムで使用するラベルが各スコープ内ですべて一意であることを確認します。

参 照

ラベル ステートメント | switch ステートメント | break ステートメント | continue ステートメント


数字を指定してください。

Number 型以外のオブジェクトで Number.prototype.toString メソッドまたは Number.prototype.valueOf メソッドを実行しようとしました。この型のオブジェクトを実行するには、Number 型である必要があります。

このエラーを解決するには

Number 型のオブジェクトでは、Number.prototype.toString メソッドまたは Number.prototype.valueOf メソッドだけを実行します。

参 照

Number オブジェクト | number プロパティ


オブジェクトを指定してください。

Object 型以外のオブジェクトで Object.prototype.toString メソッドまたは Object.prototype.valueOf メソッドを実行しようとしました。この型のオブジェクトを実行するには、Object 型である必要があります。

このエラーを解決するには

Object 型のオブジェクトでは、Object.prototype.toString メソッドまたは Object.prototype.valueOf メソッドだけを実行します。

参 照

Object オブジェクト | JScript のオブジェクト


オブジェクトのメンバを指定してください。

オブジェクトのデータ メンバで操作を行おうとしましたが、メンバが存在しません。

このエラーを解決するには

入力したデータ メンバの名前が正しいことを確認します。

参 照

Object オブジェクト | JScript のオブジェクト


Regular expression オブジェクトがありません。 (Jscript)

JScript

Regular expression オブジェクトがありません。

RegExp 型以外のオブジェクトで RegExp.prototype.toString メソッドまたは RegExp.prototype.valueOf メソッドを実行しようとしました。この型のオブジェクトを実行するには、RegExp 型である必要があります。

このエラーを解決するには

RegExp 型のオブジェクトでは、RegExp.prototype.toString メソッドまたは RegExp.prototype.valueOf メソッドだけを実行します。

参 照

Regular Expression オブジェクト | 正規表現の構文


'return' ステートメントが関数の外側にあります。

return ステートメントがコードのグローバル スコープに記述されています。return ステートメントは、関数本体の内側に記述します。

関数に () 演算子を付けて実行すると、式として扱われます。すべての式には値があり、その関数の戻り値を return ステートメントで指定します。一般的な書式は次のとおりです。

return [ expression ];

return ステートメントを実行すると、expression が計算され、その結果が関数の戻り値として返されます。expression が指定されていない場合は、undefined を返します。

return ステートメントを実行すると、関数本体に他のステートメントが残っている場合でも関数は終了します。ただし、try ブロック内にある return ステートメントを実行した場合で、対応する finally ブロックが記述されている場合は、finally ブロックのコードを実行してから関数が終了します。

return ステートメントを実行せずに、関数本体の最後に到達して関数が終了した場合は、戻り値は undefined 値になります (この場合、関数の戻り値を式の一部として使用できません)。

このエラーを解決するには

コードのメイン部 (グローバル スコープ) から return ステートメントを削除します。

参 照

return ステートメント | Function オブジェクト | caller プロパティ


文字列を指定してください。

String 型以外のオブジェクトで String.prototype.toString メソッドまたは String.prototype.valueOf メソッドを実行しようとしました。この型のオブジェクトを実行するには、String 型である必要があります。

このエラーを解決するには

String 型のオブジェクトでは、String.prototype.toString メソッドまたは String.prototype.valueOf メソッドだけを実行します。

参 照

String Object | toString Method


構文エラーです。 (Jscript)

JScript

構文エラーです。

作成したステートメントが JScript の文法に違反しています。

このエラーを解決するには

  • 明示されている行番号のプログラムの構文を再度確認します。
  • かっこの使用に間違いがないか確認します。

参 照

Error オブジェクト


正規表現で構文エラーが発生しました。 (Jscript)

JScript

正規表現で構文エラーが発生しました。

検索文字列の構成が、JScript 正規表現の文法に違反しています。

このエラーを解決するには

正規表現の検索文字列が、JScript 正規表現の構文に適合するようにします。

参 照

Regular Expression オブジェクト | Regular Expression オブジェクトのプロパティ | Regular Expression オブジェクトのメソッド | 正規表現の構文 | compile メソッド


小数の桁数が有効範囲を超えています。

Number.prototype.toExponential 関数に無効な引数を渡そうとしました。toExponential() 関数の引数は 0 ～ 20 の範囲である必要があります。

このエラーを解決するには

toExponential() の引数に正しい値を指定するようにします。

参 照

toExponential メソッド


有効桁数の範囲を超えています。

Number.prototype.toPrecision 関数に無効な引数を渡そうとしました。toPrecision の引数は 1 ～ 21 の範囲である必要があります。

このエラーを解決するには

toPrecision の引数に正しい値を指定するようにします。

参 照

toPrecision メソッド


デコードする URI は有効なエンコーダではありません｡

適切な書式でない URI (Uniform Resource Identifier) をデコードしようとしました。URI には特別な構文があり、アルファベット以外の大半の文字は、URI で使用するにはかっこで囲む必要があります。通常の JScript 文字列から URI を作成するには、encodeURI メソッドと encodeURIComponent メソッドを使用します。

完全な URI は、構成要素と区切り記号の並びから構成されます。一般的な書式は次のとおりです。

<Scheme>:<first>/<second>;<third>?<fourth>

山かっこの中の名前は構成要素を表し、":"、"/"、";" および "?" の各文字は区切り記号として予約されています。

このエラーを解決するには

有効な URI だけをデコードするようにします。通常の JScript 文字列は、無効な文字が含まれている場合があるので、デコードできません。

参 照

decodeURI Method | decodeURIComponent Method


エンコードする URI は有効なエンコーダではありません。

URI (Uniform Resource Identifier) として文字をエンコードしようとしましたが、無効な文字が含まれています。文字列の大半の文字は正常に URI に変換できますが、Unicode 文字シーケンスの中には変換できないものがあります。

このエラーを解決するには

エンコードする文字列に有効な Unicode シーケンスだけが含まれるようにします。

完全な URI は、構成要素と区切り記号の並びから構成されます。一般的な書式は次のとおりです。

<Scheme>:<first>/<second>;<third>?<fourth>

山かっこの中の名前は構成要素を表し、":"、"/"、";" および "?" の各文字は区切り記号として予約されています。

参 照

encodeURI Method | encodeURIComponent Method


throw ステートメントに指定する式は、ソース コードの同一行に記述してください。

キーワード throw を使用していますが、同じ行のソース コードに式がありません。throw ステートメントでは、キーワード throw を記述し、スローする式を続けて記述する必要があります。次に例を示します。

if (denominator == 0) {
throw new DivideByZeroException();
}

この 2 つの構成要素は分割できません。

このエラーを解決するには

キーワード throw と、スローする式を同じ行に記述します。

参 照

Error オブジェクト | throw ステートメント| try...catch ステートメント


定義されていない識別子です。

JScript コンパイラで認識できない識別子を使用しようとしました。次の場合、常に undefined 値が返されます。

  • 存在しない変数を使用したとき。
  • 宣言されてから 1 度も値が代入されていない変数を使用したとき。
  • 存在しないオブジェクトのプロパティを使用したとき。

このエラーを解決するには

var ステートメントで変数を宣言します (var x; など)。

参 照

JScript の変数 | 変数のスコープ


定義されていない識別子です。 (Jscript)

JScript

文字の繰り返しを表す正規表現演算子が不正です。

正規表現の検索パターンを作成するときに、パターン要素に不正な繰り返しが指定されています。たとえば、以下のパターンを見てください。

/^+/

要素 ^ (入力の開始位置) には繰り返しを指定できないため、このパターンは不正となります。以下の表は、繰り返しを指定できない要素をまとめたものです。

要素 | 説明
^ | 入力の開始
$ | 入力の終了
\b | 単語境界
\B | 単語以外の境界
* | 0 回以上繰り返し
+ | 1 回以上繰り返し
? | 0 回または 1 回繰り返し
{n} | n 回繰り返し
{n,} | n 回以上繰り返し
{n,m} | n 回以上 m 回以下繰り返し

このエラーを解決するには

検索パターンに不正な繰り返しが指定されていないことを確認します。

参 照

Regular Expression オブジェクト | 正規表現の構文


終了していないコメントです。 (Jscript)

JScript

終了していないコメントです。

複数行に渡るコメント ブロックが開始されていますが、正しく終了されていません。複数行コメントは "/*" で開始し、これを逆にした "*/" で終了します。次に例を示します。

/* これはコメントです
これは、同じコメントの一部です。*/

このエラーを解決するには

複数行コメントは "*/" で正しく終了するようにします。

参 照

コメント ステートメント


終了していない文字列型の定数です。 (Jscript)

JScript

終了していない文字列型の定数です。

文字列定数が引用符で終了していません。文字列定数は引用符の対で囲む必要があります。

メモ 引用符には一重、二重のどちらでも使用できますが、2 種類の引用符を組み合わせて対にすることはできません。一重引用符で囲んだ文字列の内側に二重引用符の対を使用したり、その逆の組み合せで 2 組の引用符の対を入れ子にして使用することは可能です。

このエラーを解決するには

文字列の最後に引用符を追加します。

参 照

String Object | toString Method


VBArray を指定してください。

Visual Basic safeArray のオブジェクトが必要な箇所に、Visual Basic safeArray でないオブジェクトを指定しました。

new VBArray(safeArray);

VBArray オブジェクトは読み取り専用で、直接作成できません。safeArray 引数は VBArray 値であり、VBArray 値を取得してからでなければ、VBArray コンストラクタに渡すことはできません。このためには、既存の ActiveX か別のオブジェクトから値を取得する必要があります。

このエラーを解決するには

VBArray オブジェクトだけを VBArray コンストラクタに渡すようにします。

参 照

VBArray オブジェクト | 配列の使用


Jscript 演算子の一覧 (Jscript)

JScript

演算子の一覧

次の表に Jscript 演算子を種類別に示します。

算術演算子

演算子 | 記号
加算 | +
デクリメント | —
除算 | /
インクリメント | ++
剰余 | %
乗算 | *
減算 | -
単項マイナス符号 | —

論理演算子

演算子 | 記号
カンマ | ,
条件演算子 | ?:
等しい | ==
より大きい | >
より大きいか等しい | >=
厳密等価演算子 | ===
等しくない | !=
より小さい | <
より小さいか等しい | <=
論理 AND | &&
論理 NOT | !
論理 OR | ||
厳密非等価演算子 | !==

ビット演算子

演算子 | 記号
ビットごとの AND | &
左シフト | <<
ビットごとの NOT | ~
ビットごとの OR | |
右シフト | >>
ビットごとの XOR | ^
右シフト | >>>

代入演算子

代入演算子

複合代入演算子

その他の演算子

delete

instanceof

new

typeof

void

必要条件

バージョン 1


Technology Preview Release の Jscript 言語機能

Microsoft JScript 5.6 では、新しい言語機能がいくつか導入されています。

はじめに

以下の表に示す各ドキュメントには、新しい機能についてご理解いただくための情報が記載されています。.ドキュメントに関するご意見、ご要望をぜひお寄せください。

内容 | ドキュメント
in 演算子 | in 演算子
Global オブジェクトの新規メソッド | decodeURIComponent メソッド decodeURI メソッド encodeURI メソッド encodeURIComponent メソッド
Object オブジェクトの新規メソッド | hasOwnProperty メソッド isPrototypeOf メソッド
Function オブジェクトの新規メソッド | apply メソッド call メソッド
Array オブジェクトの新規メソッド | pop メソッド push メソッド shift メソッド splice メソッド unshift メソッド
Number オブジェクトの新規メソッド | toFixed メソッド toExponential メソッド toPrecision メソッド
Date オブジェクトの新規メソッド | toDateString メソッド toTimeString メソッド toLocaleDateString メソッド toLocaleTimeString メソッド
RegExp オブジェクトの新規メソッドおよびプロパティ | ToString メソッド global プロパティ ignoreCase プロパティ multiline プロパティ
String オブジェクトの新規メソッド | localeCompare メソッド toLocaleLowerCase メソッド toLocaleUpperCase メソッド
Error オブジェクトの新規メソッド | name プロパティ message プロパティ


Jscript バージョン情報 (Jscript)

JScript

バージョン情報

次の表は、ホスト アプリケーションに実装される Microsoft® JScript® (以下 JScript) のバージョンです。

ホスト アプリケーション | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 5.5
Microsoft Internet Explorer 3.0 | x |  |  |  |  |
Microsoft Internet Information Server 1.0 |  | x |  |  |  |
Microsoft Internet Explorer 4.0 |  |  | x |  |  |
Microsoft Internet Information Server 4.0 |  |  | x |  |  |
Microsoft Windows Scripting Host 1.0 |  |  | x |  |  |
Microsoft Visual Studio 6.0 |  |  |  | x |  |
Microsoft Internet Explorer 5.0 |  |  |  |  | x |
Microsoft Internet Information Services 5.0 |  |  |  |  |  | x

次の表は、JScript 言語の機能と、各機能が最初に導入されたバージョンの一覧です。

言語要素 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 5.5
0...n プロパティ |  |  |  |  |  | x
$1...$9 プロパティ |  |  | x |  |  |
abs メソッド | x |  |  |  |  |
acos メソッド | x |  |  |  |  |
ActiveXObject オブジェクト |  |  | x |  |  |
加算演算子 (+) | x |  |  |  |  |
anchor メソッド | x |  |  |  |  |
apply メソッド |  |  |  |  |  | x
arguments プロパティ |  | x |  |  |  |
Array オブジェクト |  | x |  |  |  |
asin メソッド | x |  |  |  |  |
代入演算子 (=) | x |  |  |  |  |
atan メソッド | x |  |  |  |  |
atan2 メソッド | x |  |  |  |  |
atEnd メソッド |  |  | x |  |  |
big メソッド | x |  |  |  |  |
ビットごとの AND 演算子 (&) | x |  |  |  |  |
ビットごとの左シフト演算子 (<<) | x |  |  |  |  |
ビットごとの NOT 演算子 (~) | x |  |  |  |  |
ビットごとの OR 演算子 (|) | x |  |  |  |  |
ビットごとの右シフト演算子 (>>) | x |  |  |  |  |
ビットごとの XOR 演算子 (^) | x |  |  |  |  |
blink メソッド | x |  |  |  |  |
bold メソッド | x |  |  |  |  |
Boolean オブジェクト |  | x |  |  |  |
break ステートメント | x |  |  |  |  |
call メソッド |  |  |  |  |  | x
callee プロパティ |  |  |  |  |  | x
caller プロパティ |  | x |  |  |  |
catch ステートメント |  |  |  |  | x |
@cc_on ステートメント |  |  | x |  |  |
ceil メソッド | x |  |  |  |  |
charAt メソッド | x |  |  |  |  |
charCodeAt メソッド |  |  |  |  |  | x
カンマ演算子 (,) | x |  |  |  |  |
// (単一行のコメント ステートメント) | x |  |  |  |  |
/*..*/ (複数行のコメント ステートメント) | x |  |  |  |  |
比較演算子 | x |  |  |  |  |
compile メソッド |  |  | x |  |  |
concat メソッド (Array オブジェクト) |  |  | x |  |  |
concat メソッド (String オブジェクト) |  |  | x |  |  |
条件コンパイル |  |  | x |  |  |
条件コンパイル変数 |  |  | x |  |  |
条件演算子 (?:) | x |  |  |  |  |
constructor プロパティ |  | x |  |  |  |
continue ステートメント | x |  |  |  |  |
cos メソッド | x |  |  |  |  |
データ型の変換 |  |  | x |  |  |
Date オブジェクト | x |  |  |  |  |
decodeURI メソッド |  |  |  |  |  | x
decodeURIComponent |  |  |  |  |  | x
デクリメント演算子( — ) | x |  |  |  |  |
delete 演算子 |  |  | x |  |  |
description プロパティ |  |  |  |  | x |
dimensions メソッド |  |  | x |  |  |
除算演算子 (/) | x |  |  |  |  |
do...while ステートメント |  |  | x |  |  |
E プロパティ | x |  |  |  |  |
encodeURI メソッド |  |  |  |  |  | x
encodeURI コンポーネント |  |  |  |  |  | x
Enumerator オブジェクト |  |  | x |  |  |
等価演算子 (==) | x |  |  |  |  |
Error オブジェクト |  |  |  |  | x |
escape メソッド | x |  |  |  |  |
eval メソッド | x |  |  |  |  |
exec メソッド |  |  | x |  |  |
exp メソッド | x |  |  |  |  |
fixed メソッド | x |  |  |  |  |
floor メソッド | x |  |  |  |  |
fontcolor メソッド | x |  |  |  |  |
fontsize メソッド | x |  |  |  |  |
for ステートメント | x |  |  |  |  |
for...in ステートメント |  |  |  |  | x |
fromCharCode メソッド |  |  | x |  |  |
Function オブジェクト |  | x |  |  |  |
function ステートメント | x |  |  |  |  |
getDate メソッド | x |  |  |  |  |
getDay メソッド | x |  |  |  |  |
getFullYear メソッド |  |  | x |  |  |
getHours メソッド | x |  |  |  |  |
getItem メソッド |  |  | x |  |  |
getMilliseconds メソッド |  |  | x |  |  |
getMinutes メソッド | x |  |  |  |  |
getMonth メソッド | x |  |  |  |  |
GetObject 関数 |  |  | x |  |  |
getSeconds メソッド | x |  |  |  |  |
getTime メソッド | x |  |  |  |  |
getTimezoneOffset メソッド | x |  |  |  |  |
getUTCDate メソッド |  |  | x |  |  |
getUTCDay メソッド |  |  | x |  |  |
getUTCFullYear メソッド |  |  | x |  |  |
getUTCHours メソッド |  |  | x |  |  |
getUTCMilliseconds メソッド |  |  | x |  |  |
getUTCMinutes メソッド |  |  | x |  |  |
getUTCMonth メソッド |  |  | x |  |  |
getUTCSeconds メソッド |  |  | x |  |  |
getVarDate メソッド |  |  | x |  |  |
getYear メソッド | x |  |  |  |  |
Global オブジェクト |  |  | x |  |  |
global プロパティ |  |  |  |  |  | x
より大きい (>) | x |  |  |  |  |
より大きいか等しい | x |  |  |  |  |
hasOwnProperty メソッド |  |  |  |  |  | x
厳密等価演算子 (===) | x |  |  |  |  |
@if ステートメント |  |  | x |  |  |
if...else ステートメント | x |  |  |  |  |
ignoreCase プロパティ |  |  |  |  |  | x
インクリメント演算子 (++) | x |  |  |  |  |
index プロパティ |  |  | x |  |  |
indexOf メソッド | x |  |  |  |  |
等しくない (!=) | x |  |  |  |  |
Infinity プロパティ |  |  | x |  |  |
input プロパティ |  |  | x |  |  |
instanceof 演算子 |  |  |  |  | x |
isFinite メソッド |  |  | x |  |  |
isNaN メソッド | x |  |  |  |  |
isPrototypeOf メソッド |  |  |  |  |  | x
italics メソッド | x |  |  |  |  |
item メソッド |  |  | x |  |  |
join メソッド |  | x |  |  |  |
Labeled ステートメント |  |  | x |  |  |
lastIndex プロパティ |  |  | x |  |  |
lastIndexOf メソッド | x |  |  |  |  |
lastMatch プロパティ |  |  |  |  |  | x
lastParen プロパティ |  |  |  |  |  | x
lbound メソッド |  |  | x |  |  |
leftContext プロパティ |  |  |  |  |  | x
length プロパティ (Arguments オブジェクト) |  |  |  |  |  | x
length プロパティ (Array オブジェクト) |  | x |  |  |  |
length プロパティ (Function オブジェクト) |  | x |  |  |  |
length プロパティ (String オブジェクト) | x |  |  |  |  |
より小さい (<) | x |  |  |  |  |
より小さいか等しい | x |  |  |  |  |
link メソッド | x |  |  |  |  |
LN2 プロパティ | x |  |  |  |  |
LN10 プロパティ | x |  |  |  |  |
localeCompare メソッド |  |  |  |  |  | x
log メソッド | x |  |  |  |  |
LOG2E プロパティ | x |  |  |  |  |
LOG10E プロパティ | x |  |  |  |  |
論理 AND 演算子 (&&) | x |  |  |  |  |
論理 NOT 演算子 (!) | x |  |  |  |  |
論理 OR 演算子 (||) | x |  |  |  |  |
match メソッド |  |  | x |  |  |
Math オブジェクト | x |  |  |  |  |
max メソッド | x |  |  |  |  |
MAX_VALUE プロパティ |  | x |  |  |  |
message プロパティ |  |  |  |  |  | x
min メソッド | x |  |  |  |  |
MIN_VALUE プロパティ |  | x |  |  |  |
剰余演算子 (%) | x |  |  |  |  |
moveFirst メソッド |  |  | x |  |  |
moveNext メソッド |  |  | x |  |  |
multiline プロパティ |  |  |  |  |  | x
乗算演算子 (*) | x |  |  |  |  |
name プロパティ |  |  |  |  |  | x
NaN プロパティ (Global オブジェクト) |  |  | x |  |  |
NaN プロパティ (Number オブジェクト) |  | x |  |  |  |
NEGATIVE_INFINITY プロパティ |  | x |  |  |  |
new 演算子 | x |  |  |  |  |
厳密非等価演算子 (!==) | x |  |  |  |  |
Number オブジェクト |  | x |  |  |  |
number プロパティ |  |  |  |  | x |
Object オブジェクト |  |  | x |  |  |
演算子の優先順位 | x |  |  |  |  |
parse メソッド | x |  |  |  |  |
parseFloat メソッド | x |  |  |  |  |
parseInt メソッド | x |  |  |  |  |
PI プロパティ | x |  |  |  |  |
pop メソッド |  |  |  |  |  | x
POSITIVE_INFINITY プロパティ |  | x |  |  |  |
pow メソッド | x |  |  |  |  |
prototype プロパティ |  | x |  |  |  |
propertyIsEnumeramble プロパティ |  |  |  |  |  | x
push メソッド |  |  |  |  |  | x
random メソッド | x |  |  |  |  |
RegExp オブジェクト |  |  | x |  |  |
Regular Expression オブジェクト |  |  | x |  |  |
正規表現の構文 |  |  | x |  |  |
replace メソッド | x |  |  |  |  |
return ステートメント | x |  |  |  |  |
reverse メソッド |  | x |  |  |  |
rightContext プロパティ |  |  |  |  |  | x
round メソッド | x |  |  |  |  |
ScriptEngine 関数 |  | x |  |  |  |
ScriptEngineBuildVersion 関数 |  | x |  |  |  |
ScriptEngineMajorVersion 関数 |  | x |  |  |  |
ScriptEngineMinorVersion 関数 |  | x |  |  |  |
search メソッド |  |  | x |  |  |
@set ステートメント |  |  | x |  |  |
setDate メソッド | x |  |  |  |  |
setFullYear メソッド |  |  | x |  |  |
setHours メソッド | x |  |  |  |  |
setMilliseconds メソッド |  |  | x |  |  |
setMinutes メソッド | x |  |  |  |  |
setMonth メソッド | x |  |  |  |  |
setSeconds メソッド | x |  |  |  |  |
setTime メソッド | x |  |  |  |  |
setUTCDate メソッド |  |  | x |  |  |
setUTCFullYear メソッド |  |  | x |  |  |
setUTCHours メソッド |  |  | x |  |  |
setUTCMilliseconds メソッド |  |  | x |  |  |
setUTCMinutes メソッド |  |  | x |  |  |
setUTCMonth メソッド |  |  | x |  |  |
setUTCSeconds メソッド |  |  | x |  |  |
setYear メソッド | x |  |  |  |  |
shift メソッド |  |  |  |  |  | x
sin メソッド | x |  |  |  |  |
slice メソッド (Array オブジェクト) |  |  | x |  |  |
slice メソッド (String オブジェクト) |  |  | x |  |  |
small メソッド | x |  |  |  |  |
sort メソッド |  | x |  |  |  |
source プロパティ |  |  | x |  |  |
splice メソッド |  |  |  |  |  | x
split メソッド |  |  | x |  |  |
sqrt メソッド | x |  |  |  |  |
SQRT1_2 プロパティ | x |  |  |  |  |
SQRT2 プロパティ | x |  |  |  |  |
strike メソッド | x |  |  |  |  |
String オブジェクト | x |  |  |  |  |
sub メソッド | x |  |  |  |  |
substr メソッド |  |  | x |  |  |
substring メソッド | x |  |  |  |  |
減算演算子 (-) | x |  |  |  |  |
sup メソッド | x |  |  |  |  |
switch ステートメント |  |  | x |  |  |
tan メソッド | x |  |  |  |  |
test メソッド |  |  | x |  |  |
this ステートメント | x |  |  |  |  |
throw ステートメント |  |  |  |  | x |
toArray メソッド |  |  | x |  |  |
toDateString メソッド |  |  |  |  |  | x
toExponential メソッド |  |  |  |  |  | x
toFixed メソッド |  |  |  |  |  | x
toGMTString メソッド | x |  |  |  |  |
toLocaleDateString メソッド |  |  |  |  |  | x
toLocaleLowercase メソッド |  |  |  |  |  | x
toLocaleString メソッド | x |  |  |  |  |
toLocaleTimeString メソッド |  |  |  |  |  | x
toLocaleUppercase メソッド |  |  |  |  |  | x
toLowerCase メソッド | x |  |  |  |  |
toPrecision メソッド |  |  |  |  |  | x
toString メソッド |  | x |  |  |  |
toTimeString メソッド |  |  |  |  |  | x
toUpperCase メソッド | x |  |  |  |  |
toUTCString メソッド |  |  | x |  |  |
try ステートメント |  |  |  |  | x |
typeof 演算子 | x |  |  |  |  |
ubound メソッド |  |  | x |  |  |
単項マイナス符号演算子 (-) | x |  |  |  |  |
undefined プロパティ |  |  |  |  |  | x
unescape メソッド | x |  |  |  |  |
unshift メソッド |  |  |  |  |  | x
符号なし右シフト演算子 (>>>) | x |  |  |  |  |
UTC メソッド | x |  |  |  |  |
valueOf メソッド |  | x |  |  |  |
var ステートメント | x |  |  |  |  |
VBArray オブジェクト |  |  | x |  |  |
void 演算子 |  | x |  |  |  |
while ステートメント | x |  |  |  |  |
with ステートメント | x |  |  |  |  |


著作権について

Microsoft® VBScript®

URL やその他のインターネット Web サイトを含み、このドキュメントに記載されている事柄は、情報提供の目的のためにのみ発行されているものであり、将来予告なしに変更することがあります。特に記載していない場合、ここで使用している会社、組織、製品、人物、キャラクタ、データなどの名称は架空のものです。実在する商品名、団体名、個人名などとは一切関係ありません。お客様は、適用される著作権法を遵守する責任を負います。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。

マイクロソフトは、このドキュメントに記載される内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。このドキュメントは、これらの特許、商標、著作権またはその他の無体財産権に関する権利をお客様に許諾するものではありません。

© 1991-2001 Microsoft Corporation.All rights reserved.

Microsoft、MS、MS-DOS、ActiveX、JScript、Microsoft Press、MSDN、Visual Basic、Windows、Windows NT、Win32、および Win32s は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。

記載されている会社名、製品名には、各社の商標のものもあります。


ActiveX コンポーネントはオブジェクトを作成できません。

VBScript 5.5 ランタイムでオブジェクトをインスタンス化できませんでした。オブジェクトのクラスがシステム レジストリに登録されていないか、関連付けられている 1 つ以上のダイナミック リンク ライブラリ (DLL) が使用できないことが原因です。または、オブジェクトで必要な DLL が存在しないか、または壊れているために使用できないことが考えられます。

このエラーを解決するには

  • 関連付けられているすべての DLL が使用できることを確認します。たとえば、データ アクセス オブジェクト (DAO) では、プラットフォームごとに異なるサポート DLL が必要です。このようなオブジェクトでは、セットアップ プログラムの再起動が必要になる場合があります。
  • Internet Explorer でオブジェクトを作成するときに、正しいセキュリティ権限を設定していないことが考えられます。Internet Explorer のセキュリティ設定をリセットしてから、再試行します。

参 照

オブジェクトでの VBScript の使用


例外が発生しました。

スクリプトで COM オブジェクトを呼び出したときに、例外が発生しました。

このエラーを解決するには

  • この呼び出しが Raise メソッドで生成されていない場合は、エラーが発生している COM オブジェクトの開発者に問い合わせてください。
  • Microsoft 製品サポート サービスに連絡して、このエラー メッセージが表示されたときの状況をお知らせください。

参 照

Raise メソッド | Err


引数は省略できません。

プロシージャの呼び出しで、引数の数が合っていません。プロシージャに渡す引数の数は、プロシージャ定義のパラメータ数と一致する必要があります。

このエラーを解決するには

必要な引数をすべて指定しているかどうか、関数シグネチャを確認します。

参 照

VBScript プロシージャ


固定サイズの配列、または現在、この配列はサイズを変更できない状態にあります。

固定サイズの配列の要素数を ReDim で変更しようとしました。dynamic として宣言した配列、または Variant 変数内の配列は、サイズが変更できない状態になります。

このエラーを解決するには

  • 配列をプロシージャ内で宣言している場合は、ReDim 関数を使用して static から dynamic に変更します。
  • 配列をモジュール レベルで宣言している場合は、要素数を指定せずに配列を宣言します。

参 照

Array 関数 | Dim ステートメント | ReDim ステートメント | Set ステートメント | Private ステートメント | Public ステートメント


クラスでは、既定のプロパティ/メソッドを複数個選択することはできません。

クラス定義で、既定のプロパティまたはメソッドが複数個指定されています。クラスには 1 つの既定プロパティと 1 つの既定メソッドだけを指定できます。

このエラーを解決するには

クラスの既定プロパティと既定メソッドをそれぞれ 1 つにします。

参 照

Function ステートメント


Sub プロシージャを呼び出すときに、かっこを使うことはできません。

Call ステートメントを指定せずに、かっこ () を指定してサブルーチンが呼び出されています。サブルーチンを呼び出すときに Call ステートメントを使用しない場合は、かっこは使用しません。

このエラーを解決するには

  • サブルーチンの呼び出しから、かっこを取り除きます。
  • Call ステートメントを指定してサブルーチンを呼び出します。

参 照

Call ステートメント | Sub ステートメント


要求された操作を実行できません。

ホストでスクリプト エンジンが停止したため、スクリプトの実行が続行できません。明示的なエラー コードを返すようにホストで指定されていません。

このエラーを解決するには

ホスト側で対処する必要があります。


クラスはオートメーションをサポートしていません。

オートメーションをサポートしていないオブジェクトのプロパティまたはメソッドにアクセスしようとしました。オートメーションをサポートしていないオブジェクトへの参照を作成し渡すことはできますが、そのプロパティとメソッドにアクセスすることはできません。

このエラーを解決するには

そのオブジェクトを作成したアプリケーションのマニュアルを参照して、このクラスでオートメーションを使用する上での制限を確認します。

メモ CreateObject で作成されたオブジェクトが、同時にホスト オブジェクト モデルとしても利用されているケースが考えられます。

参 照

CreateObject 関数


クラスの初期化または終了に引数がありません

スクリプトのクラス定義に Class_Initialize イベントまたは Class_Terminate イベントがあります。このプロシージャで 1 つ以上のパラメータが指定されています。この 2 つのプロシージャではパラメータを指定しないでください。

このエラーを解決するには

クラス定義からパラメータを削除します。

参 照

初期化イベント | 終了イベント


クラスが定義されていません。

クラスを定義せずに、(New または Set ステートメントで) クラスを参照しようとしました。

このエラーを解決するには

クラスを定義してから、クラスを参照します。

参 照

Set ステートメント


Default の指定は、Property Get にのみ適用されます。

Visual Basic Scripting Edition

"Default" の指定は、Property Get にのみ適用されます。

Property Let または Property Set で、予約語 Default が使用されています。予約語 Default は Property Get だけで指定できます。

このエラーを解決するには

予約語 Default は Property Get だけで指定します。

参 照

Property Let ステートメント | Property Set ステートメント | Property Get ステートメント


Default を指定する場合には、Public も指定されていなければなりません。

Visual Basic Scripting Edition

"Default" を指定する場合には、"Public" も指定されていなければなりません。

プロパティが Default として定義されていますが、Public として定義されていません。プロパティを Default として定義する場合は、Public としても定義する必要があります。

このエラーを解決するには

すべての Default プロパティを Public として定義します。

参 照

Function ステートメント


0 で除算しました。

数値をゼロで除算する式が記述されています。ゼロによる除算の結果は無限 (使用不可) になります。

このエラーを解決するには

記述や case に間違いがないか確認します。


DLL 読み込み時のエラーです。

アプリケーションで参照している DLL が見つかりません。または、DLL で参照している別の DLL が見つかりません。

このエラーを解決するには

  • DLL が存在することを確認します。
  • DLL を参照するときに絶対パスを指定します。
  • 参照している DLL を入手し、別の DLL で使用できるようにします。


正規表現の中に ] を指定してください。 (VBScript)

Visual Basic Scripting Edition

正規表現の中に "]" を指定してください。

正規表現の一致で文字クラスを作成しようとしましたが、右角かっこがありません。個々のリテラル文字の組み合わせは、角かっこで囲んで文字クラスにまとめることができます。文字クラスの中の 1 文字と一致させることができます。たとえば、/[abc]/ は、"a"、"b"、または "c" のいずれかの文字と一致します。

このエラーを解決するには

対応する右角かっこを正規表現に追加します。

参 照

正規表現 (RegExp) オブジェクト


Case がありません。

Visual Basic Scripting Edition

"Case" がありません。

Select...End Select 構造で、Case ステートメントが指定されていません。Select...End Select 構造の正しい使用例を次に示します。

Select Case testexpression
   [Case expressionlist-n
      [statements-n]] . . .
   [Case Else expressionlist-n
      [elsestatements-n]]
End Select

このエラーを解決するには

Select...End Select 構造に必要なすべての要素が含まれていることを確認します。

参 照

Select Case ステートメント


Class がありません。

Visual Basic Scripting Edition

"Class" がありません。

Class プロシージャが End Class ステートメントで終了せずに、End キーワードで終了しています。Class プロシージャは、必ず End Class ステートメントで終了します。

このエラーを解決するには

Class プロシージャを End Class ステートメントで終了します。

参 照

Class ステートメント


End がありません。

Visual Basic Scripting Edition

"End" がありません。

構造が正しく終了していません。次の表は、End ステートメントで終了する必要のある VBScript 構造を示しています。

構造 | 終了ステートメント
Sub | End Sub
Function | End Function
If | End If
Class | End Class
With | End With
Select | End Select

このエラーを解決するには

  • Sub プロシージャは、対応する End Sub ステートメントで終了します。
  • Function プロシージャは、対応する End Function ステートメントで終了します。
  • If ステートメントは、対応する End If ステートメントで終了します。
  • Class ステートメントは、対応する End Class ステートメントで終了します。
  • With ステートメントは、対応する End With ステートメントで終了します。
  • Select ステートメントは、対応する End Select ステートメントで終了します。

参 照

Sub ステートメント | Function ステートメント


ステートメントの末尾が不正です。

ステートメントから文字がはみ出しています。

このエラーを解決するには

  • 余分な文字を削除します。
  • コードのコメントを記述する場合は、ステートメントの最後にアポストロフィ "'" を挿入します。

参 照

VBScript のコード記述規則


= がありません。 (VBScript)

Visual Basic Scripting Edition

"=" がありません。

Set ステートメントに = が指定されていません。

このエラーを解決するには

Set ステートメントの構文に従って指定します。

参 照

Set ステートメント


式がありません。

Select...End Select 構造で、1 つ以上の値を持つ Case 節と Case Else ステートメントが同じ行に記述されています。Case Else ステートメント (どの条件にも当てはまらない場合に実行されるステートメント) は、別の行に記述する必要があります。Select...End Select 構造の正しい使用例を次に示します。

Select Case testexpression
   [Case expressionlist-n
      [statements-n]] . . .
   [Case Else expressionlist-n
      [elsestatements-n]]
End Select

このエラーを解決するには

Case Else ステートメントを別の行に記述します。

参 照

Select Case ステートメント


Function がありません。

Visual Basic Scripting Edition

"Function" がありません。

Function プロシージャが End Function ステートメントで終了せずに、End キーワードで終了しています。Function プロシージャは、必ず End Function ステートメントで終了します。

このエラーを解決するには

Function プロシージャを End Function ステートメントで終了します。

参 照

Function ステートメント | Call ステートメント | Dim ステートメント | Exit ステートメント | Set ステートメント | Sub ステートメント


識別子がありません。 (VBScript)

Visual Basic Scripting Edition

識別子がありません。

変数の宣言で、VBScript の予約語が名前に使用されています。

このエラーを解決するには

  • VBScript の予約語以外の名前で変数を宣言します。
  • 予約語を [ ] で囲みます。


If がありません。

Visual Basic Scripting Edition

"If" がありません。

If...Then...Else ブロックが正しく終了していません。ブロックは、先頭行に If ステートメントを記述し、End If ステートメントで終了する必要があります。If...Then...Else ブロックの正しい使用例を次に示します。

If condition Then
   [statements]
[ElseIf condition-n Then
   [elseifstatements]] . . .
[Else
   [elsestatements]]
End If

このエラーを解決するには

If ステートメントのブロックが End ステートメントで終了しているかどうかを確認します。その場合は、End If ステートメントに変更します。

参 照

If...Then...Else ステートメント


In がありません。

Visual Basic Scripting Edition

"In" がありません。

For Each...Next ブロックの先頭行に In キーワードがありません。For Each...Next ブロックの正しい使用例を次に示します。

For Each element In group
   [statements]
   [Exit For]
   [statements]
Next [element]

このエラーを解決するには

  1. For Each...Next ブロックに必要なすべての要素が含まれていることを確認します。

参 照

For Each...Next ステートメント | Do...Loop ステートメント | Exit ステートメント | For...Next ステートメント | While...Wend ステートメント


正規表現の中に ) を指定してください。 (VBScript)

Visual Basic Scripting Edition

正規表現の中に ")" を指定してください。

正規表現サブ式に右かっこ ")" が指定されていません。正規表現では、かっこにはいろいろな意味があります。主に、かっこを使用して、別個のアイテムを 1 つのサブ式にまとめ、*、+、? などで各アイテムが 1 つの単位として扱われるようにします。

このエラーを解決するには

正規表現サブ式に右かっこ ")" を指定します。

参 照

正規表現 (RegExp) オブジェクト


整数型の定数がありません。

Dim ステートメントで定数を使用せずに配列を作成しようとしました。VBScript では、Dim ステートメントのサイズの値は定数で指定する必要があります。次に例を示します。

Dim a(10)   ' は有効です。
Dim a(x)    ' は無効です。
Dim a(1=2)  ' は無効です。

このエラーを解決するには

ReDim ステートメントを使用します。

参 照

Dim ステートメント | ReDim ステートメント


( がありません。 (VBScript)

Visual Basic Scripting Edition

"(" がありません。

プロシージャ宣言で、左かっこ "(" が指定されていません。

Sub foo x // x はかっこで囲む必要があります。
End Sub

または、ステートメントで、左かっこ "(" が指定されていません。

Redim x // x はかっこで囲む必要があります。

このエラーを解決するには

左かっこ "(" を指定します。

参 照

演算子の優先順位


プロパティの宣言に Let、Set または Get がありません。

Property Let、Property Set、または Property Get ステートメントに、キーワード Let、Set、または Get がありません。Property ステートメントでは、Let、Set、または Get を指定する必要があります。

このエラーを解決するには

Property ステートメントで Let、Set、または Get を指定します。

参 照

Property Let ステートメント | Property Set ステートメント | Property Get ステートメント


リテラル定数を指定してください。

定数の宣言で、(値が変わる) 変数式を代入しています。定数にランタイム コードを含めることはできません。

このエラーを解決するには

定数の宣言では式を使用しないようにします。

参 照

VBScript の定数 | VBScript の定数 | Const ステートメント


Loop がありません。

Visual Basic Scripting Edition

"Loop" がありません。

Do ループ構造が正しく終了していません。Do ループ構造は、対応する Loop ステートメントで終了します。Do ループ構造の正しい使用例を次に示します。

Do [{While | Until} condition]
   [statements]
   [Exit Do]
   [statements]
Loop

または、次の構文で記述します。

Do
   [statements]
   [Exit Do]
   [statements]
Loop [{While | Until} condition]

このエラーを解決するには

Do ループ構造に必要なすべての要素が含まれていることを確認します。

参 照

Do...Loop ステートメント | Exit ステートメント | For...Next ステートメント | While...Wend ステートメント


Next がありません。

Visual Basic Scripting Edition

"Next" がありません。

For...Next ループ構造が正しく終了していません。For...Next ループ構造は、必ず Next ステートメントで終了します。For...Next ループ構造の正しい使用例を次に示します。

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next

このエラーを解決するには

For...Next ループ構造に必要なすべての要素が含まれていることを確認します。

参 照

For...Next ステートメント | Do...Loop ステートメント | Exit ステートメント | For Each...Next ステートメント | While...Wend ステートメント


Property ステートメントがありません。

Visual Basic Scripting Edition

"Property" ステートメントがありません。

Property プロシージャ (Property Let、Property Set、または Property Get) が End Property ステートメントで終了していません。Property プロシージャは、必ず End Property ステートメントで終了します。

このエラーを解決するには

Property プロシージャを End Property ステートメントで終了します。

参 照

Property Let ステートメント | Property Set ステートメント | Property Get ステートメント


) がありません。 (VBScript)

Visual Basic Scripting Edition

")" がありません。

かっこ内に式を記述しようとしていますが、対応する右かっこ ")" がありません。左かっこと右かっこの中に式を記述する必要があります。

このエラーを解決するには

対応する右かっこを追加します。

参 照

演算子の優先順位


Select がありません。

Visual Basic Scripting Edition

"Select" がありません。

Select...End Select 構造が End Select ステートメントで終了していません。Select...End Select 構造の正しい使用例を次に示します。

Select Case testexpression
   [Case expressionlist-n
      [statements-n]] . . .
   [Case Else expressionlist-n
      [elsestatements-n]]
End Select

このエラーを解決するには

Select...End Select 構造に必要なすべての要素が含まれていることを確認します。

参 照

Select Case ステートメント | If...Then...Else ステートメント


ステートメントがありません。

Execute ステートメントに引数として渡した文字列が、ステートメントとして解析できません。Execute ステートメントは、VBScript コードを動的に実行するのに使用します。たとえば、次の VBScript コードを例に説明します。

Execute "msgbox 1"  'msgbox はステートメントであるので、この記述は有効です。
Execute "5*4"       '5*4 はステートメントとして判断されないので、この記述は無効です。

「ステートメントがありません」エラーは、Execute や Eval 以外にも、ステートメントが必要なスクリプト コードのコンパイル時にも発生します。たとえば、Internet Explorer では、次のコードでこのエラーが発生します。

<html>
<script language=vbscript>
    5*4
</script>
</html>

VBScript には相互に無関係な別個の Execute ステートメントが 2 つあります。

  • 実行中に、ステートメントをコンパイルし実行する Execute ステートメント
  • 正規表現の Execute メソッド

このエラーを解決するには

  • Execute に渡す文字列がステートメントであることを確認します。
  • 式で文字列を評価する場合は、Eval を使用します。

参 照

Execute ステートメント | Eval


Sub がありません。

Visual Basic Scripting Edition

"Sub" がありません。

Sub プロシージャが End Sub ステートメントで終了せずに、End キーワードで終了しています。Sub プロシージャは、必ず End Sub ステートメントで終了します。

このエラーを解決するには

Sub プロシージャを End Sub ステートメントで終了します。

参 照

Sub ステートメント | Call ステートメント | Dim ステートメント | Exit ステートメント | Function ステートメント


Then がありません。

Visual Basic Scripting Edition

"Then" がありません。

If...Then...Else 構造の先頭行に Then キーワードがありません。If...Then...Else 構造の正しい使用例を次に示します。

If condition Then statements [Else elsestatements ]

または、ブロック形式で記述します。

If condition Then
   [statements]
[ElseIf condition-n Then
   [elseifstatements]] . . .
[Else
   [elsestatements]]
End If

このエラーを解決するには

If...Then...Else 構造に必要なすべての要素が含まれていることを確認します。

参 照

If...Then...Else ステートメント | Select Case ステートメント | 条件ステートメントの使用


To がありません。

Visual Basic Scripting Edition

"To" がありません。

For...Next ループの先頭行に To キーワードがありません。For...Next ループの先頭行には、必ず To キーワードを記述します。For...Next ループの正しい使用例を次に示します。

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next

このエラーを解決するには

For...Next ループに必要なすべての要素が含まれていることを確認します。

参 照

For...Next ステートメント | For Each...Next ステートメント | Do...Loop ステートメント | Exit ステートメント | For...Next ステートメント | While...Wend ステートメント


Wend がありません。

Visual Basic Scripting Edition

"Wend" がありません。

While...Wend ループが正しく終了していません。While...Wend ループは、必ず、対応する Wend ステートメントで終了します。While...Wend ループの正しい使用例を次に示します。

While condition
   バージョン [statements]
Wend

このエラーを解決するには

While...Wend ループに必要なすべての要素が含まれていることを確認します。

参 照

ループ制御 | While...Wend ステートメント | Do...Loop ステートメント | For...Next ステートメント | For Each...Next ステートメント | Exit ステートメント


While または Until がありません。

Visual Basic Scripting Edition

"While" または "Until" がありません。

Do ループにキーワード While または Until がありません。Do ループの条件ステートメントには、キーワード While または Until を指定する必要があります。Do ループの正しい使用例を次に示します。

Do [{While | Until} condition]
   [statements]
   [Exit Do]
   [statements]
Loop

または、次の構文で記述します。

Do
   [statements]
   [Exit Do]
   [statements]
Loop [{While | Until} condition]

このエラーを解決するには

Do ループに必要なすべての要素が含まれていることを確認します。

参 照

ループ制御 | Do...Loop ステートメント | For...Next ステートメント | For...Next ステートメント | While...Wend ステートメント | Exit ステートメント


While、Until または終了するためのステートメントがありません。

Visual Basic Scripting Edition

"While"、"Until" または終了するためのステートメントがありません。

Do ループにキーワード While または Until がありません。Do ループの条件ステートメントには、キーワード While または Until を指定する必要があります。Do ループの正しい使用例を次に示します。

Do [{While | Until} condition]
   [statements]
   [Exit Do]
   [statements]
Loop

または、次の構文で記述します。

Do
   [statements]
   [Exit Do]
   [statements]
Loop [{While | Until} condition]

このエラーを解決するには

  • Do ループに必要なすべての要素が含まれていることを確認します。
  • Do ループをキーワード While または Until で終了します。

参 照

ループ制御 | Do...Loop ステートメント | For...Next ステートメント | For...Next ステートメント | While...Wend ステートメント | Exit ステートメント


With がありません。

Visual Basic Scripting Edition

"With" がありません。

With ブロックが End With ステートメントで終了せずに、End キーワードで終了しています。With ブロックは、必ず、対応する End With ステートメントで終了します。With ブロックの正しい使用例を次に示します。

With object
   statements
End With

このエラーを解決するには

  • With ブロックをキーワード End で終了している場合は、End With ステートメントに変更します。
  • With 制御構造に必要なすべての要素が含まれていることを確認します。

参 照

制御ステートメントの使用 | With ステートメント | Set ステートメント | If...Then...Else ステートメント | Select Case ステートメント


オートメーションの操作中にファイル名またはクラス名を見つけられませんでした。

GetObject 関数の引数に認識できないクラス名またはファイル名が指定されています。GetObject 関数では、取得するオブジェクトのあるファイルの絶対パスを指定するか、またはシステムで登録したクラスの名前を指定する必要があります。

このエラーを解決するには

  • 指定した名前に間違いがないか確認し、再試行します。
  • class パラメータに指定している名前が、システムで登録した名前と一致しているかどうか確認します。

参 照

GetObject 関数 | CreateObject 関数


For ループは初期化されていません。

スクリプト内の処理が For...Next ループ内にジャンプしています。この場合、For...Next ループのカウンタが初期化されていないため、エラーになります。For...Next ループの正しい使用例を次に示します。

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next

このエラーを解決するには

  • For...Next ループ内へのジャンプを削除します。
  • For...Next ループに必要なすべての要素が含まれていることを確認します。

参 照

ループ制御 | For...Next ステートメント | Do...Loop ステートメント | Exit ステートメント | For Each...Next ステートメント | While...Wend ステートメント


識別子が長すぎます。

変数名または関数名が長すぎます。半角で最大 255 文字までです。

このエラーを解決するには

名前を短くします。

参 照

VBScript の変数 | VBScript のデータ型 | Dim ステートメント | Public ステートメント | Private ステートメント


不正な代入です。

代入式の左側に、読み取り専用の識別子が記述されています。読み取り専用の識別子に値は代入できません。

このエラーを解決するには

読み取り専用の識別子は、代入式の右側だけで使用します。

参 照

代入演算子 (=) | 比較演算子 | 演算子の優先順位 | 演算子の概要 | Set ステートメント


内部エラーです。

内部障害が発生しました。

このエラーを解決するには

この呼び出しが Raise メソッドで生成されていない場合は、Microsoft 製品サポート サービスに連絡して、このエラー メッセージが表示されたときの状況をお知らせください。

参 照

Raise メソッド


不正な文字です。 (VBScript)

Visual Basic Scripting Edition

不正な文字です。

ダブル バイト文字セット (DBCS) またはそのほかのサポートされていない文字が式で使用されています。

このエラーを解決するには

サポートされていない文字を角かっこ ([]) で囲みます。


不正な exit ステートメントです。

Visual Basic Scripting Edition

不正な "exit" ステートメントです。

次のいずれかのプログラム制御構造内部に Exit ステートメントがあります。

  • With ステートメント
  • If...Then...Else ステートメント
  • Select Case ステートメント

Exit ステートメントは、次に示す構造から抜け出すためだけに使用します。

  • Do...While ループ (Exit Do)
  • For...Next ループ (Exit For)
  • For Each...Next ループ (Exit For)
  • Function プロシージャ (Exit Function)
  • Sub プロシージャ (Exit Sub)

このエラーを解決するには

  • Exit If、Exit With、または Exit Select を間違って記述していることが考えられます。
  • Exit を If、With、または Select ステートメントで使用しないようにします。

参 照

Exit ステートメント | Do...Loop ステートメント | For Each...Next ステートメント | For...Next ステートメント | Function ステートメント | Sub ステートメント


for ループを制御する変数が不正です。

Visual Basic Scripting Edition

"for" ループを制御する変数が不正です。

内部にネストしているループと同じ制御変数を使用している For...Next ループがあります。または、For...Next ループの制御変数が不正である可能性があります。For...Next ループの正しい使用例を次に示します。

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next

このエラーを解決するには

For...Next ループの制御変数を、最も外側のループの範囲内で一意なものに変更します。

参 照

ループ制御 | For...Next ステートメント | Do...Loop ステートメント | Exit ステートメント | For Each...Next ステートメント | While...Wend ステートメント


不正な数字です。

式で指定してる値が長すぎるか、範囲を超えています。

このエラーを解決するには

値を小さくします。

参 照

VBScript のデータ型 | VarType 関数


不正な参照です。

オブジェクト以外で With ステートメントが使用されています。With ステートメントは、Null 以外のオブジェクト値だけで使用できます。With ブロックの正しい使用例を次に示します。

With object
   statements
End With

このエラーを解決するには

With ステートメントに有効なオブジェクトを指定します。

参 照

With ステートメント


ピクチャが不正です。

ロードしようとしたグラフィック ファイルが認識できない形式です。有効な形式は、ビットマップ (*.bmp)、アイコン (*.ico)、および Windows メタファイル (*.wmf) です。

このエラーを解決するには

有効な形式のグラフィック ファイルをロードします。

参 照

LoadPicture 関数


文字セットの範囲が不正です。 (VBScript)

Visual Basic Scripting Edition

文字セットの範囲が不正です。

正規表現で無効な文字が使用されています。正規表現は、英数字とメタ キャラクタで構成されます。

このエラーを解決するには

有効な正規表現の文字だけを使用して正規表現を構成します。

参 照

正規表現 (RegExp) オブジェクト


Me キーワードの使い方が不正です。

Visual Basic Scripting Edition

"Me" キーワードの使い方が不正です。

Set を使用して識別子 Me に値を代入しようとしました。Me は予約されている識別子で、値を設定することはできません。

このエラーを解決するには

変数名を Me 以外の名前に変更します。


Null 値の使い方が不正です。

値が Null である Variant 変数の値を取得しようとしました。Variant 変数の値は、有効な値があるときにだけ取得できます。Null は Variant のサブタイプで、データ アイテムに有効なデータがないことを表します。

このエラーを解決するには

変数に有効な値が含まれていることを確認します。

参 照

IsNull 関数


do がありません。

Visual Basic Scripting Edition

"do" がありません。

Do ループが正しく記述されていません。Do ループは、対応する Do ステートメントで開始します。Do ループの正しい使用例を次に示します。

Do [{While | Until} condition]
   [statements]
   [Exit Do]
   [statements]
Loop

または、次の構文で記述します。

Do
   [statements]
   [Exit Do]
   [statements]
Loop [{While | Until} condition]

このエラーを解決するには

  • Do 制御構造を削除するときに、Loop ステートメントを削除し忘れている可能性があります。
  • Do ループに必要なすべての要素が含まれていることを確認します。

参 照

Do...Loop ステートメント | Exit ステートメント | For...Next ステートメント | While...Wend ステートメント


クラスの内部で宣言しなければなりません。

Property プロシージャ (Property Let、Property Set、または Property Get) が Class 定義の外側で定義されています。Property プロシージャはクラスの内側だけで作成できます。

このエラーを解決するには

Property Let、Property Set、および Property Gets を Class 定義の内側で定義します。

参 照

Property Let ステートメント | Property Set ステートメント | Property Get ステートメント


行頭のみ許されるステートメントです。

If...Then...Else ステートメントを含むマルチステートメントのコードがありますが、If...Then...Else ステートメントが先頭のステートメントでありません。If...Then...Else ステートメントは、必ず最初のステートメントにします。

このエラーを解決するには

If または Else ステートメントを別の行に移します。

参 照

If...Then...Else ステートメント


名前付き引数が不正です。

引数を指定してプロシージャを呼び出しましたが、その名前のプロシージャは引数を受け取るように宣言されていません。名前付き引数は、プロシージャ定義に記述されていないものは、プロシージャの呼び出しで使用できません。

このエラーを解決するには

引数名の綴りが正しいことを確認してから、もう一度プロシージャを呼び出します。

参 照

VBScript のコード記述規則


名前が二重に定義されています。

宣言した識別子の名前が、スクリプトのほかの場所で既に使用されています。

このエラーを解決するには

識別子の名前を、スクリプトのグローバル範囲で一意な名前に変更します。


プロパティで指定した引数の数は、同じでなければなりません。

指定した引数の数が足りません。Property Let または Property Set の引数の数は、対応する Property Get から返される引数より 1 つ多くする必要があります。

このエラーを解決するには

Property Let と Property Set の引数の数が、Property Get で返される引数の数より少なくとも 1 つ多くなるようにします。

参 照

Property Let ステートメント | Property Set ステートメント | Property Get ステートメント


現在の国別情報の設定は、このオブジェクトではサポートされていません。

現在の国別情報の設定をサポートしていないオブジェクトにアクセスしようとしました。国別情報の設定は、所定の言語および国や地域に対応する情報のセットです。国別情報は、定義済みのプログラミング用語と国別情報固有の設定の言語に影響します。次の 2 つの場合で、国別情報が重要になります。

  • "コードの国別情報" は、キーワードなどの用語の言語に影響を与え、小数点の記号や桁区切り記号、日付の形式、文字の並べ替え順序などの国別情報固有の設定を定義します。
  • "システムの国別情報" は、国別情報対応の機能の動作に影響を与えます。たとえば、数字を表示する場合や、文字列を日付に変換する場合などです。システムの国別情報は、オペレーティング システムの [コントロール パネル] で設定します。

このエラーを解決するには

オブジェクトでサポートされる国別情報を確認します。

参 照

CDate 関数


このオブジェクトではサポートされていない操作です。

このオブジェクトでサポートされていないメソッドまたはプロパティを参照しようとしました。すべてのオブジェクトですべての操作がサポートされているわけではありません。

このエラーを解決するには

  • プロパティとメソッドの名前の綴りに間違いがないか確認します。
  • 詳細については、オブジェクトのマニュアルを参照してください。

参 照

オブジェクトでの VBScript の使用 | CreateObject 関数 | GetObject 関数


オブジェクトでサポートされていないプロパティまたはメソッドです。

このオートメーション オブジェクトに存在しないプロパティまたはメソッドが指定されています。すべてのオブジェクトですべてのプロパティとメソッドがサポートされているわけではありません。

このエラーを解決するには

  • プロパティとメソッドの名前の綴りに間違いがないか確認します。
  • 詳細については、オブジェクトのマニュアルを参照してください。


オブジェクトがコレクションではありません。

Collection オブジェクト専用の操作を、Collection オブジェクト以外のオブジェクトで実行しようとしました。Collection オブジェクトにしか適用されないプロパティ、メソッド、および操作がいくつかあります。Collection オブジェクトは、関連するオブジェクトのセットを含むオブジェクトです。Collection オブジェクト内のオブジェクトの位置は、コレクションで変更が発生するたびに変わるため、Collection オブジェクト内のオブジェクトの位置は変化します。

このエラーを解決するには

  • オブジェクトまたはプロパティの名前の綴りを確認します。
  • オブジェクトが Collection オブジェクトであることを確認します。
  • コレクションにオブジェクトを追加するのに使用した Add メソッドの構文が正しく、識別子の綴りが正しいことを確認します。


このオブジェクトは safe モードでは作成できません。

safe モードで作成できないオブジェクトを使用しようとしました。safe モードで作成できるオブジェクトのセットはホストで特定されます。通常、有害な操作 (ハード ディスクへのアクセスなど) を行う信頼性のないスクリプトを実行するオブジェクトは安全でないと見なされます。

たとえば、FileScriptingObject は、Microsoft Internet Explorer でクライアントとして実行するのは安全ではありませんが、ローカル マシンで Windows Script Host で使用することはできます。

このエラーを解決するには

  • 安全なオブジェクトを使用していることを確認します。
  • オブジェクトの開発者に問い合わせて、安全なバージョンがあるかどうか確認します。
  • オブジェクトのマニュアルを参照して、安全なオブジェクトであるかどうか確認します。


このオブジェクトは safe モードでは初期化できません。

safe モードで初期化できないオブジェクトを使用しようとしました。safe モードで作成できるオブジェクトのセットはホストで特定されます。通常、有害な操作 (ハード ディスクへのアクセスなど) を行う信頼性のないスクリプトを実行するオブジェクトは安全でないと見なされます。

たとえば、FileScriptingObject は、Microsoft Internet Explorer でクライアントとして実行するのは安全ではありませんが、ローカル マシンで Windows Script Host で使用することはできます。

このエラーを解決するには

  • 安全なオブジェクトを使用していることを確認します。
  • オブジェクトの開発者に問い合わせて、安全なバージョンがあるかどうか確認します。
  • オブジェクトのマニュアルを参照して、安全なオブジェクトであるかどうか確認します。

参 照

Initialize イベント


このオブジェクトは safe モードでは作成できません。

safe モードでスクリプト作成できないオブジェクトを使用しようとしました。safe モードで作成できるオブジェクトのセットはホストで特定されます。通常、有害な操作 (ハード ディスクへのアクセスなど) を行う信頼性のないスクリプトを実行するオブジェクトは安全でないと見なされます。

たとえば、FileScriptingObject は、Microsoft Internet Explorer でクライアントとして実行するのは安全ではありませんが、ローカル マシンで Windows Script Host で使用することはできます。

このエラーを解決するには

  • 安全なオブジェクトを使用していることを確認します。
  • オブジェクトの開発者に問い合わせて、安全なバージョンがあるかどうか確認します。
  • オブジェクトのマニュアルを参照して、安全なオブジェクトであるかどうか確認します。


オブジェクトがありません。

指定されたオブジェクトが有効でありません (またはオブジェクトとして認識できません)。プロパティまたはメソッドへの参照では、通常、オブジェクト修飾子を明示的に指定する必要があります。

このエラーを解決するには

  • オブジェクト修飾子を指定します。
  • オブジェクト修飾子の綴りを確認します。


オブジェクト型の変数は設定されていません。

オブジェクト プロパティを、有効なオブジェクトを指定せずに使用しようとしました。Set ステートメントを省略した場合は、オブジェクトへの参照でエラーが発生します。

このエラーを解決するには

オブジェクト変数の参照を指定します。

参 照

Property Set ステートメント


メモリ不足です。

コンピュータ システムで使用可能なメモリ容量を使い果たしました。動的に割り当てられる配列が大きくなりすぎたか、多数のオブジェクトがインスタンス化されたことが考えられます。

このエラーを解決するには

  • Erase ステートメントを使用して、動的配列記憶領域を再割り当てします。
  • ReDim ステートメントを使用して、記憶領域を再割り当てします。
  • 開いているアプリケーション、ドキュメント、ソース ファイルなどのうち、不要なものを閉じます。

参 照

Erase ステートメント | Dim ステートメント | Nothing | ReDim ステートメント | CreateObject 関数


スタック領域が不足しています。

プロシージャのネストが深すぎます。プロシージャにジャンプするたびに、ローカル変数の内容がスタックに格納されます。スタックとはメモリ内にある作業領域のことで、スタックのサイズは、実行しているスクリプトの要求に応じて動的に増減します。

このエラーを解決するには

  • プロシージャのネストが深くなりすぎないようにします。
  • 再帰的に呼び出し可能なプロシージャの呼び出し回数が多くなりすぎないようにします。
  • 再帰的に呼び出し可能なプロシージャが正常に終了していることを確認します。


文字列領域が不足しています。

文字列オブジェクトを作成しようとしましたが、システムのメモリを使い果たしているために作成できません。動的に割り当てられる配列が大きくなりすぎたか、多数のオブジェクトがインスタンス化されたことが考えられます。

このエラーを解決するには

  • Erase ステートメントを使用して、動的配列記憶領域を再割り当てします。
  • ReDim ステートメントを使用して、記憶領域を再割り当てします。
  • 開いているアプリケーション、ドキュメント、ソース ファイルなどのうち、不要なものを閉じます。

参 照

Erase ステートメント | Dim ステートメント | Nothing | ReDim ステートメント | CreateObject 関数


オーバーフローしました。

変数に代入しようとした値が大きすぎます。次のいずれかの場合に、このエラーが発生します。

  • 代入、計算、またはデータ型変換の結果が、変数の型で許容される値の範囲を超えている。
  • プロパティへの代入が、プロパティで受け入れ可能な値の最大値を超えている。
  • 計算結果を整数に変換しようとしたが、整数で許容される値の範囲を超えている。

このエラーを解決するには

  • 大きな数値が許容される型の変数に値を代入します。
  • プロパティに割り当てられた範囲内で代入します。

参 照

VBScript の変数 | Err


プロシージャの呼び出し、または引数が不正です。

プロシージャに渡している引数の 1 つが許容値の範囲を超えています。または、使用中のプラットフォームでは無効なプロシージャを呼び出している可能性があります。

このエラーを解決するには

  • プロシージャの引数の許容範囲を確認します。
  • プロシージャについて、プラットフォーム固有の情報を確認します。

参 照

VBScript の変数 | Function ステートメント | Sub ステートメント | Call ステートメント


Property set または Property let には少なくとも 1 つの引数が必要です。

クラスの Set または Let を処理するのに指定したプロパティ アクセサで引数が指定されていません。

このエラーを解決するには

プロパティ アクセサに引数を追加します。

参 照

Property Let ステートメント | Property Set ステートメント | Property Get ステートメント | Class ステートメント


Sub または Function が定義されていません。

存在しないプロシージャを呼び出そうとしました。

このエラーを解決するには

プロシージャの綴りが正しいかどうか確認します。

参 照

Sub ステートメント | Function ステートメント


インデックスが有効範囲にありません。

アクセスしようとしている配列の要素数が、予期した数よりも少ないです。たとえば、要素が 10 個しかない配列の 11 番目の要素にアクセスしようとする場合です。

このエラーを解決するには

  • 配列の有効範囲外への参照を防ぐための範囲チェックのコードを記述します。
  • 必要に応じて、配列のサイズを変更します。

参 照

UBound 関数 | LBound 関数 | Dim ステートメント | ReDim ステートメント


構文エラーです。 (VBScript)

Visual Basic Scripting Edition

構文エラーです。

作成したステートメントが VBScript の文法に違反しています。

このエラーを解決するには

  • 式を構成している要素の数を再度確認します。
  • かっこの対応に間違いがないかどうか確認します。

参 照

VBScript のデータ型 | VBScript の変数 | VBScript の定数 | VBScript の演算子 | 制御ステートメントの使用 | ループ制御 | VBScript のプロシージャ | VBScript のコード記述規則


正規表現で構文エラーが発生しました。 (VBScript)

Visual Basic Scripting Edition

正規表現で構文エラーが発生しました。

検索文字列の構成が、VBScript 正規表現の文法に違反しています。

このエラーを解決するには

正規表現の検索文字列が、Perl 正規表現の構文に適合するようにします。

参 照

正規表現 (RegExp) オブジェクト


型が一致しません。

比較できないデータ型の値を比較しようとしました。たとえば、文字列と数値の比較などです。

このエラーを解決するには

  • 同じデータ型で比較します。
  • 一方のデータ型をもう一方のデータ型にキャストしてから、再度比較します。

参 照

VBScript の変数


Next が不正です。

Visual Basic Scripting Edition

"Next" が不正です。

For...Next または For Each...Next 構造に For ステートメントがありません。たとえば、For...Next 構造を削除したときに、Next ステートメントを削除し忘れていることが考えられます。For...Next 構造の正しい使用例を次に示します。

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next

このエラーを解決するには

  • For ステートメント (ループ制御ステートメント) を追加します。
  • 余分な Next ステートメントを削除します。

参 照

For...Next ステートメント | For Each...Next ステートメント | ループ制御 | Exit ステートメント


文字の繰り返しを表す正規表現演算子が不正です。 (VBScript)

Visual Basic Scripting Edition

文字の繰り返しを表す正規表現演算子が不正です。

正規表現の検索パターンを作成するときに、一致文字列が正しく指定されていません。

このエラーを解決するには

検索パターンを正しく指定します。

参 照

正規表現 (RegExp) オブジェクト


終了していない文字列型の定数です。 (VBScript)

Visual Basic Scripting Edition

終了していない文字列型の定数です。

文字列定数が引用符で終了していません。文字列定数は引用符の対で囲む必要があります。

このエラーを解決するには

文字列の最後に引用符を追加します。

参 照

VBScript の定数


この変数は宣言されていません。

スクリプトの先頭に Option Explicit ステートメントが記述されているにもかかわらず、宣言されていない変数名が使用されています。Option Explicit ステートメントを記述した場合は、Dim、Private、Public、または ReDim の各ステートメントを使用して、すべての変数を明示的に宣言する必要があります。

このエラーを解決するには

Option Explicit ステートメントを記述する場合は、Dim、Private、Public、または ReDim の各ステートメントを使用して、すべての変数を宣言します。

参 照

Option Explicit ステートメント | VBScript の変数


VBScript でサポートされていないオートメーションが変数で使用されています。

タイプ ライブラリまたはオブジェクト ライブラリのサポートされていないデータ型を使用しようとしました。タイプ ライブラリまたはオブジェクト ライブラリにあるすべての変数をすべてのプログラミング言語で使用できるわけではありません。

このエラーを解決するには

VBScript で認識可能な変数型だけを使用します。

参 照

VBScript の変数 | VarType 関数の定数


引数の数が一致していません。または不正なプロパティを指定しています。

プロシージャの呼び出しで、次のいずれかの不具合があります。

  • プロシージャ名が間違っている。
  • プロシージャに指定している引数の数が間違っている。
  • 引数の型が間違っている。

プロシージャに渡す引数の数は、プロシージャ定義のパラメータ数と一致する必要があります。

このエラーを解決するには

プロシージャに渡す引数の並びが、プロシージャの宣言または定義と一致しているかどうかを確認します。

参 照

Function ステートメント | Sub ステートメント | Call ステートメント


代入演算子

= 演算子


プロシージャの呼び出し、または引数が不正です。

プロシージャの呼び出しで、無効なパラメータが渡されました。パラメータが範囲外か、無効なデータを含んでいることが考えられます。または、予期しないときにプロシージャを呼び出している可能性があります。

このエラーを解決するには

  • プロシージャに渡すパラメータが有効であることを確認します。
  • 適切なタイミングで関数を呼び出していることを確認します。


リモート サーバー マシンが存在しないか、利用できません。

CreateObject 関数を呼び出してリモート マシンにオブジェクトを作成しようとしましたが、呼び出しに失敗しました。リモート サーバーにアクセスできないか、指定したクラスがリモート サーバーにないことが考えられます。

このエラーを解決するには

  • リモート サーバーの名前が正しいことを確認します。
  • リモート サーバーで DCOM が有効になっていることを確認します。
  • アプリケーションの dcomcnfg を使用して、オブジェクトが作成できるセキュリティ権限であることを確認します。


未知の実行時エラーです。

未知のエラーが発生しました。

このエラーを解決するには

対処法はありません。


Copyright

Microsoft® Windows Script Components®

Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, people and events depicted herein are fictitious and no association with any real company, organization, product, person or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.

Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.

© 1991-2000 Microsoft Corporation. All rights reserved.

Microsoft, MS, MS-DOS, ActiveX, JScript, Microsoft Press, MSDN, Visual Basic, Windows, Windows NT, Win32, and Win32s are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners


Simple Validation

Enter a value between 1 and 10:


A Simple First Page


Object Sample

This page requires installation of the Label control.