Interaction.GetObject メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Interaction.GetObject メソッドの意味・解説 

Interaction.GetObject メソッド

COM コンポーネントにより得られたオブジェクトへの参照を返します。

名前空間: Microsoft.VisualBasic
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)
構文構文

Public Shared Function GetObject
 ( _
    <OptionalAttribute> Optional PathName As
 String = Nothing, _
    <OptionalAttribute> Optional Class
 As String = Nothing _
) As Object
Dim PathName As String
Dim Class As String
Dim returnValue As Object

returnValue = Interaction.GetObject(PathName, Class)
public static Object GetObject (
    [OptionalAttribute] string PathName,
    [OptionalAttribute] string Class
)
public:
static Object^ GetObject (
    [OptionalAttribute] String^ PathName, 
    [OptionalAttribute] String^ Class
)
public static Object GetObject (
    /** @attribute OptionalAttribute() */ String PathName, 
    /** @attribute OptionalAttribute() */ String Class
)
public static function GetObject
 (
    PathName : String, 
    Class : String
) : Object

パラメータ

PathName

省略可能。String。取得するオブジェクトを含むファイルの完全パスと名前です。PathName を省略した場合、Class が必須になります。

Class

PathName が指定されていない場合は必須。String。オブジェクトのクラスを表す文字列です。Class 引数の構文と指定項目を次に示します。

appname.objecttype

戻り値
COM コンポーネントにより得られたオブジェクトへの参照を返します。

解説解説

詳細については、Visual Basic のトピック「GetObject 関数 (Visual Basic)」を参照してください。

GetObject 関数を使用して、ファイルから COM コンポーネントのインスタンスを読み込みます。次の例を使って説明します。

Dim CADObject As Object
CADObject = GetObject("C:\CAD\schema.cad")

このコードを実行すると、指定された PathName に関連付けられているアプリケーションが起動し、指定されたファイル内のオブジェクトがアクティブになります。

既定の動作
サブオブジェクトへのアクセス
クラスの指定
オブジェクトの使用

オブジェクトをアクティブにした後、コード内で宣言したオブジェクト変数を使用してオブジェクトを参照します。前に示した例では、オブジェクト変数 drawObj を使用して新しいオブジェクトのプロパティとメソッドにアクセスしています。次の例を使って説明します。

drawObj.Line(9, 90)
drawObj.InsertText(9, 100, "Hello, world.")
drawObj.SaveAs("C:\Drawings\sample.drw")
メモメモ

オブジェクトの現在のインスタンスが存在している場合、または読み込まれたファイルを使ってオブジェクトを作成する場合には、GetObject 関数を使用します。現在のインスタンスが存在せず、読み込まれたファイルを使ってオブジェクトを実行しない場合は、CreateObject 関数 (Visual Basic) を使用します。

複数のインスタンスを作成できない ActiveX オブジェクトの場合は、CreateObject を何度呼び出しても、そのオブジェクトのインスタンスは 1 つしか作成されません。単一インスタンスのオブジェクトの場合、長さ 0 の文字列 ("") の構文を使って GetObject を呼び出すと、常に同じインスタンスが返されます。PathName 引数を省略すると、エラーが発生します。GetObject を使用しても、Visual Basic で作成されたクラスへの参照は取得できません。

セキュリティに関するメモセキュリティに関するメモ

GetObject 関数には、アンマネージ コード アクセス許可が必要です。ただし、部分的に信頼されている状況でこの許可を使用すると、プログラムの実行に影響を及ぼす場合があります。詳細については、SecurityPermission、コード アクセス許可 の各トピックを参照してください。

使用例使用例

GetObject 関数を使用して特定の Microsoft Excel ワークシート (excelObj) への参照を取得する例を次に示します。ワークシートの Application プロパティを使用して、Excel の表示、終了、その他の操作を実行します。detectExcel プロシージャでは、2 回の API 呼び出しを使用して Excel を探し、Excel が動作していればランニング オブジェクト テーブルに入力します。Excel がまだ動作していない場合、最初に GetObject を呼び出したときにエラーが発生します。この例では、excelWasNotRunning フラグが True に設定されます。GetObject への 2 回目の呼び出しで、開くファイルを指定します。Excel がまだ実行されていない場合、2 回目の呼び出しで Excel が起動し、指定されたファイル test.xls で表されるワークシートへの参照が返されます。このファイルは指定された場所に置かれている必要があります。そうでない場合、FileNotFoundException がスローされます。次に、Excel および指定されたワークシートのウィンドウが表示されます。

この例では遅延バインディングを使用し、オブジェクトが Object 型の変数に割り当てられるため、Option Strict Off が必要です。Visual Studio の [プロジェクト] メニューで [参照の追加] ダイアログ ボックスを開き、[COM] タブから Excel タイプ ライブラリへの参照を追加する場合、Option Strict On を指定して、特定のオブジェクトの種類のオブジェクトを宣言できます。

' Declare necessary API routines.
Declare Function findWindow Lib
 "user32.dll" Alias _
    "FindWindowA" (ByVal lpClassName
 As String, _
    ByVal lpWindowName As Long)
 As Long
Declare Function sendMessage Lib
 "user32.dll" Alias _
    "SendMessageA" (ByVal hWnd
 As Long, ByVal wMsg As
 Long, _
    ByVal wParam As Long,
 ByVal lParam As Long)
 As Long
Sub getExcel()
    Dim excelObj As Object
    Dim excelWasNotRunning As Boolean
    ' Test to see if a copy of Excel is already running.
    On Error Resume Next
    ' GetObject called without the first argument returns a
    ' reference to an instance of the application. If the
    ' application is not already running, an error occurs.
    excelObj = GetObject(, "Excel.Application")
    If Err().Number <> 0 Then excelWasNotRunning
 = True
    Err().Clear()
    ' If Excel is running, enter it into the Running Object table.
    detectExcel()
    ' Set the object variable to refer to the file you want to use.
    excelObj = GetObject("c:\vb\test.xls")
    ' Show Excel through its Application property. Then show the
    ' window containing the file, using the Windows collection of
    ' the excelObj object reference.
    excelObj.Application.Visible = True
    excelObj.Parent.Windows(1).Visible = True
    ' Insert code to manipulate the test.xls file here.
End Sub
Sub detectExcel()
    ' Procedure detects a running Excel and registers it.
    Const WM_USER As Long
 = 1024
    Dim hWnd As Long
    ' If Excel is running, this API call returns its handle.
    hWnd = findWindow("XLMAIN", 0)
    If hWnd = 0 Then
        ' 0 means Excel is not running.
        Exit Sub
    Else
        ' Excel is running, so use the sendMessage API function
        ' to enter it in the Running Object table.
        sendMessage(hWnd, WM_USER + 18, 0, 0)
    End If
End Sub

getExcel 関数を呼び出すと、Excel が既に動作しているかどうかを確認するチェックが行われます。Excel が動作していない場合、インスタンスが作成されます。

セキュリティに関するメモセキュリティに関するメモ

前に示した例では、単純化のために、XLMAIN という名前のウィンドウはすべて Microsoft Excel のインスタンスに属していると想定しています。不正な改変などによって起動された他のオブジェクトにより、同じ名前のウィンドウが作成された場合、Excel に向けて送ったメッセージがすべてそのウィンドウで受け取られます。実稼働環境で使用するアプリケーションでは、より厳密なテストを追加して、XLMAIN が本当に Excel に属しているかどうかを確認する必要があります。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

Interaction.GetObject メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Interaction.GetObject メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS