Как добавить новый лист в Excel

Проверяю, запущено или нет приложение EXCEL. Если нет, то пишу так: MSExcel := CreateOleObject(“Excel.Application”); Если запущено, то необходимо добавить лист.Макрос выглядит так: Sheets.Add Все, что пробовалось мною, при запуске вылетело с ошибкой. А как нужно написать в программе? Как обратиться к переменной MSEXCEL типа Variant?

Что типа этого. Проверять и не думал. Если сразу заработает, то это случайно. var MSEXCEL, WB, WS : Variant; begin MSEXCEL := CreateOleObject(“Excel.Application”); WB := MSEXCEL.Workbooks.Add; WS := WB.Worksheets[1]; end;

>3JIA9I CyKA © (30.09.02 12:32) var MSEXCEL, WB, WS : Variant; begin > MSEXCEL := CreateOleObject(“Excel.Application«); Так я пишу, если EXCEL не запущен. Но мне не нужен еще один EXCEL. Вопрос в том, как не создавая CreateOleObject, выполнить MSEXCEL.Workbooks.Add; а то программа при выполнении выдает на этой строке ошибку.

Нечто наподобие с Word-ом: var MsWord: Variant; … try // Если Word уже запущен MsWord := GetActiveOleObject("Word.Application"); // Взять ссылку на запущенный OLE объект except try // Word не запущен, запустить MsWord := CreateOleObject("Word.Application"); // Создать ссылку на зарегистрированный OLE объект MsWord.Visible := True; except ShowMessage("Не могу запустить Microsoft Word"); Exit; end; end; end;

>Prooksius © (30.09.02 16:04) Спасибо за GetActiveOleObject. Мне, наверное, нужен номер книги и номер листа (i,j), чтобы добавить в книгу с номером i новый лист, который будет иметь номер j. (Для новой книги i=1, j=1). MSExcel.Workbooks[i].Sheets.Add; MSExcel.Workbooks[i].WorkSheets[j].Select; Как найти i,j? Или это вообще все делается по-другому?

Найди все. Выбери по названию. Ку?

А поподробнее можно? Пожалуйста.

У коллекций Workbooks и Worksheets есть Count. У Workbook и Worksheet есть Name. Этого мало?

>3JIA9I CyKA © (01.10.02 12:43) Спасибо. Но чего-то я не догоняю. Пишу так: MsExcel := GetActiveOleObject("Excel.Application"); count_books:=MSExcel.Workbooks.Count; MSExcel.Workbooks[count_books].Sheets.Add; count_sheets:=MSExcel.WorkSheets.Count; MSExcel.Workbooks[count_books].WorkSheets[count_sheets].Select; И далее заполняю ячейки. Новый лист в книгу добавляется, но почему-то всегда заполняются ячейки 3-го листа, хотя последний добавленный лист в книге называется «лист6». В чем мои ошибки?

function PrepareExcel(ListName :string): boolean; begin result := true ; try try Excel:= GetActiveOleObject(“Excel.Application”); except try Excel := CreateOleObject(“Excel.Application”); except ShowMessage(“

2Fishka Называться он может хоть «ЖоПа».

>3JIA9I CyKA © (01.10.02 16:34) Я вообще-то не про название говорю, а о том, почему всегда заполняются ячейки одного и того же листа, а не последнего добавленного.

Ку var ws : variant; … ws := MSExcel.Workbooks[count_books].Sheets.Add; ws.Cells[1,1].Value := «жОпА»;

Наверх

Оцените статью
Как в офисе.ru
Добавить комментарий