Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.04.2018, 15:40
Ryumka Ryumka вне форума
Прохожий
 
Регистрация: 27.04.2018
Сообщения: 1
Версия Delphi: Delphi 2005
Репутация: 10
По умолчанию Не работает подсчет количества книг 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; Подскажите,пожалуйста, как исправить.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:50.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter