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
arrow
arrow
    全站熱搜

    u8716054 發表在 痞客邦 留言(0) 人氣()