Excel控製,如何新增或刪除多餘的Sheet |
答題得分者是:cmf
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
以下是我建立一個新的Excel檔的方法
我這樣下是可以新建一個sheet4 procedure TForm1.Button1Click(Sender: TObject);
var
wsSheet: _WorkSheet;
begin
Excelapplication1.Connect();
ExcelApplication1.Visible[0] := True;
ExcelApplication1.Caption := 'New Excel'; ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
ExcelApplication1.ScreenUpdating[0] := True; wsSheet := ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; end; 請問:可是有沒有辦法刪除sheet1~3,
或是有沒有辦法可以一開始時就沒有sheet1~3,
可以自己新增sheet~~~ 再請問:
我利用下面的語法開啟了一個Excel檔
請問我要如何讓自己宣告的 wsSheet: _WorkSheet;
能夠指到該Excel特定的頁面
ex: sheet1 ExcelApplication1.Workbooks.Open ('c:\a.xls',
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 謝謝? ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
引言: 以下是我建立一個新的Excel檔的方法 我這樣下是可以新建一個sheet4 procedure TForm1.Button1Click(Sender: TObject); var wsSheet: _WorkSheet; begin Excelapplication1.Connect(); ExcelApplication1.Visible[0] := True; ExcelApplication1.Caption := 'New Excel'; ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); ExcelApplication1.ScreenUpdating[0] := True; wsSheet := ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; end; 請問:可是有沒有辦法刪除sheet1~3, 或是有沒有辦法可以一開始時就沒有sheet1~3, 可以自己新增sheet~~~ 再請問: 我利用下面的語法開啟了一個Excel檔 請問我要如何讓自己宣告的 wsSheet: _WorkSheet; 能夠指到該Excel特定的頁面 ex: sheet1 ExcelApplication1.Workbooks.Open ('c:\a.xls', EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 謝謝? ---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ----------------// 設定一開始只有 一 sheet ;最少是一個 ExcelApplication1.SheetsInNewWorkbook := 1 ; //刪除sheet ; 最少要留一個 ExcelWorkbook1.Sheets("Sheet2").Select ExcelWorkbook1.ActiveWindow.SelectedSheets.Delete ExcelWorkbook1.Sheets("Sheet3").Select ExcelWorkbook1.ActiveWindow.SelectedSheets.Delete // Excel特定的頁面 ExcelWorkbook1.Sheets("Sheet1").Select
------
︿︿ |
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
請問cmf兄: 我是用Dephi 5.0 可是會出現下面的狀況 procedure TForm1.Button1Click(Sender: TObject);
begin
ExcelApplication1.SheetsInNewWorkbook := 2;
end; 會出現[Error] Unit1.pas(34): '[' expected but ':=' found
(是這樣寫嗎?還是要加上ExcelApplication1.Connect();) 另外如果下
procedure TForm1.Button1Click(Sender: TObject);
begin
Excelapplication1.Connect();
ExcelApplication1.Visible[0] := True;
ExcelApplication1.Caption := 'New Excel'; ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
ExcelApplication1.ScreenUpdating[0] := True; ExcelApplication1.Workbooks.Open ('c:\Excel.xls',
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) ExcelWorkbook1.Sheets("Sheet2").Select;
ExcelWorkbook1.ActiveWindow.SelectedSheets.Delete;
end; 會錯在 ExcelWorkbook1.Sheets("Sheet2").Select;
Error message:
[Error] Unit1.pas(38): Missing operator or semicolon
[Error] Unit1.pas(38): Not enough actual parameters
[Error] Unit1.pas(39): Undeclared identifier: 'ActiveWindow'
[Error] Unit1.pas(39): Missing operator or semicolon
[Error] Unit1.pas(39): Missing operator or semicolon
[Error] Unit1.pas(40): Expression expected but 'END' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' 請問是錯在哪裡
P.S 我用的三個元件ExcelApplication1, ExcelWorkbook1, ExcelWorksheet1 ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
把這行改成 ExcelApplication1.SheetsInNewWorkbook := 2;
改成 ExcelApplication1.SheetsInNewWorkbook[1] := 2; // 少了 分號 ;
ExcelApplication1.Workbooks.Open ('c:\Excel.xls',
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0); 把這行改成 ExcelWorkbook1.ActiveWindow.SelectedSheets.Delete;
改成 ExcelWorkbook1.Sheets.Delete(2);
------
︿︿ |
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
請問cmf 兄:
先謝謝你~~~大概成了50% 以下是我的開法
ExcelApplication1.connect();
ExcelApplication1.Visible[0] := True;
ExcelApplication1.SheetsInNewWorkbook[1] := 2;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
ExcelApplication1.ScreenUpdating[0] := True; 這樣是可以打開2個頁面,
可是我加上 (這次有加;號)
ExcelWorkbook1.Sheets("Sheet2").Select;
or
ExcelWorkbook1.Sheets('Sheet2').Select; 都會出現下面的訊息:
[Error] Unit1.pas(39): Missing operator or semicolon
[Error] Unit1.pas(39): Not enough actual parameters
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' 但是用ExcelWorkbook1.Sheets.Select(temp,1);
(var temp : OleVariant;)
時,反而把第二頁變到第一個sheet(但需要去點一下才會變?) 請問我的Select的部份有錯嗎? 另外我如果改下
ExcelWorkbook1.Sheets.Delete(2);
會出現"至少需有一張未隱藏的工作表"
請問我有漏掉什麼嗎?? 另外是否可以預覽列印或直接列印 我之前看到"領行天使大大"的範例
用的是 Variant 來建立
內容大概是
var MyExcel: Variant;
begin
MyExcel := CreateOleOBject('Excel.Application');
MyExcel.WorkBooks.Add;
MyExcel.Visible := True;
(from 領行天使) 加上 MyExcel.sheets[2].select;
則可以選到第二頁,可是
ExcelApplication1.Sheets[2].select; 會說沒有select這個方法 請問方法有錯嗎??? 寫太多,可能看不懂,
主要還是問,
1. 如何選到特定的sheet頁面
2. 如何刪除特定的sheet頁面
(之前用領行天使大大的方法,MyExcel.sheets[2].delete,
可以刪除,但會有詢問的訊息,是否可以消掉)
3. 是否可以預覽列印或直接列印Excel檔
因為有看到printout 和 preview等方法,可是在
ExcelApplication1.sheet <---一直過不去.... sorry~~問了一大堆,還是沒辦法做出來~~~
先向你說聲謝謝~~~~ ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
1. 如何選到特定的sheet頁面 ExcelWorkbook1.Sheets.Select(Replace: OleVariant; lcid: Integer); 2. 如何刪除特定的sheet頁面
ExcelWorkbook1.Sheets.Delete(lcid: Integer); (之前用領行天使大大的方法,MyExcel.sheets[2].delete,
可以刪除,但會有詢問的訊息,是否可以消掉) 3. 是否可以預覽列印或直接列印Excel檔
因為有看到printout 和 preview等方法,可是在
ExcelApplication1.sheet <---一直過不去.... ExcelApplication1.ActiveWindow.PrintPreview(EnableChanges: OleVariant);
------
︿︿ |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
procedure TEST;
var
ExcelWorksheet:array[0...10] of TExcelWorksheet;
i:integer;
begin
ExcelApplication1.connect();
ExcelApplication1.Visible[0] := True;
ExcelApplication1.SheetsInNewWorkbook[1] := 2;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
ExcelApplication1.ScreenUpdating[0] := True; for i:=0 to ExcelWorkbook1.Sheets.Count-1 do
begin
ExcelWorksheet[i]:=ExcelWorkbook1.Sheets.Item[i];
end; ExcelWorksheet[1].Select; ExcelWorksheet[1].Delete; ExcelWorksheet[0].PrintPreview; end;
------
︿︿ |
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
to cmf 兄: Compile會錯在這一行
ExcelWorksheet[i] := ExcelWorkbook1.Sheets.Item[i]; [Error] Unit1.pas(48): Incompatible types: 'TExcelWorksheet' and 'IDispatch'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' 是不是我的Delphi的問題 ~~~~
@_@~~~ 如果把那一行註解掉則換下面二行會 Run Time Error
ExcelWorksheet[1].Delete; ExcelWorksheet[0].PrintPreview; Sorry~~~又要麻煩你~~~ ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
To cmf 兄: 換成
ExcelWorksheet[i] := ExcelWorkbook1.Sheets.Item[i] as TExcelWorksheet; Compile Error Message變成
[Error] Unit1.pas(48): Operator not applicable to this operand type
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' 如果用
ExcelWorksheet[i] := TExcelWorksheet(ExcelWorkbook1.Sheets.Item[i]); 會變成Run Time Error
"無效的索引~~" 請問題錯在哪裡??? ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
To cmf 兄: 我是用你之前回的那段程式去執行 procedure TForm1.Button1Click(Sender: TObject);
var
ExcelWorksheet:array[0..10] of TExcelWorksheet;
i:integer;
begin
ExcelApplication1.connect();
ExcelApplication1.Visible[0] := True;
ExcelApplication1.SheetsInNewWorkbook[1] := 2;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
ExcelApplication1.ScreenUpdating[0] := True; for i:=0 to ExcelWorkbook1.Sheets.Count-1 do
begin
ExcelWorkbook1.Sheets.Item[i] as TExcelWorksheet; <---快錯
end; ExcelWorksheet[1].Select; ExcelWorksheet[1].Delete; ExcelWorksheet[0].PrintPreview; end; ExcelWorkbook1.Sheets.Item[i] as TExcelWorksheet; 這一行
的錯誤訊息是
[Error] Unit1.pas(42): Operator not applicable to this operand type
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' 我是用 New Application
加一個按鈕,加上ExcelApplication1, ExcelWorksheet1, ExcelWorkbook1
在按鈕跑上面那段程式,然後就出現錯誤訊息了~~~ 謝謝你~~~~ ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
改成這樣試試看八 procedure TForm1.Button1Click(Sender: TObject);
var
ExcelWorksheet:array[0..10] of TExcelWorksheet;
i:integer;
lcid: integer;
_Template:Olevariant;
begin lcid := GetUserDefaultLCID; _Template:=Olevariant(xlWBATWorksheet); try
ExcelApplication1.connect;
except
showmessage('無法連上Excel');
exit;
end; ExcelApplication1.Visible[lcid] := True;
ExcelApplication1.SheetsInNewWorkbook[lcid] := 2;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(_Template,lcid));
ExcelApplication1.ScreenUpdating[lcid] := True; for i:=0 to ExcelWorkbook1.WorkSheets.Count-1 do
begin
ExcelWorksheet[i]:=TExcelWorksheet.Create(self);
ExcelWorksheet[i].ConnectTo(ExcelWorkbook1.Worksheets[i 1] as _Worksheet);
end; if ExcelWorkbook1.WorkSheets.Count >= 2 then
begin
ExcelWorksheet[1].Select;
ExcelWorksheet[1].Delete;
ExcelWorksheet[1].Free;
end; ExcelWorksheet[0].PrintPreview; end;
------
︿︿ |
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |