Я пытаюсь установить столбец Excel на ширину автофитов с помощью Com Automation. Я получаю нарушение доступа при вызове. Я знаю, что диапазон, который указывает на столбец, в порядке, потому что я могу использовать его для изменения цвета, например. < /P>
Это мой код < /p>
DISPID dispid1;
dispid1 = GetDispID(pWorksheet, L"Columns");
VARIANT arg;
arg.vt = VT_I4;
arg.intVal = col;
DISPPARAMS dp = {
&arg, NULL, 1, 0
};
VariantInit(&vResult);
hr = pWorksheet->Invoke(dispid1, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_PROPERTYGET, &dp, &vResult, NULL, NULL);
if (FAILED(hr)) {
ShowMessage("fail");
return;
}
pRange = vResult.pdispVal;
if (!pRange) {
return;
}
DISPID dispid2;
OLECHAR* szAutoFit = L"AutoFit";
hr = pRange->GetIDsOfNames(IID_NULL, &szAutoFit, 1, LOCALE_USER_DEFAULT, &dispid2);
if (FAILED(hr)) {
ShowMessage("fail");
return;
}
// the below call displays an access violation
hr = pRange->Invoke(dispid2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, NULL, NULL,
NULL, NULL);
if (FAILED(hr)) {
ShowMessage("fail");
return;
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... tion-fails