Форум: "Начинающим";
Текущий архив: 2010.11.07;
Скачать: [xml.tar.bz2];
ВнизОткрыт ли файл Excel Найти похожие ветки
← →
Irisss (2010-08-11 09:23) [0]Здравствуйте,
Не могу найти нужного свойства. Требуется узнать открыт ли файл с указанным именем XlsFileName, и если открыт то активировать эту книгу WorkbookExcelApp := 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.003 c