次の方法で共有


xlFree

適用対象: Excel 2013 | Office 2013 | Visual Studio

Excel4、Excel4vExcel12、または 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 は、型が xltypeStrxltypeMulti、または 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;
}

関連項目