17.04.2012, 17:01 | #1 |
Участник
|
Как перейти на другой лист Excel
Всем доброго времени суток. Если не затруднит помогите советом. У меня слудующая ситуация - есть документ эксель, я туда заношу некоторые данные, сначала на первый лист, а потом мне нужно перейти на другой лист. Как это сделать?
xlApp = new COM('Excel.Application'); //xlApp.Visible(true); wbks = xlApp.Workbooks(); // comWorkBooks = m_comApplication.workBooks(); varTemlateName = new COMVariant(COMVariantInOut::IN, COMVariantType::VT_BSTR); varTemlateName.bStr(template); wbk = wbks.Add(varTemlateName); wkss = wbk.Worksheets(); wks = wkss.Item(1); rng = wks.Range('A1'); ...... cell = rng.Offset(11, 42); cell.Value2(bag); Если я напишу wks = wkss.Item(3); rng = wks.Range('A1'); то что мне надо выводится на третий лист но AX выдает ошибку "Метод "Select" в COM-объекте класса "Range" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Метод Select из класса Range завершен неверно. " как быть? |
|
17.04.2012, 17:09 | #2 |
Moderator
|
A где у вас Select в коде? Дело в том, что через Value (Value2) менять данные на третьем листе можно, находясь на любом другом. При этом ничего не надо селектировать.
Если же всё-таки надо что-то выбрать на другом листе при помощи Select, то тогда этому листу предварительно надо сделать Activate ( т.е wks.Activate() ) |
|
|
За это сообщение автора поблагодарили: sashanka (1). |
17.04.2012, 18:35 | #3 |
Участник
|
Вы имеете ввиду select по xls. К сожалению не проекта перед глазами, но насколько я помню у меня нет select-а по xls. Как мне обратиться к ячейкам на третьем листе ?
Последний раз редактировалось smailik; 17.04.2012 в 18:40. |
|
18.04.2012, 10:13 | #4 |
Moderator
|
Я не имею в виду "SELECT по xls" в смысле SQL (для этого у вас в представленных фрагментах кода не видно следов присутствия ADO и сохраненного файла Excel).
Я ориентируюсь на сообщение про "метод Select объекта Range". Оно означает, что где-то в коде встречается оператор типа rng.Select() или cell.Select(), вызванный для неактивного в данный момент рабочего листа. Посмотрите мой код вот здесь: Как отследить все факты создания таблиц при постинге? , метод sendRecordsetToExcel. Там предусмотрен вывод на несколько листов. И увидите там wks.Activate(). Вот и вам так же надо сделать. Если Activate не поможет, то тогда покажите весь свой код, можно будет поточнее диагноз поставить. |
|
18.04.2012, 15:59 | #5 |
Участник
|
спасибо за ответы, победил я это изменением метода обращения к excel. Переписал все для ComExcelDocument_RU.
|
|