Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
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 13/08/2007, 12h24   #1
Invité de passage
 
Inscription : mai 2007
Messages : 33
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 33
Points : 1
Points : 1
Par défaut Ligne de code pour tester si un doc word bien precis est ouvert

Bonjour à tous

j'ai écris un bout de code vba-excel-word qui permet de copier une plage sur une feuille excel et la coller en image metafichier sous le document que j'ai nommé "Templates.doc" sous word. Si ce document "Templates.doc" est déjà ouvert (une premier copier coller y a déjà été effectué) alors la seconde fois ou on lance la macro, le collage doit se faire à la suite dans le document word.

l'algo est assez simple

si le document "Templates.doc" n'est pas ouvert alors

ouvrir

coller

sinon

coller

finsi


pour l'instant ce que j'ai c'est plutot

si une instance de word n'est pas ouverte alors

ouvrir

coller

sinon

coller

finsi


et le code est celui ci:

Code :
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
38
39
40
41
42
43
44
45
46
47
48
49
Sub t()
 
On Error Resume Next
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
 
Set WordApp = GetObject(, "Word.Application")                                              '-- prends comme objet l'application word deja ouverte
 
If Err.Number <> 0 Then                                                                                 '-- si il y en a pas d'ouverte alors  Err.Number <> 0 et on execute les étapes ci dessous
 
                                         Set WordApp = CreateObject("Word.Application")     '-- ouvre une session Word
 
                                         WordApp.Visible = True                               '-- le laisse visible
 
                                         Set WordDoc = WordApp.Documents.Add    '-- crée un nouveau document
 
                                          WordDoc.SaveAs "C:\Templates.doc"           '--l'enregistre dans C sous le nopm Templates.doc
 
                                          WordDoc.PageSetup.Orientation = wdOrientLandscape   '--passe l'orientation de la page en paysage
 
                                          Range("A1:T41").Copy                                   '-- sous Excel copie cette plage
 
                                           WordApp.Selection.PasteSpecial , DataType:=wdPasteMetafilePicture, Placement:=wdInLine  '-- colle en image meta
 
                                           WordApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
 
                                           Application.CutCopyMode = False
 
 
                                     Else                                                                           '--si une application word est ouverte alors Err.Number = 0
 
                                           Set WordDoc = GetObject("C:\Templates.doc")   '-- pas important 
 
                                           WordDoc.Activate                                                '-- pas important 
 
                                           Range("A1:T41").Copy                                          '-- sous Excel copie cette plage                                      
 
                                           WordApp.Selection.PasteSpecial , DataType:=wdPasteMetafilePicture, Placement:=wdInLine   '-- colle en image meta
 
                                           WordApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
 
                                           Application.CutCopyMode = False
 
 
 
   End If
 
 
End Sub
Mon probléme est le suivant, au lieu de tester si une application word est déja ouverte par l'instruction

Code :
Set WordApp = GetObject(, "Word.Application")                                              '-- prends comme objet l'application word deja ouverte
je veux que une instruction qui teste si le document "Templates.doc" est ouvert. j'ai assayé

Code :
Set WordApp = GetObject("Templates.doc", "Word.Application")
mais cela ne marche pas; J'aimerais donc savoir comment je peux l'ecrire.

Merci d'avance de m'aider
bourbe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 12h47   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Je cherche pour trouver mieux, mais dans un premier temps regardes si ce code peut t'aider


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Sub TestDocOpen()
Dim oDoc As Document
For Each oDoc In Word.Documents
    Debug.Print oDoc.Name
 
If oDoc.Name = "opendoc.doc" Then
    MsgBox "doc close"
Else
    MsgBox "doc open"
End If
Next oDoc
 
End Sub
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli 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 04h27.


 
 
 
 
Partenaires

Hébergement Web