Intereting Posts

Erreur lors de l'exécution des requêtes de arrays croisés dans Excel

J'ai un problème avec une requête SQL sur une feuille de calcul Excel sur laquelle je search de l'aide:

J'utilise Excel et Access 2007 sur une machine Windows xp sp3.

J'ai récemment trouvé cette publication qui m'a montré comment exécuter une requête Access Crosstab sur une feuille de calcul dans Excel. http://datapigtechnologies.com/blog/index.php/running-crosstab-queries-in-excel/

J'exécute le code ci-dessous dans Excel et j'essaie de pivoter mes données.

Tout courait parfaitement. Mais quand j'ai configuré mon classur Excel en lecture seule, ce que je dois faire, j'ai soudainement commencé à avoir des erreurs.

Lorsque je lance le code ci-dessous avec le classur en lecture seule, je reçois l'erreur suivante: La table externe n'est pas dans le format attendu. -2147467259 (80004005)

Dim Myconnection As adodb.Connection Dim Myrecordset As adodb.Recordset Dim Myworkbook As Ssortingng Dim strSQL As Ssortingng 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 

Alors, j'ai lu une publication qui m'a suggéré d'essayer de modifier mon string de connection. J'ai donc changé ce qui suit:

 Myconnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & Myworkbook & ";" & _ "Extended Properties=Excel 12.0;" & _ "Persist Security Info=False" 

Après que je l'ai changé, la connection a ouvert, cependant, j'ai alors eu une erreur sur la ligne suivante:

 'Load the Query into a Recordset Myrecordset.Open strSQL, Myconnection, adOpenStatic 

Aucune valeur donnée pour un ou plusieurs parameters requirejs. -2147217904

Il n'y a pas de parameters dans ma requête et j'ai vérifié tous les noms de champs et ils sont correctement écrits. Le SQL est bon lorsqu'il est exécuté dans MS Access. Après une enquête, si je change mon sql à une requête de sélection standard, elle s'exécute. Donc, peut-être que cette string de connections n'aime pas les requêtes de arrays croisés.

De plus, je travaille dans un environnement informatique contrôlé afin que je ne puisse exécuter aucune correction de registre, si nécessaire.

Je suis un peu coincé maintenant. Toute aide serait appréciée.

Juste une idée rapide. Dans la mesure où vous avez une macro dans le file Excel, je crois qu'il est sauvegardé en tant que .xlsm . Par conséquent, je pense que vous avez besoin du type de ConnectionSsortingng suivant (modifiez le cas échéant):

 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsm; Extended Properties="Excel 12.0 Macro;" 

Source: http://www.ConnectionSsortingngs.Com