Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Снова Про Excel   Найти похожие ветки 

 
Klerk   (2004-06-22 16:24) [0]

Вот получил список открытых имён файлов Excel:
ExcelApplication1.Connect;
try
if  ExcelApplication1.Workbooks.Count=0 then
begin
Combobox1.items.add("Нет открытых.");
end
else
   for I := 1 to ExcelApplication1.Workbooks.Count do
  begin
    W := ExcelApplication1.Workbooks[I];
    S:=w.name;
    Combobox1.Items.Add(S);
  end;
finally
  ExcelApplication1.Disconnect;

Получил список:
1.xls
2.xls
...
А теперь хочу выбрать один из combobox"a и распечатать часть ячеек из первого листа. (все эти файлы находятся в одной директории - путь известен). Они уже все открыты - мне просто надо распечатать тот, который я выбрал.
Как мне подключиться к определённому файлу?


 
AlexG ©   (2004-06-22 16:28) [1]

Попробуй его открыть ( Open() ). Либо также как ты получил его имя.


 
Klerk   (2004-06-22 16:42) [2]

ExcelApplication1.Workbooks.Open(ExcelPathSaves+"\"+combobox1.text);
Как правильно? Пишет что мало параметров.
Блин, справки на компе нет - такая Delphi.


 
AlexG ©   (2004-06-22 16:52) [3]

Так... Значит ты используешь типы, а не variant. Тогда вставляй слово EmptyParam пока ему не понравится...


 
Klerk   (2004-06-22 17:00) [4]

Шести хватит?
Не соглашается:(


 
Klerk   (2004-06-22 17:06) [5]

А может, если они все открыты можно просто сделать один из них активным?
ExcelApplication1.ActiveWorkbook.Name(ExcelPathSaves+"\"+combobox1.text);
Но если писать так, то выдает:[Error] Printing.pas(79): Missing operator or semicolon


 
AlexG ©   (2004-06-22 17:24) [6]

А почему не попробовать работать так: ExcelApplication1.Workbooks[I] ?
А там и Sheet, и Range...


 
Klerk   (2004-06-23 14:05) [7]

А так будет корректно/правильно?

var
ExcelSheet : Variant;
...
ExcelApplication1.connect;//Подключаюсь к Excel
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(ExcelPathSaves+"\"+combobox1.text, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0));// подключаюсь к нужному мне файлу
ExcelSheet:=ExcelApplication1.sheets["Лист2"]; //Переключаюсь на лист 2
ExcelSheet.activate;

Так правильно?


 
AlexG ©   (2004-06-23 14:16) [8]

Оно работает - значит правильно. Главное, чтобы тебе удобно было потом редактировать свой код. Если не работает, то НЕ правильно. Логично?


 
Klerk   (2004-06-23 14:24) [9]

Имелась ввиду корректность кода.
Но вот в чём незадача. Это приводит к переоткрытию файла.
А мне нужно подключиться к одному из уже открытых файлов.
Как это правильно реализовать.


 
AlexG ©   (2004-06-23 14:41) [10]

Ты изначально открываешь файл, или он открывается пользователем отдельно от программы?


 
Klerk   (2004-06-23 14:46) [11]

Он может быть уже открыт (до запуска программы), а может открываться из самой программы.
Но из программы я использую ShellExecute.
При активации формы происходит заполнение combobox"a именами отрытых файлов Excel. При отрытии файла из пограммы - очищение и повторное заполнение combobox"a.


 
YurikGL ©   (2004-06-23 15:12) [12]


> А теперь хочу выбрать один из combobox"a и распечатать часть
> ячеек из первого листа. (все эти файлы находятся в одной
> директории - путь известен). Они уже все открыты - мне просто
> надо распечатать тот, который я выбрал.
> Как мне подключиться к определённому файлу?

Тебе для этого нужно выбрать ту область, которую нужно напечатать, потом отправить ее на печать.


 
YurikGL ©   (2004-06-23 15:12) [13]


> Klerk   (23.06.04 14:05) [7]

ИМХО не корректно.


 
evvcom ©   (2004-06-23 15:22) [14]


> Блин, справки на компе нет - такая Delphi.

Здесь справка по VB для Excel нужна, а не Дельфовая.

Из справки по MVB:

This example activates the workbook Book1.xls.
Workbooks("BOOK1").Activate
This example opens the workbook Large.xls.
Workbooks.Open filename:="LARGE.XLS"

Если не хочешь перечислять все параметры по порядку, используя EmptyParam, можно передавать парметры по имени. В Delphi синтаксис такой:
ActiveSheet := Sheets.Add(After := Sheets.Item[Sheets.Count]);

Скопировал у себя из проекта без каких либо изменений, но суть видна.


 
Klerk   (2004-06-23 15:32) [15]

YurikGL ©   (23.06.04 15:12) [12]
С областью печати понятно - уже сделал, печатает.
НО, мне нужно не переоткрывать файл - тогда сообщение, что такой файл уже открыт. А именно использовать один из УЖЕ открытых файлов для печати.
Я определил их имена (моё первое сообщение).
Загрузил их в Comobox.
1.xls
2.xls
...
Теперь мне надо выбрать один из них (из Combobox"a) и использовать. (Файлы уже открыты).
Код из пункта 7 приводит к переоткрытию файла, чего мне не нужно. Как это правильнее реализовать.

+Как выглядит корректный код?


 
YurikGL ©   (2004-06-23 15:41) [16]

vr:OleVariant;
begin
ExcelApplication1.Connect;
vr:="имя файла.xls";
ExcelApplication1.Windows.Item[vr].Activate;
ExcelApplication1.Disconnect;


 
Klerk   (2004-06-23 15:45) [17]

Спасибо


 
evvcom ©   (2004-06-23 15:46) [18]


> НО, мне нужно не переоткрывать файл - тогда сообщение, что
> такой файл уже открыт. А именно использовать один из УЖЕ
> открытых файлов для печати.

Блин, поражаюсь умением игнорировать посты, в которых уже дан ответ на вопрос. Ключевую команду повторил YurikGL ©   (23.06.04 15:41) [16] Activate!


 
YurikGL ©   (2004-06-23 16:19) [19]


> evvcom ©   (23.06.04 15:46) [18]

Я еще скажу, что этот код я в VB получил с помощью макроса, а потом чуть-чуть доделал.


 
evvcom ©   (2004-06-23 16:35) [20]

Правильно. А я скопировал 4 строчки справки и 1 строчку из своего старого проекта. В принципе этого было достаточно, чтобы понять вопрошающему, что делать дальше. Единственной проблемой могло лишь быть непонимание английского языка.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.036 c
1-1088202560
AndrewVolkov
2004-06-26 02:29
2004.07.11
ListView изменение ширины столбца?


4-1085738519
alexdosh
2004-05-28 14:01
2004.07.11
как определить куда проинсталлирована программа(любая)?


3-1087307503
denis24
2004-06-15 17:51
2004.07.11
Внешнее обьединение с несколькими таблицами


14-1087893395
Alex*
2004-06-22 12:36
2004.07.11
Можно ли отследить блуждание по Интернету с удаленного компьютера


1-1087979722
Aldor
2004-06-23 12:35
2004.07.11
103, 105 I/O error





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский