線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5696
推到 Plurk!
推到 Facebook!

"一次" 列印/預覽 EXCEL 所有 SHEETS

答題得分者是:carstyc
水晶人
一般會員


發表:3
回覆:6
積分:1
註冊:2007-08-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-08 11:52:25 IP:202.175.xxx.xxx 訂閱
我知道ExcelApp.ActiveSheet.PrintPreview 及 ExcelApp.ActiveSheet.PrintOut
可以預覽及列印 "當前"active 的sheet

但如果我想列印/預覽 整個excel 文件(有多張sheet),應如何設置,
直接開excel 的列印功能,在列印佈容中有一個選項是"整本活頁簿"
那如何用delphi 控制列印前選擇該選項呢??

先行多謝解答
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-09 22:25:23 IP:219.84.xxx.xxx 訂閱
要是 Excel 本身都沒辦法做到的話,要靠VBA應該是辦不到吧...


===================引 用 水晶人 文 章===================
我知道ExcelApp.ActiveSheet.PrintPreview 及 ExcelApp.ActiveSheet.PrintOut
可以預覽及列印 "當前"active 的sheet

但如果我想列印/預覽 整個excel 文件(有多張sheet),應如何設置,
直接開excel 的列印功能,在列印佈容中有一個選項是"整本活頁簿"
那如何用delphi 控制列印前選擇該選項呢??

先行多謝解答
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-10 00:09:39 IP:60.250.xxx.xxx 訂閱
使用環境:
office 2007 delphi 7
利用 ExcelApp.ActiveWorkbook.PrintOut --> Pass
ExcelApp.ActiveWorkbook.PrintPreview 程式無法回應
這個方向您可以嘗試看看
------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
編輯記錄
AndrewK 重新編輯於 2009-06-10 00:13:32, 註解 無‧
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-10 00:25:29 IP:219.84.xxx.xxx 訂閱
抱歉,原以為 Excel 本身沒辦法做到全部Sheet 的列印及預覽,但後來發現是可以的

用 巨集錄製得到下列結果

'列印全部的 Sheet

ActiveWorkbook.PrintOut Copies:=1, Collate:=True



'預覽全部的 Sheet

ActiveWorkbook.PrintOut Copies:=1, Collate:=True, Preview:=True


===================引 用 水晶人 文 章===================
我知道ExcelApp.ActiveSheet.PrintPreview 及 ExcelApp.ActiveSheet.PrintOut
可以預覽及列印 "當前"active 的sheet

但如果我想列印/預覽 整個excel 文件(有多張sheet),應如何設置,
直接開excel 的列印功能,在列印佈容中有一個選項是"整本活頁簿"
那如何用delphi 控制列印前選擇該選項呢??

先行多謝解答
水晶人
一般會員


發表:3
回覆:6
積分:1
註冊:2007-08-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-06-26 11:52:07 IP:202.175.xxx.xxx 訂閱
由於程式會有多個用戶使用,
如果用巨集方式, 是否要給每個用戶都要匯入 編寫好的巨集.

我想delphi 是否可能直接用程式控制
example : App.ActiveWorkBook.Collate := True; 就可以列印全部呢??

===================引 用 carstyc 文 章===================
抱歉,原以為 Excel 本身沒辦法做到全部Sheet 的列印及預覽,但後來發現是可以的

用 巨集錄製得到下列結果

'列印全部的 Sheet

ActiveWorkbook.PrintOut Copies:=1, Collate:=True



'預覽全部的 Sheet

ActiveWorkbook.PrintOut Copies:=1, Collate:=True, Preview:=True


===================引 用 水晶人 文 章===================
我知道ExcelApp.ActiveSheet.PrintPreview 及 ExcelApp.ActiveSheet.PrintOut
可以預覽及列印 "當前"active 的sheet

但如果我想列印/預覽 整個excel 文件(有多張sheet),應如何設置,
直接開excel 的列印功能,在列印佈容中有一個選項是"整本活頁簿"
那如何用delphi 控制列印前選擇該選項呢??

先行多謝解答
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-06-26 12:13:13 IP:203.79.xxx.xxx 訂閱
當然是直接用  ExcelApp.ActiveSheet.PrintOut 來達成啊

我只是跟你講 PrintOut 的參數中,只要將 Copies:=1, Collate:=True, Preview:=True ,其餘全部用EmptyPara ,就能達到預覽全部的功能。

可是 PrintOut 是一個多型的函式,你要找一下那一個函式中可同時輸入 Copies , Collate , Preview 這三個參數,就選用那個函式來做,其餘都帶 EmptyPara 。

我手上目前沒有 Delphi 可以用,你先試看看吧。





===================引 用 水晶人 文 章===================
由於程式會有多個用戶使用,
如果用巨集方式, 是否要給每個用戶都要匯入 編寫好的巨集.

