- Сообщений: 1054
- Репутация: 1
- Спасибо получено: 2
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
// Глобальные переменные                                                  
var
// Имя файла отчета                                           
 fFN : string = 'Не задан';
// Номер строки в отчете                                                                                   
 fLN : integer;                            
    
  
// Ручное построение отчета                                                         
procedure Page1OnManualBuild(Sender: TfrxComponent);
var
// Объект диалога выбора файла                                                                  
 fOD : TOpenDialog;
// Объект приложения MS Excel                                                                                                        
 fExelApp : Variant;                                                      
// Объекты элементов приложения MS Excel: книга и лист                                                                                                                                                                         
 fVB, fVS :Variant;
begin
  
//  Создаем диалог для запроса имени файла MS Excel                                                                                                                
  fOD := TOpenDialog.Create(nil);
  try
    // Задем фильтр для выбора файлов                                                                                                                          
    fOD.Filter := 'Файлы MS Excel(*.xls)|*.xls|Все файлы(*.*)|*.*';
    if not fOD.Execute then begin
       ShowMessage('Файл не выбран');                                                                      
       Engine.StopReport;                             
    end;
    // Имя файла получено                                                     
    fFN := fOD.FileName;
  finally
    fOD.Free();                  
  end;
 // Показываем заголовок отчета                                                                         
  ReportTitle1.Visible := True;
  Engine.ShowBand(ReportTitle1);
 // Показываем шапку данных                                                                                                
  Engine.ShowBand(Header1);
    
// Получаем доступ к MS Excel                                                                                    
  fExelApp := '';
  fExelApp := CreateOleObject('Excel.Application');
  if VarToStr(fExelApp) = '' then begin
  // Подключиться к MS Excel не получилось                                                                                                           
    ShowMessage('Ошибка при подключении к MS Excel.');                                                                      
    Engine.StopReport;                             
  end else begin                                  
    // Открываем выбранный файл в MS Excel                                                                                             
    fVB := fExelApp.WorkBooks.Open(fFN);
    // Выбираем активный лист                                                                                                          
    fVS := fVB.ActiveSheet;
    // В цикле считываем три строки                                                                                                                                                                    
    for fLN := 1 to 3 do begin
      // Первая ячейка                                      
      memA.Text := fVS.Cells.Item[1, fLN].Text;
      // Вторая ячейка                                      
      memB.Text := fVS.Cells.Item[2, fLN].Text;
      // Третья                                                
      memC.Text := fVS.Cells.Item[3, fLN].Text;
      // Отображение очередной строки в отчете                                                                                                                               
      Engine.ShowBand(MasterData1);
    end;                                  
    // Завершение работы с MS Excel                                                                              
    fExelApp.Quit;
  end;            
    
  fExelApp := '';
end;
begin
end.Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
 
					 
	А можно пример скрипта, в котором в цикле выполняется не СЧИТЫВАНИЕ определенных ячеек Excel а ВНЕДРЕНИЕ в определенные ячейки?2. При выполнении скрипта, у пользователя запрашивается имя файла MS Excel. Затем выполняется подключение к MS Excel, передача последнему имени файла и в цикле считывание первых трех строк с листа MS Excel.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
  fVS.Cells.Item[1, 1].Value := 'Первое значение';
  fVS.Cells.Item[1, 2].Value := 'Второе значение';
  fVS.Cells.Item[1, 3].Value := 'Третье значение';fExelApp.Quit;fVB.Save();                                      Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
 
					 
	Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Вопрос непонятен....
а каким кодом открыть документ exсel сразу после сохранения?
...
...
и запустить существующий в нем макрос?
fExelApp.Run('MyMacro');    Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
fExelApp.Quit; fExelApp.Visible := True;Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.