DAX 2009 и Excel 2007.
При вызове метода insertRows класса ComExcelDocument_RU, по непонятным мне причинам, на одних и тех же данных время от времени вываливается ошибка времени выполнения "неправильные типы аргументов в операции присвоения значения переменной" на 18 строке метода findRange
X++:
comApplication = m_comDocument.application();
. Если пошагово под отладчиком пройти данные методы, то ошибки не возникает, но стоит запустить на выполнение в нормальном режиме - может возникнуть ошибка.
метод insertRows
X++:
void insertRows(int _fromRow,
int _toRow,
int _fromWorkSheet = 1,
int _offset = 1,
int _numOfCopies = 1,
// CIT_MSOfficeReport, kirp -->
/*
int _toWorkSheet = 1)
*/
int _toWorkSheet = 1,
MSOfficeBookMark_RU _copyFromBookmark = "")
// CIT_MSOfficeReport, kirp <--
{
COM comRows,
comWorkSheet,
comRow, comRowTarget, selection;
COMVariant comRowVariant, selVariant;
;
if (_numOfCopies <= 0)
return;
if (! m_comDocument)
throw error(strfmt("@GEE6401", this.getApplicationName()));
// CIT_MSOfficeReport, kirp -->
if (_copyFromBookmark)
{
comRow = this.findRange(_copyFromBookmark, _fromWorkSheet);
comRow.copy();
}
else
{
// CIT_MSOfficeReport, kirp <--
comRow = this.findRange(strFmt("%1:%2", _fromRow, _toRow), _fromWorkSheet);
comRow.copy();
// CIT_MSOfficeReport, kirp -->
}
// CIT_MSOfficeReport, kirp <--
comRowTarget = this.findRange(strFmt("%1:%2", _fromRow + _offset, _fromRow + _offset + (_toRow - _fromRow + 1) * _numOfCopies - 1), _toWorkSheet);
comRowTarget.select();
comRowTarget.insert();
comWorkSheet = this.getWorkSheet(_toWorkSheet);
comRows = comWorkSheet.cells();
comRows = COM::createFromVariant(comRows.item(1));
comRows.select();
m_comApplication.cutCopyMode(false);
}
метод findRange
X++:
// Creates object range type named the same way as Excel bookmark
// bookMark -> Excel bookmark name
// CIT_MSOfficeReport, ilso -->
/*
protected COM findRange(MSOfficeBookMark_RU bookMark, int _workSheet = 1)
*/
public COM findRange(MSOfficeBookMark_RU bookMark, int _workSheet = 1)
// CIT_MSOfficeReport, ilso <--
{
COM comRange,
comWorkSheet;
COM comApplication;
;
if (m_comDocument)
{
comWorkSheet = this.getWorkSheet(_workSheet);
comApplication = m_comDocument.application();
comWorkSheet.activate();
if (comWorkSheet && comApplication)
{
comRange = comApplication.range(bookMark);
}
}
return comRange;
}
insertRows вызывается с первыми 5 параметрами.
Подскажите, пожалуйста, в чем может быть дело.
PS. В поиске ничего не нашел.