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

Excel4Excel4vExcel12、または Excel12v の呼び出しで戻り値 XLOPER/ XLOPER12 を作成するときに、Microsoft Excel が割り当てたメモリ リソースを解放するために使用します。xlFree 関数は補助メモリを解放し、ポインターを NULL にリセットしますが、XLOPER/ XLOPER12 の他の部分は破棄しません。Used to free memory resources allocated by Microsoft Excel when creating the return value XLOPER/ XLOPER12 in a call to Excel4, Excel4v, Excel12, or Excel12v. The xlFree function frees the auxiliary memory and resets the pointer to NULL but does not destroy other parts of the 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_npx_1, ..., px_n

解放する 1 つ以上の XLOPER/ XLOPER12。Excel 2003 までのバージョンでは、渡せるポインターの最大数は 30 です。Excel 2007 以降は、255 に増加されました。One or more XLOPER/ XLOPER12s to be freed. In Excel versions up to 2003, the maximum number of pointers that can be passed is 30. Starting in Excel 2007, this is increased to 255.

プロパティ値/戻り値Property Value/Return Value

この関数は値を返しません。This function does not return a value.


Excel4 または Excel4v から戻り値として取得した XLOPER、および Excel12 または Excel12v から戻り値として取得した XLOPER12 は、型が xltypeStrxltypeMulti、または xltypeRef のいずれかの場合はすべて解放する必要があります。他の型を解放しても、それが Excel4 または Excel12 から取得したものである限り、たとえそれが補助メモリを使用しない場合でも、問題が生じることはありません。You must free every XLOPER that you get as a return value from Excel4 or Excel4v and every XLOPER12 that you get as a return value from Excel12 or Excel12v if they are one of the following types: xltypeStr, xltypeMulti, or xltypeRef. It is always safe to free other types even if they do not use auxiliary memory, as long as you got them from Excel4 or Excel12.

解放対象の Excel が割り当てたメモリを含む XLOPER/ XLOPER12 へのポインターを Excel に戻す場合、xlbitXLFree を設定して Excel にメモリを確実に解放させます。Where you are returning to Excel a pointer to an XLOPER/ XLOPER12 that still contains Excel-allocated memory to be freed, you must set the xlbitXLFree to ensure Excel releases the memory.


この例では GET.WORKSPACE(1) を呼び出し、Excel を実行中のプラットフォームを文字列として返します。コードは返された文字列を後で使用するためにバッファーにコピーします。コードはこのバッファーを後で Excel 関数で使用するために XLOPER12 に戻します。最後に、コードは警告ボックスに文字列を表示します。This example calls GET.WORKSPACE(1) to return the platform on which Excel is currently running as a string. The code copies this returned string into a buffer for later use. The code places the buffer back into the XLOPER12 for later use with the Excel function. Finally, the code displays the string in an alert box.


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
   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;

関連項目See also