IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[2.0] Automation office


Sujet :

C#

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut [2.0] Automation office
    Bonjour à tous,

    J'ai un soucis pour exploiter un fichier Excel.

    J'arrive à ouvrir Excel (2003 SP2), à ouvrir le fichier concerné, à récupérer les différents classeurs mais par contre, impossible d'accéder à ses propriétés:

    Différents codes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Référence
    using Excel = Microsoft.Office.Interop.Excel;
    using Office = Microsoft.Office.Core;
     
    // Ouverture
    Excel.ApplicationClass m_oExcelApp = new Excel.ApplicationClass();
    Excel.Workbook m_oWorkbook = m_oExcelApp.Workbooks.Open(m_oXLSFile.FullName, 0, false, 5, "", "", false,
                Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
     
    // Récupération des propriétés
    Excel.CustomProperties properties = (Excel.CustomProperties)(m_oWorkbook.CustomDocumentProperties);
    Lors du cast, l'exception renvoyée est:
    Citation Envoyé par Microsoft
    Impossible d'effectuer un cast d'un objet COM de type 'System.__ComObject' en type d'interface 'Microsoft.Office.Interop.Excel.CustomProperties'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{00024452-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante : Cette interface n'est pas prise en charge (Exception de HRESULT : 0x80004002 (E_NOINTERFACE)).
    Ca me fait la même erreur avec les propriétés par défaut du document:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (Office.DocumentProperties)m_oWorkbook.BuiltinDocumentProperties
    Je n'ai qu'une version de Office, la 2003 SP2 et j'utilise les assembly com "Microsoft Excel 11.0 Object Library" et "Microsoft Office 11.0 Object Library"

    Quelqu'un a une idée?

    Merci beaucoup

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    En fait je dois exporter une application VBA en C#.

    Dans le projet VBA, ça utilise les mêmes librairies COM et ça fonctionne très bien.

    Je comprends pas du tout ce qui peut se passer...

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Merci beaucoup,

    J'ai installé Microsoft Visual Studio 2005 Tools For Office 2003.

    Est-ce que je doit utiliser que ça désormais? Ou c'est une library additionnelle?

    En effet, il y a une interface Workbook dans l'espace de nom Introp.Excel mais également dans Tools.Excel... il faut privilégier laquelle?

    J'ai tenté de n'utiliser plus que les Tools, mais il n'y a rien pour lancer Excel et ouvrir un fichier, etc...
    A moins qu'il faille utiliser le namespace "Microsoft.VisualStudio.Tools.Applications.Runtime"?

    Quelqu'un aurai un exemple histoire d'y voire plus claire?

    Merci beaucoup

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Ma précédente réponse n'était pas claire ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Si si c'était clair.

    BuiltInDocumentProperties renvoit un object
    Un objet COM, System.__ComObject pour être plus précis.

    Mais comment l'exploiter?

    Dans la doc on peut trouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Office.DocumentProperties documentProperties1 =        (Office.DocumentProperties)this.BuiltinDocumentProperties;
     
    ou
     
    Office.DocumentProperties properties = 
    (Office.DocumentProperties)this.CustomDocumentProperties;
    Déjà c'est quoi ce this? Ces exemples sont issus d'une macro?

    A la place de ce "this", je mets le Workbook que je viens d'ouvrir, ce qui me semble similaire dans l'instruction, mais l'erreur décrite dans le premier message de ce sujet survient systématiquement...

    Je suis un peu perdu là.

    Merci beaucoup

    A bientôt
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    J'ai fait un petit test en VB6 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim oExcelApp As New Excel.Application
    Dim oWorkbook As Excel.Workbook
    Set oWorkbook = oExcelApp.Workbooks.Open("fichier.xls")
    Dim oDocs As DocumentProperties
    Set oDocs = oWorkbook.CustomDocumentProperties
    Résultat: Erreur d'exécution 13 (type incompatible), message VB similaire au message .NET (E_NOINTERFACE).

    Ce même code exécuté dans une macro Excel fonctionne très bien, avec les mêmes références dans le projet.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    J'ai eu le meme problème sous Vista.
    En fait, dans le registre, dans HKEY_CLASSES_ROOT\Interface, les clés qui étaient en erreur dans le programme n'étaient pas accessibles ( même pour l'administrateur ). Elles sont donc impossible à supprimer.
    Il a donc fallu pour chacune des clés provoquant l'erreur redéfinir le propriétaire et affecter les droits en controle total ( meme si lecture seule doit suffire ).
    Attention, les clés ont des sous clés dont il faut aussi modifier les droits ! ( elle sont pas forcément visible au premier coup, dans ce cas, redémarrer regedit une fois que la clé parente a été modifiée ! )

Discussions similaires

  1. Services windows et automation Office 2010
    Par lavoyech dans le forum Services Windows
    Réponses: 0
    Dernier message: 02/02/2015, 16h03
  2. Delphi 2007 - OLE Automation Office 2003 & 2007
    Par arkhamon dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2010, 12h30
  3. Visual Studio 2005 Tools for Office : L'automation Office en .NET
    Par Marie-Hélène dans le forum Visual Studio
    Réponses: 0
    Dernier message: 28/09/2005, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo