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 :

Manipulation d'objets COM de WORD en DotNet


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Par défaut Manipulation d'objets COM de WORD en DotNet
    Salut

    je travaille sur un programme C# qui inclu Word (automation).
    J'ai besoin de récupérer les propriétés caption et name des objets Word (textbox, bouton, ...) pour pouvoir travailler dessus.
    Malheureusement les objets de Word sont de type System.__COMObject et sont incompatibles avec les objets du DotNet (Object).

    Une idée ?
    Merci
    Thomas

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    ne peux tu les caster dans le type qui convient et qui est fourni par Word ?

    The Monz, Toulouse

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Par défaut
    salut

    et non le caste est impossible !

    Message d'erreur lors de l'essai de caste :

    Impossible d'effectuer un cast d'un objet COM de type 'System.__ComObject' en type de classe 'System.Windows.Forms.TextBox'. Les instances de types qui représentent des composants COM ne peuvent pas être castées en types différents représentant des composants COM ; toutefois, elles peuvent être castées en interfaces tant que le composant COM sous-jacent prend en charge les appels QueryInterface pour l'IID de l'interface.

    ca fait 3 jours que je rame !!!
    une autre idée ?
    merci
    Thomas

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Salut

    Aurais tu le code qui te permet de "récuperer" ces objets ?

    The Monz, Toulouse

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Par défaut
    d'abord je créé inlineshape

    Microsoft.Office.Interop.Word.InlineShape zone;

    puis je lui dit que je veux que ce soit une textbox

    object ControlName = "Forms.TextBox.1";

    ensuite je defini un range (en gros je lui donne l'endroit où je veux poser la textbox sur le document)

    object temp = MonDocWord.Application.Selection.Range.End;
    object Rang = MonDocWord.Range(ref temp, ref temp);

    et enfin j'ajoute le contrôle

    zone = MonDocWord.InlineShapes.AddOLEControl(ref ControlName, ref Rang);

    maintenant ce que je voudrais faire c'est atteindre la propriété name par exemple
    dans une macro word, on peut l'atteindre comme ça :

    zone.OLEFormat.Object.name = "nouveau_nom"

    et ça marche
    mais pas dans le code c# car la propriété name n'existe pas dans le context actuel, ou un truc de ce genre !

    et en faisant un caste du style :

    textbox zone2 = (textbox)zone;

    j'ai le message d'erreur que j'ai posté tout à l'heure

    merci pour ton aide
    Thomas

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    quand tu fais un AddOlecontrol, tu recuperes un Shape

    donc, tu peux faire Shape.Name pour en obtenir le nom

    Je pense que tu dois caster peut-etre en Shape et non en textbox

    Essayes

    The Monz, Toulouse

Discussions similaires

  1. Manipulation, d'objet word dans une feuille Excel
    Par lolo-tine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2013, 15h51
  2. [PHP 4] Problème édition Word avec objet COM en PHP4.4.x
    Par Yanis77 dans le forum Langage
    Réponses: 0
    Dernier message: 01/02/2012, 16h28
  3. Comment libérer proprement un objet COM en dotnet.
    Par sybaris dans le forum C++/CLI
    Réponses: 0
    Dernier message: 15/06/2009, 16h04
  4. [COM] Documentation fonctionnalités "objet COM" / word
    Par Finidrigoler dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/08/2006, 16h27
  5. [COM] Pilotage de Word à partir d'un objet COM
    Par Sangdrax1604 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/06/2006, 16h04

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