4

私は XLL を書くのが初めてです。6x1 配列を Excel に返す方法を知っている人はいますか?

以下は私の機能です(一部のコードは他の投稿からのものです):

__declspec(dllexport) LPXLOPER12  WINAPI GetArr(char* arg1, char* arg2)
{
   vector<double> arr = functionReturnVector;

   XLOPER12 list;
   list.xltype = xltypeMulti | xlbitDLLFree;
   list.val.array.lparray = new XLOPER12[6];
   list.val.array.rows = 6;
   list.val.array.columns = 1;
   for(int i = 0; i < 6; ++i) {
      list.val.array.lparray[i] = arr[i]; // error: IntelliSense: no operator "=" matches these operands
   }
return &list;
}

[2013-02-23] 現在、XLL RETURN ARRAYからコードを読み取り、コードを確認しました。コンパイルはできますが、0 が返されます ...

__declspec(dllexport) LPXLOPER12 WINAPI GetArr(void)
{   
XLOPER xlArray, xlValues[2];

xlValues[0].xltype = xltypeNum;
xlValues[1].xltype = xltypeNum;
xlValues[0].val.num = 11;
xlValues[1].val.num = 17;

xlArray.xltype = xltypeMulti|xlbitDLLFree;
xlArray.val.array.rows = 1;
xlArray.val.array.columns = 2;
xlArray.val.array.lparray = &xlValues;

return &xlArray;
} 
4

2 に答える 2

3

Excel ワークシートで 1X2 配列を印刷できるようになりました。以下は私のコードです。

** Func シグネチャ タイプ U を使用

1.1 行 2 列を選択

2.最初のセルにコマンド =GetArray() を入力します

3.Ctrl + シフト + エンター

 __declspec(dllexport) LPXLOPER12 WINAPI GetArray(void)
{
    static XLOPER12 xlArray;
    XLOPER12 xlValues[2];
    xlValues[0].xltype = xltypeNum;
    xlValues[1].xltype = xltypeNum;
    xlValues[0].val.num = 123;
    xlValues[1].val.num = 456;
    xlArray.xltype = xltypeMulti|xlbitDLLFree;
    xlArray.val.array.rows = 1;
    xlArray.val.array.columns = 2;
    xlArray.val.array.lparray = &xlValues;
    return (LPXLOPER12)&xlArray;
}
于 2013-02-24T12:12:12.867 に答える