現在、Excel SDK 2010 を使用して Excel 2010 アドイン (.xll) を開発しています。残念ながら、Microsoft からのドキュメントはほとんどありません (または、まだ見つけていないだけかもしれません)。アドインが Excel 内に読み込まれ、そのメニューが表示され、メニューから関数を呼び出すことができるようになりました。これは実行されます。その中で、すべてのシート名を収集しようとしましたが、関数を呼び出すたびに結果が異なります。正しいシート名が返されますXLOPER
が、「奇妙な」文字の変化に囲まれています。
問題のコード:
LPXLOPER12 GetWorkbook(void){
LPXLOPER12 workbooksheets=new XLOPER12,xworkbookname = new XLOPER12;
memset(xworkbookname,0,sizeof(XLOPER12));
memset(workbooksheets,0,sizeof(XLOPER12));
Excel12f(xlfGetDocument,xworkbookname,1,TempInt12(88));
Excel12f(xlfGetWorkbook,workbooksheets,2,TempInt12(1),xworkbookname);
// at this point I expect xworkbookname->val.str to contain the workbook name
// but instead it has garbage before and after
return 0;
}