全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2208
推到 Plurk!
推到 Facebook!

OLE WORD 的困擾, 我想一定有人可以幫忙的....

尚未結案
GiABin
一般會員


發表:6
回覆:8
積分:2
註冊:2002-11-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-11 15:13:58 IP:203.75.xxx.xxx 未訂閱
各位前輩,我有以下的程式,但有一點小問題想請教, 例如程式執行後我按二次 save 後把資料分別存成二檔, 然後關閉程式,結果我按 crtl+alt+del 會顯示兩個 Winword 程式還死在裡面,我只好強制把它刪掉, 問題以此類推. 我在存檔後用 word_doc.application.quit; 想把它關掉但會出現 錯誤,我真的不知道怎麼寫了,有誰可以伸出援手嗎? 另外, 我想知道若用     Word_doc:=CreateoleObject('word.application'); 自動產生檔案的情況下,怎樣把內容 add 到 word 檔案中呢? 我用       word_doc.insert(str+#13); 就不行了, 感激各位.    procedure TMainForm.SaveToWordClick(Sender: TObject); var str: String;     i: Integer;     word_doc: Variant; begin   try     Table1.TableName:=TableList.Text;     Table1.open;   except     Showmessage('Can''t open '+TableList.Text+' table !!');     exit;   end;       SaveDialog1.Title:='Save Table to Word File';   SaveDialog1.InitialDir:= GetCurrentDir;   SaveDialog1.FileName:= TableList.Text;   try     Word_doc:=CreateoleObject('word.basic');     Word_doc.filenew('Normal');   except     Showmessage('Can''t start Microsoft Word');     exit;   end;   while not table1.Eof do   begin     str:='';     for i := 0 to table1.FieldCount-1 do       str:=str+table1.Fields[i].AsString+' , ';     word_doc.insert(str+#13);     table1.Next;   end;      table1.close;   SaveDialog1.Execute;   word_doc.filesaveas(SaveDialog1.FileName);   Showmessage('Save to Word File succeed!!');   end;     問的好得
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-11 15:30:05 IP:211.74.xxx.xxx 未訂閱
. . . word_doc.filesaveas(SaveDialog1.FileName); word_doc:= Unassigned;//加上這一句 Showmessage('Save to Word File succeed!!'); end; 發表人 - chih 於 2003/04/11 15:37:15
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-11 22:23:19 IP:61.56.xxx.xxx 未訂閱
Word執行後,用Quit關閉看看:
wdApp:=CreateOleObject('Word.Application');
...
wdApp.Quit;
在Word中加入內容,建議你參考Microsoft的網站有關Word Document物件的說明: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deovrworkingwithdocumentcontent.asp 下面我寫了一個簡單的例子:
procedure TForm1.Button1Click(Sender: TObject);
var wdApp,doc:Variant;
begin
  wdApp:=CreateOleObject('Word.Application');
  try
    doc:=wdApp.Documents.Add;
    doc.Range.Text:='this is a test...';
    doc.SaveAs('C:\test.doc');
  finally
    wdApp.Quit;
  end;
end;
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-12 08:56:47 IP:203.217.xxx.xxx 未訂閱
你發問時可能選錯了, [BCB]問題, 應該是[delphi] 麻煩注意一下
GiABin
一般會員


發表:6
回覆:8
積分:2
註冊:2002-11-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-12 12:12:06 IP:203.75.xxx.xxx 未訂閱
Sorry 版主,可能疏忽選錯了,謝謝您的指正    Hi Chih, 謝謝您的建議,但 我加入這一行 word_doc:= Unassigned;//加上這一句 狀況還是一樣,不知是哪裡出問題? 我是用 CreateoleObject('word.basic'); 不知是不是有差異?    Hi 00156, 用  CreateOleObject('Word.Application'); 是可以用 Quit 關閉的, 謝謝您的建議     問的好得
sundy6719
初階會員


發表:136
回覆:78
積分:42
註冊:2002-07-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-07 20:50:44 IP:211.74.xxx.xxx 未訂閱
請問一下 v.filenew('normal');這一句是在說什麼呢??? 如不用的話有什麼關係嗎??? 還有我的程式碼如下 procedure TForm1.Word1Click(Sender: TObject); var filename,password,input,s:string; i:integer; v:variant; begin v:=createoleobject('word.basic'); v.filenew('normal'); input:=inputbox('訊息視窗','請輸入您欲轉檔的資料表',''); try datamodule7.clientdataset1.CommandText:='select * from ' input; datamodule7.ClientDataSet1.open; while (not datamodule7.ClientDataSet1.eof)do begin s:=''; for i:=0 to datamodule7.ClientDataSet1.FieldCount-1 do s:=s datamodule7.ClientDataSet1.Fields[i].asstring ' '; v.insert(s #1310); datamodule7.ClientDataSet1.Next; end; datamodule7.ClientDataSet1.close; filename:=inputbox('請輸入','請輸入檔案名稱','c:\*.doc'); v.filesaveas(filename,,,); except messagedlg('檔案名稱己存在請在取別的檔名謝謝!!',mterror,[mbok],0); end; end; 可是每一次我儲存完後要去開啟這個檔案時每次word檔都當機我還少了什麼指令嗎???謝謝 發表人 - sundy6719 於 2004/03/07 21:36:36
nanako
一般會員


發表:0
回覆:1
積分:0
註冊:2004-12-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-29 14:35:51 IP:203.69.xxx.xxx 未訂閱
各位前輩 我還是不了解 CreateoleObject('word.basic')與CreateOleObject('Word.Application') 到底有什麼差異呢?? 如果 以下面的程式為例 要修改為用CreateOleObject('Word.Application')該怎麼寫ㄋㄟ?? 謝謝囉...^^ procedure TForm1.Button1Click(Sender: TObject); var v : variant; str : string; i : integer; begin v := CreateoleObject('word.basic'); v.filenew('Normal'); Query1.open; while not Query1.eof do begin str :=''; for i := 0 to Query1.Fieldcount-1 do begin str := str Query1.Fields[i].Asstring ' '; end; v.insert(str #13#10); Query1.next; end; Query1.close; v.FileSaveas(Edit1.Text,,,); end;
系統時間:2024-05-14 23:17:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!