Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2013, 02:15   #1
KyTuH
Пользователь
 
Регистрация: 23.05.2012
Сообщений: 19
По умолчанию Проблема с Excel в Delhi.

Доброй ночи)
В моей программе есть 2 формы, 2 StringGrid и 1 файл Excel(fio.xls).
На 1 форме я через StringGrid1 работаю с Excel файлом(Считываю и перезаписываю данные).
На 2 форме я через StringGrid2 я редактирую свой файл fio.xls.
Проблема в том, что когда я на 2 форме пытаюсь из StringGrid2 переписать данные в файл fio.xls, выходит диалоговое окно, что файл открыт только для чтения, хотя в коде файл был открыт для чтения\записи. Под любым другим именем он сохраняет(создает новый по аналогии старого).
При переходе с одной формы на другую предусмотрел закрытие файла fio.xls, и при открытии 2 формы программа вновь открывает этот файл.
Не могу понять в чем дело. Прилагаю скрины от программы, ну и конечно код.
Код:
unit Unit1;

var
  Form1: TForm1;
  Ap : Variant;

procedure TForm1.FormCreate(Sender: TObject);
begin
Ap := CreateOleObject('Excel.Application');
Ap.Workbooks.Open('c:\excel\fio.xls');
end;


procedure TForm1.N6Click(Sender: TObject);
begin
Ap.ActiveWorkbook.Close;
Ap.Workbooks.Open('c:\excel\Дежурство.xls');
Ap.ActiveWorkbook.Close;
ap.Quit;
Form1.Visible:=false;
Form2.show;
end;
И еще

Код:
unit Unit2;
var
  Form2: TForm2;
  Ap : Variant;

procedure TForm2.FormCreate(Sender: TObject);
begin
 AP := CreateOleObject('Excel.Application');
Ap.Workbooks.Open('c:\excel\fio.xls');
end;


procedure TForm2.Button1Click(Sender: TObject); //Кнопка "Сохранить"
begin
for i:=2 to 9 do
begin
Ap.Cells[i, 1]:=sg1.Cells[0, i-1];
end;
Ap.Quit;
end;
В коде написал только самое нужное.И кстати, если при переходе на Form2 закрывать Form1(form1.close), то Form2 не открывается. Помогло скрытие Form1(form1.Visible:=false). Хотя может в этом и проблема. Помогите найти проблему))
Изображения
Тип файла: jpg 1.jpg (77.1 Кб, 104 просмотров)
Тип файла: jpg 2.jpg (38.1 Кб, 104 просмотров)
Тип файла: jpg 3.jpg (37.6 Кб, 105 просмотров)
Тип файла: jpg 4.jpg (43.4 Кб, 113 просмотров)
Тип файла: jpg 5.jpg (40.1 Кб, 106 просмотров)
KyTuH вне форума Ответить с цитированием
Старый 30.05.2013, 09:26   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Нажмите Ctrl-Alt-Del И проверьте, есть ли среди процессов EXCEL.exe. Если есть - значит у Вас этот файл где-то в коде открыт, но без visible. Потому болтается в памяти процесс, блокирует файл и не дает его открыть при записи
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.05.2013, 11:31   #3
KyTuH
Пользователь
 
Регистрация: 23.05.2012
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Нажмите Ctrl-Alt-Del И проверьте, есть ли среди процессов EXCEL.exe. Если есть - значит у Вас этот файл где-то в коде открыт, но без visible. Потому болтается в памяти процесс, блокирует файл и не дает его открыть при записи
Смотреть наличие этого процесса, когда нахожусь на 2 форме?? Если да, то в процессе висит один процесс EXCEL.EXE. Хотя я в коде прописывал закрытие fio.xls.
Хотя ведь при открытии 2 формы, у меня и должен висеть процесс EXCEL.EXE, так как в TForm2.FormCreate я вновь открываю файл fio.xls.

Последний раз редактировалось KyTuH; 30.05.2013 в 11:34.
KyTuH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delhi) события Ti_pain) Помощь студентам 4 28.11.2009 23:20
MDB в DELHI cowboy БД в Delphi 6 16.06.2009 17:06
DELHI. Таймер ... Осипович Помощь студентам 3 12.06.2009 18:46
Задача на Delhi 7. Allah2009 Помощь студентам 1 01.05.2009 17:02