CSHARP操作宏
1 /**//// <summary>
2 /// 根據傳入的報表名稱及相應參數調用Excel的宏產生報表
3 /// 如果成功則返回空,否則返回一包含出錯原因的字串
4 /// </summary>
5 /// <param name="reportName">要產生的報表名稱</param>
6 /// <param name="rptParams">產生該報表需要的參數列表</param>
7 /// <returns></returns>
8 public static string CreateReports(string rptPath,string rptName,string rptNamefix,Hashtable rptParams)
9 {
10 Excel.Application oXL;
11
12 string sResult = null;
13 try
14 {
15 // Start a Excel application
16 oXL = new Excel.Application();
17
18 //隱藏Excel
19 oXL.Visible = false;
20 }
21 catch( Exception theException)
22 {
23 return String.Concat("在請求Excel服務時出錯!",theException.Message);
24 }
25 try
26 {
27 //開啟主Excel檔案
28 if (SystemConfig.OfficeVerstring=="2003")
29 {
30 oXL.Workbooks.Open(rptPath+"\\oilScoreReports\\templates\\oilScoreReports.xla",Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
31 //調用VBA產生報表
32 oXL.Run("CreateReports.CreateReports",rptPath,rptName,rptParams["DWMC"],"",rptParams["rptDate"],rptParams["strCnt"],rptParams["userID"],"主管","審核","製表",rptNamefix,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
33 }
34// else
35// {
36// oXL.Workbooks.Open(rptPath+"\\oilScoreReports\\templates\\oilScoreReports.xla",Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
37// //調用VBA產生報表
38// oXL.Run("CreateReports.CreateReports",rptPath,rptName,rptParams["DWMC"],"",rptParams["rptDate"],rptParams["strCnt"],rptParams["userID"],"主管","審核","製表",rptNamefix,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
39// }
40
41 }
42 catch( Exception theException )
43 {
44 //殺掉Excel進程
45 sResult = "產生報表時出錯: ";
46 sResult = String.Concat( sResult, theException.Message );
47 }
48 finally
49 {
50 oXL.Quit();
51 Marshal.ReleaseComObject(oXL);
52 GC.Collect();
53 }
54 return sResult;
55
56 }
===============
這裡的內容是回下面那個朋友的.
1、在C#裡面調用宏這是必須的。並且這個也很簡單,就按上面我說的就可以做到。
2、在宏裡面控制表單裡面的按鈕的選擇情況。最後調用宏即可達到目的。
3、具體貼圖如下:
圖1
圖2
4、不知道這樣能不能達到你的要求。