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

Вниз

Открыт ли файл 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.017 c
2-1281710294
Дмитрий Стариков
2010-08-13 18:38
2010.11.07
подскажите что не так?????


6-1228811420
Добежал
2008-12-09 11:30
2010.11.07
Ошибка в TIdHTTPServer


15-1280332456
Baks
2010-07-28 19:54
2010.11.07
Как правильно разбить строку?


2-1281883089
DROWSY
2010-08-15 18:38
2010.11.07
Сортировка по псевдониму.


15-1280348982
Юрий
2010-07-29 00:29
2010.11.07
С днем рождения ! 29 июля 2010 четверг





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский