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

Scripts/Batch Discussion :

erreur MethodAccesException


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de botLIA
    Homme Profil pro
    Étudiant en Licence 3 CDA
    Inscrit en
    Juin 2016
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant en Licence 3 CDA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 45
    Par défaut erreur MethodAccesException
    Bonjour,

    J'ai créer une Class qui va me permettre d'ouvrir plusieurs type de fichier, enfin pour l'instant il y a juste l'ouverture d'un fichier Excel :

    Code PowerShell : 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
    Class ouvertureFichier{
        # propriétés
        hidden [string]$userName
        hidden [string]$nomFichier
        hidden [string]$nomDossier
     
        # propriétés objet
        hidden [System.Object]$excel
        hidden [System.Object]$workbook
        hidden [System.Object]$worksheet
     
        # constructeur
        ouvertureFichier([string]$user, [string]$fichier, [string]$dossier){
            $this.userName = $user
            $this.nomFichier = $fichier
            $this.nomDossier = $dossier
        }
     
        # Méthodes
        [Void]ouvertureXLSX(){
            # Ouverture du fichier
            try{
                $this.excel = New-Object -ComObject Excel.Application
                $this.excel.Visible = $false
                $this.workbook = $this.excel.Workbooks.Open("C:\Users\$($this.userName)\Desktop\2imd\$($this.nomDossier)\$($this.nomFichier)");
                $this.worksheet = $this.workbook.Sheets.Item(1);
            }catch [Exception]{
                if ($_.Exception.GetType().Name -eq "COMException") {
                    Write-Host "Impossible d'ouvrir le fichier excel" -ForegroundColor Red
                }
            }
        }
     
        [System.__ComObject]getExcel(){
            return $this.excel
        }
    }

    Et ensuite tous se passe bien, sauf quand je veux récupérer mon objet :

    Nom : Capture.PNG
Affichages : 122
Taille : 23,4 Ko

    Je ne sais pas pourquoi cette erreur apparaît, j'ai recherché à ce sujet mais je n'ai pas trouvé ce genre de sujet, auriez-vous une idée ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je n'ai pas de Powershell 5 sous la main, mais as tu tenté de supprimer hidden sur ta variable excel ?
    Sinon, tente de modifier le type de retour [System.__ComObject] par le type de l'objet que tu retourne [System.Object]

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Hidden masque la propriété mais elle reste accessible.
    C'est bien le type de retour qui pose pb. J'étais curieux de savoir si une classe Powershell native pouvait encapsuler un objet COM.

    L'ajout de l'interface IDispose ne serait pas de trop dans ta classe, sinon tu créeras en mémoire une instance d'Excel à chaque création de ton objet/exécution de ton script.

Discussions similaires

  1. [PowerShell] Erreur à l'ouverture de Powershell
    Par wallace27 dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 23/02/2018, 19h03
  2. [PowerShell] Script powershell en erreur
    Par jobar38 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 23/03/2017, 10h34
  3. Erreur sur script Powershell
    Par TobiCar dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 14/10/2015, 11h09
  4. [C#] Erreur de Process PowerShell
    Par RedFish64 dans le forum C#
    Réponses: 0
    Dernier message: 21/02/2014, 10h54
  5. [PowerShell] Gestion d'erreurs Powershell
    Par Lekno dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 27/01/2014, 10h43

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