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

Вниз

Открыт ли файл Excel   Найти похожие ветки 

 
Irisss   (2010-08-11 09:23) [0]

Здравствуйте,

Не могу найти нужного свойства. Требуется узнать открыт ли файл с указанным именем XlsFileName, и если открыт то активировать эту книгу Workbook

   ExcelApp := CreateOleObject("Excel.Application");
   ExcelApp.Visible := false;

   ExcelApp.Application.EnableEvents := false;

   if Self.SaveDialog.Execute(Self.ParentWindow)
   then begin
       XlsFileName := ChangeFileExt(Self.SaveDialog.Files[0], ".xls");

       if FileExists( XlsFileName )
       then Workbook := ExcelApp.WorkBooks.Open( XlsFileName )
       else begin
           Workbook := ExcelApp.WorkBooks.Add;
           Workbook.SaveAs(XlsFileName);
       end;

       FindSheet := False;
       SheetName := TDataFormat.getOnlyFileName(Self.FCaption);

       for I := 1 to Workbook.WorkSheets.Count
       do begin
           if ( Workbook.WorkSheets[ I ].Name = SheetName )
           then begin
               Sheet       := Workbook.WorkSheets[ I ];
               FindSheet   := True;
           end
           else Sheet      := Workbook.ActiveSheet;
       end;
end;


как можно пройти по открытым книгам или как-то еще решить эту задачку?


 
Irisss   (2010-08-11 12:07) [1]

       Workbook := -1;
       for iWorkBook := 1 to ExcelApp.WorkBooks.Count
       do begin
           if ( ExcelApp.WorkBooks.Item[iWorkBook].FullName = XlsFileName )
           then begin
               Workbook := ExcelApp.WorkBooks.Item[iWorkBook];
               Break;
           end;
       end;


Такой вариант почему-то не работает, даже не заходит в цикл


 
12 ©   (2010-08-11 13:30) [2]

предположить, что он открыт и ловить исключение?


 
Irisss   (2010-08-11 14:25) [3]

Опишу задачу:
Есть данные, которые нужно добавлять в xls-файл, если он существует, если нет - то при этом еще и создавать файл.
Все хорошо, но оказалась такая ситуация, когда нужно дописать в существующий файл, который уже открыт.
Показанный выше код открывает еще раз этот файл, а потом спрашивает, как сохранять. Кроме того, еще на панели висит куча одинаковых файлов, которые как минимум раздражают.
Помогите советом.

Спасибо


 
KilkennyCat ©   (2010-08-11 14:34) [4]

непомню, есть ли признаки открытого файла в системе, вроде бы, если и есть, то не у fat32 и ниже... поэтому, если не думать о чем-то на таком уровне, то варианты такие:
поиск открытых окон екселя и чтение их заголовков - там вроде есть имя файла
добавление макроса, который при открытии пишет че-нить в куда-нить.


 
Andy BitOff ©   (2010-08-11 14:38) [5]

Если мне не изменяет память, то как-то уже обсуждали, поищи на delphimaster.net
Вроде там пришли к мнению, что надо попробовать переименовать и если ошибка, то открыт.


 
Anatoly Podgoretsky ©   (2010-08-11 21:33) [6]

> Irisss  (11.08.2010 14:25:03)  [3]

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


 
ixen   (2010-08-12 13:49) [7]

можно использовать хитрый способ... файл который нужно обновлять сохраняй в формате шаблона *.dot ... юзер будет открывть файл но сам шаблон останется не заблокированным и его можно будет спокойно обновлять.. только юзеру придется его переодически переоткрывать чтобы видеть все изменения...


 
Dennis I. Komarov ©   (2010-08-12 17:43) [8]


> сохраняй в формате шаблона *.dot

xlt


 
12 ©   (2010-08-12 17:49) [9]


> можно использовать хитрый способ... файл который нужно обновлять
> сохраняй в формате шаблона *.dot ... юзер будет открывть
> файл но сам шаблон останется не заблокированным и его можно
> будет спокойно обновлять.. только юзеру придется его переодически
> переоткрывать чтобы видеть все изменения...

интересно..мне тоже надо,
надо попробовать будет так


 
ixen   (2010-08-13 06:34) [10]

> [8] Dennis I. Komarov

да xlt... ошибся



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

Текущий архив: 2010.11.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
4-1240991885
Zalum
2009-04-29 11:58
2010.11.07
Передать работающему приложению параметры


2-1281722016
Дмитрий Стариков
2010-08-13 21:53
2010.11.07
Снова за помощью


15-1280385192
Demo
2010-07-29 10:33
2010.11.07
Oracle и Импорт дамп файла


15-1280407604
__REA
2010-07-29 16:46
2010.11.07
NMEA


2-1281959405
Slay64
2010-08-16 15:50
2010.11.07
Этикеточный принтер