2010-08-23 129 views
1

我想在鏈接到Excel表格的MS Access中創建一個鏈接表格。我想通過VB腳本來做到這一點。將Excel表格鏈接到MS Access中的表格 - 使用VBScript

我的情景是我將有一個Excel表格,將經常更新。但是我的腳本從MSAccess中的表中獲取值,該值應該是Excel工作表(鏈接表)的副本。

所以我想知道是否有VBscript中的任何代碼,其中我可以創建一個鏈接表到Excel工作表。

+2

這聽起來有點怪。如果Excel已經鏈接,新值將顯示出來。該表格只需要鏈接一次即可。你用這種方法試圖克服的問題是什麼? – Fionnuala 2010-08-23 13:38:41

回答

1

以下是一些示例腳本。

Dim cn ''As ADODB.Connection 
    Dim ct ''As ADOX.Catalog 
    Dim tbl ''As ADOX.Table 

    Dim strLinkXL ''As String 
    Dim strMDB ''As String 

    strLinkXL = "C:\Docs\LTD.xls" 
    strMDB = "C:\Docs\LTD.mdb" 

    ''Create Link... 
    Set cn = CreateObject("ADODB.Connection") 
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
      "Data Source=" & strMDB & ";" & _ 
      "Persist Security Info=False" 

    Set ct = CreateObject("ADOX.Catalog") 
    Set ct.ActiveConnection = cn 

    Set tbl = CreateObject("ADOX.Table") 
    Set tbl.ParentCatalog = ct 


    ''Link Excel using named range 
    Set tbl = CreateObject("ADOX.Table") 
    Set tbl.ParentCatalog = ct 

    With tbl 
    .Name = "LinkTableXLRange" 
    .properties("Jet OLEDB:Link Provider String") = "Excel 8.0;DATABASE=" _ 
     & strLinkXL & ";HDR=Yes" 
    ''The named range 
    .properties("Jet OLEDB:Remote Table Name") = "Data_Range" 
    .properties("Jet OLEDB:Create Link") = True 
    End With 

    ''Append the table to the tables collection 
    ct.Tables.Append tbl 
    Set tbl = Nothing 

    ''Link Excel by sheet name 
    Set tbl = CreateObject("ADOX.Table") 
    Set tbl.ParentCatalog = ct 

    With tbl 
    .Name = "LinkTableXLSheet" 
    .properties("Jet OLEDB:Link Provider String") = "Excel 8.0;DATABASE=" _ 
      & strLinkXL & ";HDR=Yes" 
    ''Note the use of $, it is necessary 
    .properties("Jet OLEDB:Remote Table Name") = "Sheet2$" 
    .properties("Jet OLEDB:Create Link") = True 
    End With 

    ''Append the table to the tables collection 
    ct.Tables.Append tbl 
    Set tbl = Nothing 

來源:http://wiki.lessthandot.com/index.php/Linking_Tables_via_Jet_and_ADO