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

ASP Discussion :

Problème de Signet ms word depuis une page asp


Sujet :

ASP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème de Signet ms word depuis une page asp
    Bonjour à tous,

    Afin de modifier un document ms word, autrefois piloté par une application
    ms access,
    Je souhaiterai adapter les deux fonctions access suivante en ASP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Write1(wdApp As Word.Application, str As Variant, Tag As String)
        With wdApp
            If Len(str) <> 0 Then
                If wdApp.ActiveDocument.Bookmarks.Exists(Tag) Then
                    .Selection.Goto What:=wdGoToBookmark, Name:=Tag
                    .Selection.TypeText str
                End If
            End If
        End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Write2(wdApp As Word.Application, str As Variant, Tag As String)
        Dim RangeBook As Word.Range
        If wdApp.ActiveDocument.Bookmarks.Exists(Tag) Then
            Set RangeBook = wdApp.ActiveDocument.Bookmarks(Tag).Range
            RangeBook.Text = str
            wdApp.ActiveDocument.Bookmarks.Add Tag, RangeBook
        End If
    End Sub
    Et mon code asp est le suivant :

    Code : 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
    ' --------------------------------------------------
    Function Write1(WordDoc, str, Tag)
            If Len(str) <> 0 Then
                If WordDoc.Bookmarks.Exists(Tag) Then
                    WordDoc.Goto(wdGoToBookmark, , , Tag).Select
                    WordDoc.TypeText str
                End If
            End If
    End Function
    ' --------------------------------------------------
    Function Write2(WordDoc, str, Tag)
        Dim RangeBook
        If WordDoc.Bookmarks.Exists(Tag) Then
            Set RangeBook = WordDoc.Bookmarks(Tag).Range
            RangeBook.Text = str
            WordDoc.Bookmarks.Add Tag, RangeBook
        End If
    End Function
    ' --------------------------------------------------
    Dans la fonction Write1, le test if est validé car le signet existe bien dans mon document Word,
    mais en sortie j'ai l'erreur suivante :

    Microsoft Word error '800a13ed'

    Ce signet n'existe pas.

    /31/web/31-asp/31-00/createDoc.asp, line 233
    Je pense que l'erreur doit venir d'une mauvaise utilisation de la méthode Goto(wdGoToBookmark, , , Tag), mais je n'en sais pas plus.

    Si quelqu'un pouvait m'aider à résoudre ce problème.

    Merci d'avance pour votre aide

    Ajout des balises de code

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Interessant, mais j'ai des doutes quand à la portabilité dans du VBScript.
    Ceci dit que passes-tu dans "WordDoc"?

    A+

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Tout d'abord, merci de prêter attention à mon problème.

    Dans WordDoc, je lui passe un document word, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ' Variables pour les divers chemins de fichier
    DirD = "C:\testInit\suite\"
    ' Déclaration
    dim WordApp, WordDoc
    ' Création de l'objet application word
    Set WordApp = CreateObject("word.application")
    ' Mode invisible
    WordApp.Application.Visible = false
    ' Ouverture
    Set WordDoc = WordApp.Documents.Open(DirD & "temp.doc")
    Pour donner plus de précision sur mon problème, je souhaite rechercher un signet dans un document ms word
    et une fois trouver, ajouter du texte après.

    Pour donner un exemple, mon document temp.doc est composé de l'élément "Telephone :".
    J'aimerai repérer ce signet dans le document et rajouter le contenu d'une variable après.

    Je suis partie sur cette piste là, cela ne semble pas fonctionner, mais il ne me retourne plus d'erreur.

    Code : 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
     
    Write1 WordDoc, "0102030405", "Téléphone :"
    ' --------------------------------------------------
    Function Write1(WordDoc, str, Tag)
            If Len(str) <> 0 Then
                Dim WordRange
                Dim Mypar1
                Dim MyRange1
                If WordDoc.Bookmarks.Exists(Tag) Then
                    Set RangeBook = WordDoc.Bookmarks(Tag).Range
                    Set WordRange = WordDoc.Goto(wdGoToBookmark, , , Tag).range
                    WordRange.InsertAfter str
                    'WordRange.Text = str
                    'WordDoc.Bookmarks.Add Tag, WordRange    
                End If
            End If
    End Function
    Pour répondre à ta question sur la faisabilité de tout cela en vbscript, je veux croire que si il est possible de créer un document en asp,
    il doit sûrement être possible de le modifier.

    A +

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Rebonjour,

    J'arrive maintenant
    à insérer du texte derrière un signet.
    Le problème venait d'une mauvaise utilisation de la méthode Bookmarks.
    Code : 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
     
    Tag = "Tel"
    str = "0102030405"
     
    Response.write "Test ..." & "<BR>"
    Response.write WordDoc.Bookmarks.Exists(tag) & "<BR>"
     
    ' Test presence
    If (WordDoc.Bookmarks.Exists(tag)) Then
            Response.write WordDoc.Bookmarks.Exists(Tag) & "<BR>"
     
            Set WordRng = WordDoc.Bookmarks.Item(Tag).Range
            WordRng.InsertAfter(str)
     
            WordDoc.SaveAs DirD & "test_signet.doc"
            Response.write "Document Enregisté ..." & "<BR>"
    End If
    Résultat dans le fichier word

    Bureau :
    Téléphone :
    0102030405Portable :

    Il insère bien mais le texte passe à la ligne.

    Et avec une fonction ça donne

    Code : 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
     
    Write1 WordDoc, "Nom", "Martin"
    Write1 WordDoc, "Prenom", "Pierre"
    Write1 WordDoc, "Fonction", "Testeur"
    Write1 WordDoc, "Bureau", "B012"
    Write1 WordDoc, "Tel", "0102030405"
     
    ' Fonction
    Function Write1(WordDoc, Tag, str)
        ' Test presence
        If (WordDoc.Bookmarks.Exists(tag)) Then
                Response.write WordDoc.Bookmarks.Exists(Tag) & "<BR>"           
                Set WordRng = WordDoc.Bookmarks.Item(Tag).Range
                WordRng.InsertAfter(str)
                Set WordRng = Nothing
                Response.write "-> ..." & "<BR>"
        End If
    End Function
    Résultat dans le fichier word

    Nom :

    MartinPrénom : Pierre

    Fonction :Testeur

    Test :
    Bureau :B012

    Téléphone :

    0102030405Portable :

    Je pense que cela doit sûrement venir de l'objet Range, et qu'il doit probablement exister une méthode pour controler la position du texte

    Si quelqu'un à une idée merci d'avance

    A+

  5. #5
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506

Discussions similaires

  1. Envoie de mail automatique depuis une page ASP
    Par ravidat dans le forum ASP
    Réponses: 3
    Dernier message: 30/05/2009, 13h25
  2. Poster un Email depuis une page ASP.net 2.0
    Par Delphi-ne dans le forum ASP.NET
    Réponses: 4
    Dernier message: 30/04/2008, 11h18
  3. Réponses: 2
    Dernier message: 25/02/2008, 13h28
  4. Récupérer une date depuis une page ASP dans une BDD
    Par franckrichard57 dans le forum ASP
    Réponses: 2
    Dernier message: 22/03/2007, 11h31

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