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.

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");
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.

Merci d'avance pour votre aide.