我想delphi 是否可能直接用程式控制
example : App.ActiveWorkBook.Collate := True; 就可以列印全部呢??

===================引 用 carstyc 文 章===================
抱歉,原以為 Excel 本身沒辦法做到全部Sheet 的列印及預覽,但後來發現是可以的

用 巨集錄製得到下列結果

'列印全部的 Sheet

ActiveWorkbook.PrintOut Copies:=1, Collate:=True



'預覽全部的 Sheet

ActiveWorkbook.PrintOut Copies:=1, Collate:=True, Preview:=True


===================引 用 水晶人 文 章===================
我知道ExcelApp.ActiveSheet.PrintPreview 及 ExcelApp.ActiveSheet.PrintOut
可以預覽及列印 "當前"active 的sheet

但如果我想列印/預覽 整個excel 文件(有多張sheet),應如何設置,
直接開excel 的列印功能,在列印佈容中有一個選項是"整本活頁簿"
那如何用delphi 控制列印前選擇該選項呢??

先行多謝解答
fireflybug
一般會員


發表:17
回覆:36
積分:15
註冊:2008-07-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-11-03 11:48:44 IP:220.130.xxx.xxx 訂閱
我無意間試出來的,建立一個Button,與一個PrintFileDOC(tmpFilename: string)的程序。

程式Source

然後重點在於我給了兩個變數
var
ExcelApp,Excelall : Variant;

ExcelApp:=CreateOleObject('Excel.Application'); <==創建EXCEL應用程式
ExcelApp.Workbooks.Open(tmpFilename); <==正常開啟檔案
Excelall := ExcelApp.Workbooks.Open(tmpFilename);//可列印全部SHEET <==把開啟檔案的狀態給Excelall

最後再使用 Excelall.printout 即可全部的Sheet都列印出來,關閉Excel還是要用ExcelApp.quit來關,而不是 Excelall.quit。

列印作用中的sheet則用 ==> ExcelApp.ActiveSheet.PrintOut 即可

要預覽可帶參數 ==> Excelall.printout(Copies:=1, Collate:=True, Preview:=True) 即可預覽


[code delphi]
use
ComObj <===要加這個才能創建EXCEL

type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure PrintFileDOC(tmpFilename:string);
end;


procedure TForm1.PrintFileDOC(tmpFilename: string);
var
ExcelApp,PageSetup,Excelall : Variant;
begin
try
//創建OLE對象EXCEL Application
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Visible:=true; // 顯示Word程式
ExcelApp.DisplayAlerts:=False;
ExcelApp.Workbooks.Open(tmpFilename);
Excelall := ExcelApp.Workbooks.Open(tmpFilename);//可列印全部SHEET
//ExcelApp.quit;
//ExcelApp.Select;
//重新設定最大邊界,避免word跳出訊息
PageSetup := ExcelApp.ActiveSheet.PageSetup;
PageSetup.LeftMargin:='0.5'; // 邊際位置-左
PageSetup.RightMargin:='0.5'; // 邊際位置-右
PageSetup.TopMargin:= '0.5'; // 邊際位置-上
PageSetup.BottomMargin:= '0.5'; // 邊際位置-下
ExcelApp.Save; // 存檔,避免關閉Word又跳出訊息
try
Excelall.PrintOut; //列印全部Sheet
ExcelApp.ActiveSheet.PrintOut(Copies:=1, Collate:=True, Preview:=True);//作用中的sheet帶參數,此為預覽列印
//sleep(5000);
finally
ExcelApp.quit;
ExcelApp:=Unassigned; //釋放VARIANT變量
end;
except
on xErr: Exception do
begin
Screen.Cursor := crDefault;
MessageDlg('您的電腦裡未安裝Microsoft Word。' #13#10 xErr.Message, mtInformation, [mbOk], 0);
ExcelApp.Quit;
//ExcelApp:=Unassigned; //釋放VARIANT變量
Exit;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
PrintFileDOC(OpenDialog1.FileName);
MessageDlg(OpenDialog1.FileName ' 列印完成', mtInformation, [mbOk, mbNo], 0);
end else
MessageDlg('取消列印', mtInformation, [mbOk, mbNo], 0);
end;

[/code]





===================引 用 水晶人 文 章===================
我知道ExcelApp.ActiveSheet.PrintPreview 及 ExcelApp.ActiveSheet.PrintOut
可以預覽及列印 "當前"active 的sheet

但如果我想列印/預覽 整個excel 文件(有多張sheet),應如何設置,
直接開excel 的列印功能,在列印佈容中有一個選項是"整本活頁簿"
那如何用delphi 控制列印前選擇該選項呢??

先行多謝解答
------
今天的事,留到後天再說....
系統時間:2017-10-22 5:28:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!