Je cherche à importer le résultat d'une requête SQL (affichée dans une DBGrid) dans Excel.
Ca, pas de problème (je le fais depuis des années).

Le problème, c'est pour empêcher Excel de modifier les données que je lui donne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Excel.Workbooks.OpenText(GetRepTemp + szFichier, xlWindows, 1, xlDelimited, xlDoubleQuote, False, False, True, False, False, False, FieldInfo);
Comment remplir le paramètre FieldInfo ?
J'ai essayé de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const
   xlGeneralFormat = 1;
   xlTextFormat = 2;
   xlDMYFormat = 4;
var
   FieldInfo, Excel: Variant;
begin
            FieldInfo := VarArrayCreate([0, QueryAff.FieldCount], varVariant);
            for i:=0 to Pred(QueryAff.FieldCount) do
            begin
               if QueryAff.Fields[i].DataType = ftString then
                  FieldInfo[i] := VarArrayOf([(i + 1), xlTextFormat])
               else if QueryAff.Fields[i].DataType = ftDateTime then
                  FieldInfo[i] := VarArrayOf([(i + 1), xlDMYFormat])
               else
                  FieldInfo[i] := VarArrayOf([(i + 1), xlGeneralFormat]);
            end;
Mais, j'obtiens l'erreur :
Le type ne correspond pas
Je suis allé voir la msdn (http://msdn.microsoft.com/en-us/libr....opentext.aspx), mais je n'ai pas trouvé ce qui ne va pas.

Une idée ?