1
我正在使用以下代碼從Sheet1的Sheet讀取數據。我將數據加載到返回數組中。 Excel工作表文件具有「只讀」選中狀態並始終以「只讀」模式打開。無論如何讓ADO在保存之前從只讀excel文件讀取更新的數據? (VBA)
問題是如果我更改Sheet1上的任何數據,因爲該文件打開爲「只讀」,它不會反映在ADO查詢中。 ADO繼續輸出「已保存」文件中的內容,並忽略在臨時只讀版本中更新的內容。 例如,下面從單元格「E6」中拉取值「Col5:6」。如果我將值替換爲「測試」,ADO仍輸出「Col5:6」
如何讓ADO讀取Sheet1上的當前數據而不必「另存爲」?
Sub sbADO()
Dim sSQLSting As String
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
Dim returnArray
DBPath = ThisWorkbook.FullName
sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBPath _
& ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
Conn.Open sconnect
sSQLSting = "SELECT * From [Sheet1$] "
mrs.Open sSQLSting, Conn
returnArray = mrs.GetRows
mrs.Close
Conn.Close
Debug.Print returnArray(4, 4) '>> "Col5:6"
End Sub
我會使用一個公共變量,blnWorksheetDirty作爲布爾值,然後在工作表中更改事件,如果發生更改,那麼將其設置爲true,那麼如果存在,則保存臨時副本並查詢,如果不是,則使用您的有。 –
是不是有一種方法可以指示ADO讀取只讀版本中的臨時數據?還是必須始終從最後保存的版本中讀取? –
爲什麼要使用ADODB?當它似乎要求您先將文件保存在某個位置(您想要避免的位置)?爲什麼不直接將數據「抓」到數組中並跳過ADO連接?這只是兩行VBA代碼:http://stackoverflow.com/questions/18000617/how-to-copy-selected-range-into-given-array/18000989#18000989如果這不是一個選項,那麼如何使用不同的像數據庫服務器的後端數據? – Ralph