Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Количество листов в документе Excel


Автор: ksili 25.4.2006, 10:20
Мне нужно программно добавить в документе Excel четыре новых листа. В справке по Visual Basic нашёл соответствующее свойство Sheets.Count. Однако когда пишу так:
Код

 int p;
 Variant vExcel,vBook,vSheet;

.......

         vBook = vExcel.OlePropertyGet("WorkBooks");
         vBook.OleProcedure("Open",path.c_str());
         p = vBook.OlePropertyGet("Sheets").OlePropertyGet("Count");
         vBook.OlePropertyGet("WorkSheets").OlePropertySet("Count",p+4);

на строке p = ..... возникает ошибка 
EOleSysError with message "Неизвестное имя"

Так как же их добавить? 

Автор: _hunter 25.4.2006, 10:47
ты, для начала, определи что именно "неизветсно" -- "Sheets" или "Count" (особенно учитывая следующую строку) 

Автор: sexton 25.4.2006, 11:01
Утебя не определена переменная для конкретной книги.
То есть надо дописать что-то типа:
Код

vVarBooks=vVarApp.OlePropertyGet("Workbooks");
vVarBook=vVarBooks.OlePropertyGet("Item",1);
 

Автор: ksili 26.4.2006, 08:05
Да-а, что-то я накосячил.
Правильно так:
Код

 Variant vExcel,vBook,vBooks,vSheet;

         vBooks = vExcel.OlePropertyGet("WorkBooks");
         vBooks.OleProcedure("Open",path.c_str());
         vBook = vBooks.OlePropertyGet("Item",1);

         //выбираем 1-й лист
         vSheet=vBook.OlePropertyGet("Sheets").OlePropertyGet("Item",1).OlePropertyGet("Select");

         //добавляем 4 листа
         vBook.OlePropertyGet("Sheets").OlePropertyGet("Add");
         vSheet = vBook.OlePropertyGet("Sheets").OlePropertyGet("Item",1);
         vSheet.OlePropertySet("Name","Лист 1");

         vBook.OlePropertyGet("Sheets").OlePropertyGet("Add");
         vSheet = vBook.OlePropertyGet("Sheets").OlePropertyGet("Item",1);
         vSheet.OlePropertySet("Name","Лист 2");

         vBook.OlePropertyGet("Sheets").OlePropertyGet("Add");
         vSheet = vBook.OlePropertyGet("Sheets").OlePropertyGet("Item",1);
         vSheet.OlePropertySet("Name","Лист 3");

         vBook.OlePropertyGet("Sheets").OlePropertyGet("Add");
         vSheet = vBook.OlePropertyGet("Sheets").OlePropertyGet("Item",1);
         vSheet.OlePropertySet("Name","Лист 4");

// дальше переставляем каждый лист на нужное место
  

Автор: Deft 8.5.2009, 07:24
думаю логично будет спросить в этой теме:
1)как узнать число листов в книге? думаю что как-то через OLEPropertyGet но вот как...
2)как узнать имя активного листа? ну или имя по номеру...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)