Question concernant Borland C++ Builder 6 et Excel [Résolu]

Signaler
Messages postés
63
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
25 novembre 2005
-
Messages postés
1
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
26 avril 2005
-
Bonjour,

Je suis en stage et le sujet est d'extraire des données d'un logiciel pour les envoyer vers Excel afin d'imprimer ces même données. Le tout doit se faire en C++.
J'utilise donc Borland C++ Builder 6.

Pour l'instant, j'arrive à ouvrir Excel et à écrire dans les cellules, puis sauvegarder le tout et fermer Excel.

Pourtant lorque j'essaye d'ouvrir un fichier Excel, le message d'erreur suivant s'affiche:

" Project Project1.exe raised exception class EAccessViolation
with message 'Access violation at address 004045DA in module 'Project1.exe'. Read of address FFFFFFF4'. Process stopped. Use Step or Run to continue."

Pour mieux comprendre voici le code:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Variant vMSExcel;
Variant vFileName, vXLWorkbooks, vXLWorkbook;
Variant vWorksheet, vSheetName;
Variant vValue, vRange, vCell;
AnsiString aValue;

// Ouverture d'un classeur existant
vFileName = "c:\\Home\\Sources\\Cpp\\Test\\Excel\\classeur1.xls";

vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);

// Accéder à une feuille de calcul
vSheetName = "Feuil1";
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);

// Lire le contenu d'une cellule
vRange = "D3";
vCell = vWorksheet.OlePropertyGet("Range", vRange);
aValue = vCell.OlePropertyGet("Value");
Label1->Caption=aValue;
}

Le programme planterais donc à la ligne rouge...

Si quelqu'un à la moindre idée, qu'il réponde à ce poste...;

Merci d'avoir lu ce message.

3 réponses

Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
3 mai 2006

Salut,

Il semble que ça vienne de ta variable vMSExcel. Elle n'est pas initialisée quand tu fais appel à sa methode OlePropertyGet



Il faudrait l'initialiser avec :



vMSExcel = Variant::CreateObject("Excel.Application");

DvdMizo
Messages postés
63
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
25 novembre 2005
1
Merci!!!
Messages postés
1
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
26 avril 2005