|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Не работает подсчет количества книг Excel
Здравствуйте.
Бьюсь второй день. Задача простая. Записать данные в открытую книгу Excel. Если книга не открыта - открыть ее. Не могу правильно осуществить запись в открытую книгу. Дельфи ее не видит. Код:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,OleServer, Excel2000, ExcelXP,ComObj; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Edit1: TEdit; Memo1: TMemo; Button2: TButton; ListBox1: TListBox; ExcelApplication1: TExcelApplication; Button3: TButton; procedure Button3Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } countString: Integer; public { Public declarations } end; function WorkBookIndex(WorkBookName: Ansistring): integer; var Form1: TForm1; Buf, Buf2 : PByteArray; Bufnew, Bufnew2 : PByteArray; bpos : Integer; bsize :Integer; F, F2 : File; E:variant; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); var a_,i,n,k,cnt:integer; WBk : OleVariant; book: array of String; ffname: String; begin k:=0; ffname:='E:\2018\Работа_тест.xlsx'; try E:=GetActiveOleObject('Excel.Application'); n:= E.Workbooks.Count;// Вот здесь считает n=0, независимо от количества открытых книг SetLength(book,n+1); if VarIsEmpty(E)=false then begin k:=WorkBookIndex(ffname); if k<>0 then begin E.WorkBooks[k].Activate; end; //if k end;//if VarIsEmpty(E)=false except E := CreateOleObject('Excel.Application'); WBk := E.WorkBooks.Open(ffname); end; E.Visible := True; end; Проблема со строчкой n:= E.Workbooks.Count; Подскажите,пожалуйста, как исправить. |