運行交叉表查詢我有運行在Excel電子表格,我正在尋找一些幫助上一個SQL查詢的問題:Excel中錯誤
我的Windows XP機器使用SP3 Excel和Access 2007。
我最近發現這篇文章,它告訴我如何在Excel中的工作表上運行Access交叉表查詢。 http://datapigtechnologies.com/blog/index.php/running-crosstab-queries-in-excel/
我在excel中運行下面的代碼並嘗試旋轉(交叉表)我的數據。
一切都運行得很好。但是,當我將我的Excel工作簿設置爲只讀時,我需要做的事情突然開始出現錯誤。
當我將下面的代碼與工作簿一起作爲只讀運行時,出現以下錯誤: 外部表格未處於預期格式。 -2147467259(80004005)
Dim Myconnection As adodb.Connection
Dim Myrecordset As adodb.Recordset
Dim Myworkbook As String
Dim strSQL As String
Set Myconnection = New Connection
Set Myrecordset = New Recordset
'Identify the workbook you are referencing
Myworkbook = Application.ThisWorkbook.FullName
'Open connection to the workbook. This is where I get the first error.
Myconnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Myworkbook & ";" & _
"Extended Properties=Excel 8.0;" & _
"Persist Security Info=False"
'Build SQL Statement. This statement runs perfectly well when I copy and paste it into Access
strSQL = "TRANSFORM Last(Field1) AS LastOfField1 " & _
"SELECT Field7, Field6 AS CLIENT, [Field2], [Field3], [Field4], Field5 " & _
"FROM [RawData$A1:K1000] " & _
"GROUP BY Field7, Field6, [Field2], [Field3], [Field4], Field5 " & _
"ORDER BY Field6 " & _
"PIVOT Field8 ;"
'Load the Query into a Recordset
Myrecordset.Open strSQL, Myconnection, adOpenStatic
所以,我讀這表明我嘗試改變我的連接字符串後。所以,我把它改成如下:
Myconnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & Myworkbook & ";" & _
"Extended Properties=Excel 12.0;" & _
"Persist Security Info=False"
後,我改變了它,連接開了,但是,我再在錯誤上了下面一行:
'Load the Query into a Recordset
Myrecordset.Open strSQL, Myconnection, adOpenStatic
沒有找到一個或多個給定值所需的參數。 -2147217904
在我的查詢中沒有參數,我檢查了所有的字段名稱,它們拼寫正確。在MS Access中運行時,SQL是很好的。 經過一番調查後,如果我將我的sql更改爲標準選擇查詢,它會運行。所以也許這個連接字符串不喜歡交叉表查詢。
另外,我在一個受控的IT環境中工作,因此如果需要,我不能運行任何註冊表修補程序。
我現在有點卡住了。任何幫助,將不勝感激。
THX的小費。它是一個.xlsm。我把它弄彎了,但這次又得到了一個不同的錯誤。 找不到可安裝的ISAM。 -2147467259(80004005) 我得到這個錯誤,如果我運行它只讀或不。很奇怪,如果不使用只讀模式,使用Jet的原始連接工作得很好。這樣,我沒有問題。 – Eddie
嘗試不使用HDR = YES,現在我的答案已更改。 –
請嘗試使用'.Open method'的以下設置:'Myrecordset.Open strSQL,Myconnection,adOpenUnspecified,adLockUnspecified'。 –