Bonjour,
Je travaille avec Visual Studio 2005 et excel 20003.
J'ai une s�rie de donn�es Excel que je voudrais passer en param�tres � une matrice dans un programme C++.
J'ai trouv� une aide sur http://support.microsoft.com/kb/q186122
Ca se passe assez bien sauf que lorsque vient le moment d'ajouter la librairie "excel.h" .
Le compilateur me retourne plusieurs centaines d'erreur.
J'ai fait quelques tests en prenant seulement certaines classes (dont la class qui g�n�re l'objet worksheet) contenu dans la librairy et la le nombre d'erreur diminue de mani�re cons�quente. Ce qui me fait dire que c'est l'ajout de la librairy "excel.h" qui pose probl�me.
J'ai trouv� une autre fa�on d'int�grer excel avec la directive #import. En passant par la directive import le nombre d'erreur diminue, mais �a ne compile toujours pas. En tatonnant avec "rename", le nombre d'erreurs diminue. Mais il en reste beaucoup. Je ne sais pas o� se trouvent les noms qui posent probl�me.
Est- ce que quelqu'un � une id�e.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 #import "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\mso.dll" rename("RGB", "MSRGB") #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" raw_interfaces_only, rename("Reference", "ignorethis"), rename("VBE", "testVBE") #import "C:\Program Files\Microsoft Office\OFFICE11\excel.exe" exclude("IFont", "IPicture") rename("RGB", "ignorethis"), rename("DialogBox", "ignorethis"), rename("VBE", "testVBE"), rename("ReplaceText", "EReplaceText"), rename("CopyFile","ECopyFile"), rename("FindText", "EFindText"), rename("NoPrompt", "ENoPrompt")
Voici par ailleurs, une autre partie du code qui pourrait �tre utile.
J'imagine une solution qui consisterait � importer les objets que m'int�ressent un par un, mais je ne suis pas sur de pouvoir en faire la liste. Je pr�f�rerais importer brutalement toute la librairy.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 void CAutoProject_07_04_2008Dlg::OnBnClickedRun() { //OLE Variant for optional. ColeVariant VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); _Application objApp; _Workbook objBook; Workbooks objBooks; Worksheets objSheets; _Worksheet objSheet; Range objRange; Variant ret; objApp.CreateDispatch("Excel.Application"); objBooks=objApp.GetWorkbooks(); objBook=objBooks.Open("H:Test.xls",VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional); objSheets=objBook.GetWorksheets(); objSheet=objSheets.GetItem(COleVaraint("A1"),COleVariant("C8")); ret=objRange.GetValue(); // create and pass parameters to the SAFEARRAY from the VARIANT ret COleSafeArray sa(ret); long lNumRows; long lNumCols; sa.GetUBound(1,&lNumRows); sa.GetUBound(2,&lNumCols); //Display the elements in the SafeArray long index[2]; VARIANT val; int r,c; TRACE("Contents of SafeArray\n"); TRACE("======================\n\t"); for (c=1;c<=lNumCols;c++) { TRACE("t\tCol %d",c); } TRACE("\n"); for(r=1;r<=lNumCols;c++) { index[0]=r; index[1]=c; sa.GetElement(index,&val); switch(val.vt) { case VT_R8: { TRACE("\t\t%1.2f",val.dblVal); break; } case VT_BSTR: { TRACE("\t\t\%s",(CString)val.bstrVal); break; } case VT_EMPTY: { TRACE("\t\<empty>"); break; } } } TRACE("\n");
Merci d'avance pour votre aide.
Partager