close
之前的文章有提到如何自動化Access,但是就現在看來那個只是一個取巧的方法.
之前的方法有一個很嚴重的限制:不能傳遞參數給Access.
下面這個網址提供了更全面性的作法:
http://support.microsoft.com/kb/306682/zh-tw
上述的方法藉由建立各種Office的物件,並使用run這個方法直接執行其中的VBA Code.
這使得自動化達到了一個更高的層次.
ps.別忘了"Imports Microsoft.Office.Interop",沒引入這個NameSpace可是沒辦法動作的~
其範例節錄如下(以Excel為例)
Dim oExcel As Excel.ApplicationClass
Dim oBook As Excel.WorkbookClass
Dim oBooks As Excel.Workbooks
'Start Excel and open the workbook.
oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oBooks = oExcel.Workbooks
oBook = oBooks.Open("c:\book1.xls")
'Run the macros. <= 重點在這邊
oExcel.Run("DoKbTestWithParameter", "Hello from VB .NET Client") '第一個為sub名稱,第二個為要傳遞的參數
'Clean-up: Close the workbook and quit Excel.
oBook.Close (False)
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook)
oBook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks)
oBooks = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel)
oExcel = Nothing
之前的方法有一個很嚴重的限制:不能傳遞參數給Access.
下面這個網址提供了更全面性的作法:
http://support.microsoft.com/kb/306682/zh-tw
上述的方法藉由建立各種Office的物件,並使用run這個方法直接執行其中的VBA Code.
這使得自動化達到了一個更高的層次.
ps.別忘了"Imports Microsoft.Office.Interop",沒引入這個NameSpace可是沒辦法動作的~
其範例節錄如下(以Excel為例)
Dim oExcel As Excel.ApplicationClass
Dim oBook As Excel.WorkbookClass
Dim oBooks As Excel.Workbooks
'Start Excel and open the workbook.
oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oBooks = oExcel.Workbooks
oBook = oBooks.Open("c:\book1.xls")
'Run the macros. <= 重點在這邊
oExcel.Run("DoKbTestWithParameter", "Hello from VB .NET Client") '第一個為sub名稱,第二個為要傳遞的參數
'Clean-up: Close the workbook and quit Excel.
oBook.Close (False)
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook)
oBook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks)
oBooks = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel)
oExcel = Nothing
全站熱搜
留言列表