如何获取已经打开的Excel程序

1.C#方式

 1 _Application excelApp;
 2 try
 3 {
 4   excelApp = (_Application)Marshal.GetActiveObject("Excel.Application");
 5 }
 6 catch(Exception)
 7 {
 8   // this is important. If Excel is not running, GetActiveObject will throw
 9   // an exception
10   excelApp = null;
11 }
12 if( excelApp == null )
13 {
14   excelApp = new ApplicationClass();
15 }

2.VB

 1      Dim xlsApp As Application
 2      Dim xlsWorkSheet As Worksheet
 3      Dim xlsRange As Range
 4      Set xlsApp = CreateObject("Excel.Application.8")
 5      xlsApp.Visible = True
 6      xlsApp.SheetsInNewWorkbook = 1
 7      With xlsApp.Workbooks
 8     If (.Count = 0) Then
 9     .Add
10     End If
11      End With
12      Set xlsWorkSheet = xlsApp.Worksheets.Item(1)
13      xlsWorkSheet.Range("A1").Value = "Easy"

3.MFC

 1 LPDISPATCH      pDispatch = NULL;
 2     LPUNKNOWN       pUnknown = NULL;
 3     CLSID      clsid;
 4     _Application    appExcel;
 5     LPDISPATCH      pWorkbooks = NULL;
 6     Workbooks       Workbooks;
 7     LPDISPATCH      pWorkbook = NULL;
 8     LPDISPATCH      pWorksheets = NULL;
 9     Sheets     Worksheets;
10     LPDISPATCH      pWorksheet = NULL;
11     _Worksheet      Worksheet;
12     LPDISPATCH      pWorkRange = NULL;
13     Range      WorkRange;
14     CLSIDFromProgID( L"Excel.Application.8", &clsid );
15     // 看指定的对象是否已经运行
16     if ( SUCCEEDED(GetActiveObject(
17          clsid, NULL, &pUnknown )) )
18     {
19         VERIFY( SUCCEEDED(pUnknown->QueryInterface(
20             IID_IDispatch, (void**)&pDispatch )) );
21         ASSERT( pDispatch );
22         appExcel.AttachDispatch( pDispatch );
23         pUnknown->Release();
24     }
25     else
26     {
27         // 没运行。那就建立Excel.Application.8对象
28         if ( ! appExcel.CreateDispatch(
29             (LPCTSTR)"Excel.Application.8") )
30         {
31            MessageBox(
32            "can not found the Excel.Application.8 object!");
33            return;
34         }
35     }
36     // 显示并激活Excel窗口
37     // XLMAIN 是用Spy++查到的
38     HWND hWndExcelMain = ::FindWindow( "XLMAIN", NULL );
39     ASSERT( hWndExcelMain );
40     ::ShowWindow( hWndExcelMain, SW_SHOW );
41     ::UpdateWindow( hWndExcelMain );
42     ::BringWindowToTop( hWndExcelMain );
43     // 设置在一个新工作簿中的工作表数为1
44     appExcel.SetSheetsInNewWorkbook( 1 );
45     // 得到工作簿集的IDispatch,并绑定到Workbooks对象
46     pWorkbooks = appExcel.GetWorkbooks();
47     ASSERT( pWorkbooks );
48     Workbooks.AttachDispatch( pWorkbooks );
49     // 如果工作簿集是空的,那就添加一个工作簿
50     if ( Workbooks.GetCount() == (long)0 )
51     {
52         pWorkbook = Workbooks.Add();
53         ASSERT( pWorkbook );
54     }
55     // 得到工作表集(同上)
56     pWorksheets = appExcel.GetWorksheets();
57     ASSERT( pWorksheets );
58     Worksheets.AttachDispatch( pWorksheets );
59     // 激活第一个工作表
60     pWorksheet = Worksheets.GetItem(
61         COleVariant((short)1) );
62     ASSERT( pWorksheet );
63     Worksheet.AttachDispatch( pWorksheet );
64     Worksheet.Select( COleVariant((short)TRUE) );
65     // 得到A1区域的引用
66     pWorkRange = Worksheet.GetRange(
67         COleVariant("A1"), COleVariant("A1"));
68     WorkRange.AttachDispatch( pWorkRange );
69     WorkRange.SetValue(
70         COleVariant("多简单!就是麻烦一点儿!") );
71     if ( pWorkbook )
72 
73         pWorkbook->Release();

猜你喜欢

转载自www.cnblogs.com/unicornsir/p/12718739.html