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

VB.NET Discussion :

Conversion .docx to .doc (automation)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 90
    Par défaut Conversion .docx to .doc (automation)
    Bonjour,

    j'essaie de convertir un .docx en .doc (.docx -> .rtf -> .doc) en utilisant l'automation avec wordcnv.dll mais cela ne fonctionne pas Qui peut me dire où est mon erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Declare Function foreignToRtf Lib "wordcnv.dll" Alias "ForeignToRtf" (ghszFile As IntPtr, ByRef pstgForeign As Object, ghBuff As IntPtr, ghszClass As IntPtr, ghszSubset As IntPtr, lpfnOut As Long) As Long
        '
        Declare Function rtfToForeign Lib "wordcnv.dll" Alias "RtfToForeign" (ghszFile As IntPtr, ByRef pstgForeign As Object, ghBuff As IntPtr, ghszClass As IntPtr, ghszSubset As IntPtr, lpfnOut As Long) As Long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        'Convert .docx to .doc
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Try
                oWord = CreateObject("Word.Application")
                oWord.Visible = True
                oDoc = oWord.Documents.Add("C:\Utilisateurs\lculot\Documents\Exemple.docx")
                oDoc.foreignToRtf()
                oDoc.rtfToForeign()
            Catch ex As Exception
                MessageBox.Show("Impossible de convertir le document")
            End Try
        End Sub

  2. #2
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Bonjour,

    Dans ton catch, si tu met il te retourne quoi comme erreur ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 90
    Par défaut
    System.Runtime.InteropServices.COMException(0x800A141F): Word n'a pas pu lire ce document. Il est peut-être corrompu.
    Essayez l'une ou plusieurs des opérations suivantes :
    * Ouvrez et réparez le fichier
    * Ouvrez le fichier avec le convertisseur Récupération de texte.
    à Microsoft.Office.Interop.WordDocument.Add(Object& Template, Object& New Template, Object& DocumentType, Object& Visible)
    à OuvertureWord.Form1.Button2_Click(Object sender, EventArgs e) dans C:\Users\lculot\Documents\OuvertureWord\OuvertureWord\Form.vb:ligne44

  4. #4
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Avec une petite recherche sur Google de tonexception, je suis tombé sur ceci :

    http://social.msdn.microsoft.com/for...5-60bc2ebdbf54

    Et il s'agirait peut être d'une erreur du path du templates de ton document.
    Vérifie l'emplacement de ton docx par rapport à ton code.

    Peut être rajouter la condition avant traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if file.exist(tonPath) then
     'Ton traitement
    end if

  5. #5
    Membre chevronné
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Par défaut
    Bonjour,

    La question est idiote, mais je me sens obligé de la poser : Quelle version de wordcnv.dll utilisez vous ? Vous êtes vous assurée que cette version est apte à lire du format DOCX ?

    Ca permet d'éliminer les pistes les plus évidentes...

  6. #6
    Membre éprouvé Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Par défaut
    Normal que cela ne fonctionne pas, "Add" sert a cree un nouveau document word dans "oWord" (qui represente un programme word).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Faux
    'oDoc = oWord.Documents.Add("C:\Utilisateurs\lculot\Documents\Exemple.docx")
    oDoc = oWord.Documents.Add( )
    Oubliez donc "Add", et utilisez plutot "Open" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Ouverture normale :
    oDoc = oWord.Documents.Open("C:\Utilisateurs\lculot\Documents\Exemple.docx")
    'Ouverture en lecture seulle :
    oDoc = oWord.Documents.Open("C:\Utilisateurs\lculot\Documents\Exemple.docx", ReadOnly:=True)
    Une fois le document ouvert, il faut l'enregistrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDoc.SaveAs("C:\Utilisateurs\lculot\Documents\Exemple.doc", WdSaveFormat.wdFormatDocument)
    J'espere vous avoir au moins permis d'ouvrir et enregistrer votre document. Je ne sais cependant pas si le document enregistré sera au format word 2003 ou s'il restera au format 2007. Il faudra peut être jouer avec les nombreux autres arguments de la fonction "SaveAs"...
    Je n'ai testé aucunes de ces lignes, il est donc possible qu'il y ait quelques erreurs. Voici la source dont je me suis inspiré : http://msdn.microsoft.com/fr-be/libr...(v=vs.80).aspx

Discussions similaires

  1. Conversion docx en doc
    Par alainpinpin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/07/2011, 10h30
  2. [WD-2003] conversion .rtf vers .doc
    Par locs dans le forum VBA Word
    Réponses: 4
    Dernier message: 17/09/2009, 21h18
  3. [WD-2007] Problème de conversion docx en pdf
    Par sjhok n a dans le forum Word
    Réponses: 1
    Dernier message: 26/08/2009, 22h06
  4. [WD-2007] Pb définition: conversion docx vers Tiff
    Par Sylv75 dans le forum Word
    Réponses: 4
    Dernier message: 11/05/2009, 19h30
  5. conversion des files .DOC en files PDF
    Par INFOAPPRENDISTA dans le forum Word
    Réponses: 5
    Dernier message: 20/03/2007, 20h18

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