Problème avec le pilotage d'Excel
Bonjour,
je suis en train de faire une DLL qui sera utilisée en DarkBasic pour piloter un fichier Excel dans un programme 3D.
Mais j'ai de gros problème à la compilation et plus j'en resout et plus y'en a...
Donc voici mon code entier :
le .cpp :
Code:
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
| //---------------------------------------------------------------------------
#include <utilcls.h>
#include <windows.h>
#include "Unit1.h"
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
Unit1::Unit1()
{
}
void __declspec (dllexport) Unit1::openExcel()
{
vMSExcel = Variant::CreateObject("Excel.Application");
vMSExcel.OlePropertySet("Visible", false);
}
void __declspec (dllexport) Unit1::closeExcel()
{
vMSExcel.OleFunction("Quit");
vMSExcel = 0;
}
void __declspec (dllexport) Unit1::openFile(char *nomFichier)
{
vFileName = nomFichier;
vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
}
void __declspec (dllexport) Unit1::closeFile()
{
vSaveChanges = true;
vXLWorkbook.OleFunction("Close", vSaveChanges, vFileName);
}
void __declspec (dllexport) Unit1::openFeuille(char *feuilleName)
{
vSheetName = feuilleName;
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
}
AnsiString __declspec (dllexport) Unit1::getValueCell(char *cellName)
{
vRange = cellName;
vCell = vWorksheet.OlePropertyGet("Range", vRange);
aValue = vCell.OlePropertyGet("Value");
return (aValue);
}
//--------------------------------------------------------------------------- |
et le .h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
#include <system.hpp>
#include <utilcls.h>
#include <windows.h>
#ifdef __DLL__
#define IMPORT_EXPORT __declspec(dllexport)
#else
#define IMPORT_EXPORT __declspec(dllimport)
#endif
IMPORT_EXPORT class Unit1 {
public:
int N1, N2, Result;
Variant vMSExcel, vFileName, vXLWorkbooks, vXLWorkbook, vSaveChanges, vWorksheet, vSheetName, vValue, vRange, vCell;
AnsiString aValue;
Unit1();
void __declspec (dllexport) openExcel();
void __declspec (dllexport) closeExcel();
void __declspec (dllexport) openFile(char *nomFichier);
void __declspec (dllexport) closeFile();
void __declspec (dllexport) openFeuille(char *feuilleName);
AnsiString __declspec (dllexport) getValueCell(char *cellName);
}; |
et voici les erreurs qu'il me trouve :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [C++ Error] utilcls.h(3390): E2451 Undefined symbol 'Count'
[C++ Error] sysvari.h(2669): E2450 Undefined structure 'TAutoArgs<1>'
[C++ Error] sysvari.h(2669): E2449 Size of 'args' is unknown or zero
[C++ Error] sysvari.h(2669): E2450 Undefined structure 'TAutoArgs<1>'
[C++ Error] sysvari.h(1950): E2450 Undefined structure 'TAutoArgs<1>'
[C++ Error] sysvari.h(1950): E2449 Size of 'args' is unknown or zero
[C++ Error] sysvari.h(1950): E2450 Undefined structure 'TAutoArgs<1>'
[C++ Error] sysvari.h(1951): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)'
[C++ Error] utilcls.h(3390): E2451 Undefined symbol 'Count'
[C++ Error] sysvari.h(1958): E2450 Undefined structure 'TAutoArgs<2>'
[C++ Error] sysvari.h(1958): E2449 Size of 'args' is unknown or zero
[C++ Error] sysvari.h(1958): E2450 Undefined structure 'TAutoArgs<2>'
[C++ Error] sysvari.h(1959): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)'
[C++ Error] sysvari.h(1959): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)'
[C++ Error] sysvari.h(2562): E2450 Undefined structure 'TAutoArgs<1>'
[C++ Error] sysvari.h(2562): E2449 Size of 'args' is unknown or zero
[C++ Error] sysvari.h(2562): E2450 Undefined structure 'TAutoArgs<1>'
[C++ Error] sysvari.h(2563): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)' |
Ca fait vraiment longtemps que je galère dessus donc si quelqu'un a une solution ca serai vraiment sympa.
C'est a cause du type Variant qu'il y'a des problème, peut-être qu'il ne peut pas être utilisé en global? Je ne sais pas vraiment, je suis pas un pro du C++ et je sais encore moins faire des DLL proprement...
Merci d'avance pour votre aide, j'attend votre réponse avec impatience :wink: