Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.24;
Скачать: CL | DM;

Вниз

Добавить новый лист в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
4-78737
Eugene
2002-09-12 23:29
2002.10.24
QueryServiceConfig - как правыильно её использовать ?


14-78652
Николай Быков
2002-10-04 16:48
2002.10.24
I hate the third companies components


4-78723
GarryFV
2002-09-11 13:39
2002.10.24
Окна , процесссы, потоки...


3-78254
Gaber
2002-10-02 10:04
2002.10.24
Как лучше строить БД


1-78380
andrey_pst
2002-10-15 08:05
2002.10.24
Выбор каталога и сетевое окружение