Возникает ошибка при последовательности действий: 1) Загружаю документ Office, сохраняю его в mht функцией "chekFile" 2)Загружаю БД процедурой "LOAD_BD" Скрин с ошибкой: IMG: http://img.pixs.ru/storage/4/1/6/1JPG_3139657_694416.jpg ссылка на проект http://webfile.ru/4513736 код программы:
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, Word97, ComCtrls, WordXP, ExtCtrls, OleCtrls, SHDocVw, jpeg, Buttons, ComObj, ActiveX,{MSHTML_TLB, ImgList,} ImgList, ExcelXP, PowerPointXP, ADODB, DB, Grids, DBGrids;//,WbPopup;
type TfrmMain = class(TForm) Button1: TButton; OpenDialog: TOpenDialog; Button2: TButton; ADOConnection: TADOConnection; ADOCommand: TADOCommand; ADODataSet: TADODataSet; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var frmMain: TfrmMain; Global_Fn:string; Global_test:string;
implementation
{$R *.dfm} const BDpass='111';
function chekFile:boolean; var n,Fname2,Global_Fmht: string; f:TextFile; WordApp,ExcelApp,PowerPointApp: OleVariant; findex:byte;
begin//0 Global_Fn:=''; result:=false;
if frmMain.opendialog.Execute then BEGIN//1 findex:=frmMain.opendialog.FilterIndex;
result:=true; Global_Fn:=frmMain.opendialog.FileName;
n:=Global_Fn;
//Сохранение в Mht
showmessage('findex'+inttostr(findex)); case findex of 1: BEGIN///////////////////////////////////////////////////////////////////WORD WordApp:=CreateOleObject('Word.Application'); try
WordApp.Visible:=False; WordApp.DisplayAlerts:=False;
WordApp.Documents.Open(Global_Fn, ReadOnly:=True);
Global_Fn:=ExtractFileName(Global_Fn); delete(Global_Fn,length(Global_Fn)-length(ExtractFileExt(Global_Fn))+1,length(ExtractFileExt(Global_Fn)));
Global_Fmht:=Global_Fn+'.mht'; showmessage('SAve'+Global_Fmht); WordApp.ActiveDocument.SaveAs(ExtractFilePath(Application.Exename)+'LIB\'+Global_Fmht, wdFormatWebArchive);
//showmessage('Global_Fmht='+Global_Fmht);
//Global_Fmht- путь к документу //Global_Fn - название документа finally WordApp.Quit; WordApp:=Unassigned; end;
END;///////////////////////////////////////////////////////////////////WORD 2: BEGIN///////////////////////////////////////////////////////////////////EXCEL ExcelApp:=CreateOleObject('Excel.Application'); try ExcelApp.Visible:=False; ExcelApp.DisplayAlerts:=False;
ExcelApp.Workbooks.Open(Global_Fn, ReadOnly:=True);
Global_Fmht:=n+'.mht'; ExcelApp.ActiveWorkbook.SaveAs(ExtractFilePath(Application.Exename)+'LIB\'+Global_Fmht, xlWebArchive);
Global_Fn:=ExtractFileName(Global_Fn); delete(Global_Fn,length(Global_Fn)-length(ExtractFileExt(Global_Fn))+1,length(ExtractFileExt(Global_Fn))); //showmessage('Global_Fmht='+Global_Fmht);
//Global_Fmht- путь к документу //Global_Fn - название документа finally ExcelApp.Quit; ExcelApp:=Unassigned; end;
END;///////////////////////////////////////////////////////////////////EXCEL
3: BEGIN//////////////////////////////////////////////////////////////PowerPoint PowerPointApp:=CreateOleObject('PowerPoint.Application'); try PowerPointApp.Visible:=True; //неприятный момент, придётся показать окно PowerPoint'а, иначе на каждом методе будите получать "Invalid request" (хотя может уже и есть решение) PowerPointApp.DisplayAlerts:=False;
PowerPointApp.Presentations.Open(Global_Fn, ReadOnly:=True);
Global_Fmht:=n+'.mht'; PowerPointApp.ActivePresentation.SaveAs(ExtractFilePath(Application.Exename)+'LIB\'+Global_Fmht,ppSaveAsWebArchive);
Global_Fn:=ExtractFileName(Global_Fn); delete(Global_Fn,length(Global_Fn)-length(ExtractFileExt(Global_Fn))+1,length(ExtractFileExt(Global_Fn))); //showmessage('Global_Fmht='+Global_Fmht);
//Global_Fmht- путь к документу //Global_Fn - название документа finally PowerPointApp.Quit; PowerPointApp:=Unassigned; end;
END;///////////////////////////////////////////////////////////////PowerPoint end;
end;//2
end; //1
procedure LOAD_BD; var ConectionST:string;
begin ConectionST:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=LIB\'+Global_test+'.mdb;jet oledb:database password="'+BDpass+'";Persist Security Info=False;'; FrmMain.ADOConnection.Connected:=false; FrmMain.ADOConnection.LoginPrompt:=false; FrmMain.ADOConnection.ConnectionString:=ConectionST; FrmMain.ADOConnection.Connected:=true; showmessage('БД Загружена'); end;
procedure TfrmMain.Button1Click(Sender: TObject); begin if chekFile then showmessage('Check ok'); end;
procedure TfrmMain.Button2Click(Sender: TObject); begin Global_test:='bd'; LOAD_BD; end;
end.
|
|