xlFree
適用対象: Excel 2013 | Office 2013 | Visual Studio
Excel4、Excel4v、Excel12、または Excel12v の呼び出しで戻り値 XLOPER/ XLOPER12を作成するときに、Microsoft Excel によって割り当てられたメモリ リソースを解放するために使用されます。 xlFree 関数は補助メモリを解放し、ポインターを NULL にリセットしますが、XLOPER/ XLOPER12の他の部分は破棄しません。
Excel4(xlFree, 0, n, LPXLOPER px_1, ..., LPXLOPER px_n);
Excel12(xlFree, 0, n, LPXLOPER12 px_1, ..., LPXLOPER12 px_n);
パラメーター
px_1, ..., px_n
1 つ以上の XLOPER/ XLOPER12解放されます。 Excel 2003 までのバージョンでは、渡せるポインターの最大数は 30 です。 Excel 2007 以降では、これは 255 に増やされます。
プロパティ値/戻り値
この関数は値を返しません。
注釈
Excel4 または Excel4v から戻り値として取得した XLOPER、および Excel12 または Excel12v から戻り値として取得した XLOPER12 は、型が xltypeStr、xltypeMulti、または xltypeRef のいずれかの場合はすべて解放する必要があります。 他の型を解放しても、それが Excel4 または Excel12 から取得したものである限り、たとえそれが補助メモリを使用しない場合でも、問題が生じることはありません。
解放対象の Excel が割り当てたメモリを含む XLOPER/ XLOPER12 へのポインターを Excel に戻す場合、xlbitXLFree を設定して Excel にメモリを確実に解放させます。
例
この例では GET.WORKSPACE(1) を呼び出し、Excel を実行中のプラットフォームを文字列として返します。 コードは返された文字列を後で使用するためにバッファーにコピーします。 コードはこのバッファーを後で Excel 関数で使用するために XLOPER12 に戻します。 最後に、コードは警告ボックスに文字列を表示します。
\SAMPLES\EXAMPLE\EXAMPLE.C
short WINAPI xlFreeExample(void)
{
XLOPER12 xRes, xInt;
XCHAR buffer[cchMaxStz];
int i,len;
// Create an XLOPER12 for the argument to Getworkspace.
xInt.xltype = xltypeInt;
xInt.val.w = 1;
// Call GetWorkspace.
Excel12f(xlfGetWorkspace, &xRes, 1, (LPXLOPER12)&xInt);
// Get the length of the returned string
len = (int)xRes.val.str[0];
//Take into account 1st char, which contains the length
//and the null terminator. Truncate if necessary to fit
//buffer.
if (len > cchMaxStz - 2)
len = cchMaxStz - 2;
// Copy to buffer.
for(i = 1; i <= len; i++)
buffer[i] = xRes.val.str[i];
// Null terminate, Not necessary but a good idea.
buffer[len] = '\0';
buffer[0] = len;
// Free the string returned from Excel.
Excel12f(xlFree, 0, 1, &xRes);
// Create a new string XLOPER12 for the alert.
xRes.xltype = xltypeStr;
xRes.val.str = buffer;
// Show the alert.
Excel12f(xlcAlert, 0, 1, (LPXLOPER12)&xRes);
return 1;
}