Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизДобавить новый лист в EXCEL Найти похожие ветки
← →
Fishka (2002-09-30 12:06) [0]Проверяю, запущено или нет приложение EXCEL. Если нет, то пишу так:
MSExcel := CreateOleObject("Excel.Application");
Если запущено, то необходимо добавить лист.Макрос выглядит так:
Sheets.Add
Все, что пробовалось мною, при запуске вылетело с ошибкой.
А как нужно написать в программе? Как обратиться к переменной MSEXCEL типа Variant?
← →
3JIA9I CyKA (2002-09-30 12:32) [1]Что типа этого. Проверять и не думал. Если сразу заработает, то это случайно.
var
MSEXCEL, WB, WS : Variant;
begin
MSEXCEL := CreateOleObject("Excel.Application");
WB := MSEXCEL.Workbooks.Add;
WS := WB.Worksheets[1];
end;
← →
Fishka (2002-09-30 15:54) [2]>3JIA9I CyKA © (30.09.02 12:32)
var MSEXCEL, WB, WS : Variant;
begin
> MSEXCEL := CreateOleObject("Excel.Application");
Так я пишу, если EXCEL не запущен.
Но мне не нужен еще один EXCEL. Вопрос в том, как не создавая CreateOleObject, выполнить
MSEXCEL.Workbooks.Add;
а то программа при выполнении выдает на этой строке ошибку.
← →
Prooksius (2002-09-30 16:04) [3]Нечто наподобие с 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;
← →
Fishka (2002-10-01 09:46) [4]>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? Или это вообще все делается по-другому?
← →
3JIA9I CyKA (2002-10-01 11:30) [5]Найди все. Выбери по названию.
Ку?
← →
Fishka (2002-10-01 12:20) [6]А поподробнее можно? Пожалуйста.
← →
3JIA9I CyKA (2002-10-01 12:43) [7]У коллекций Workbooks и Worksheets есть Count.
У Workbook и Worksheet есть Name.
Этого мало?
← →
Fishka (2002-10-01 16:20) [8]>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".
В чем мои ошибки?
← →
max2057 (2002-10-01 16:28) [9]function PrepareExcel(ListName :string): boolean;
begin
result := true ;
try
try
Excel:= GetActiveOleObject("Excel.Application");
except
try
Excel := CreateOleObject("Excel.Application");
except
ShowMessage("
← →
3JIA9I CyKA (2002-10-01 16:34) [10]2Fishka
Называться он может хоть "ЖоПа".
← →
Fishka (2002-10-01 16:40) [11]>3JIA9I CyKA © (01.10.02 16:34)
Я вообще-то не про название говорю, а о том, почему всегда заполняются ячейки одного и того же листа, а не последнего добавленного.
← →
3JIA9I CyKA (2002-10-01 16:51) [12]Ку
var ws : variant;
...
ws := MSExcel.Workbooks[count_books].Sheets.Add;
ws.Cells[1,1].Value := "жОпА";
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c