Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2007, 14h28   #1
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 0
Points : 0
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 :
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 :
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 :
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 :

Citation:
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
alick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2007, 22h23   #2
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Salut,

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

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 10h21   #3
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 0
Points : 0
Salut,

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

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

Code :
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 :
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 +
alick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 17h06   #4
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 0
Points : 0
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 :
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 :
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+
alick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 00h32   #5
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Des pistes? http://www.google.fr/search?hl=fr&q=...bookmark&meta=
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h39.


 
 
 
 
Partenaires

Hébergement Web