[xl2010][VBA] test document word ouvert

Fermé
bj51 - 30 août 2011 à 13:22
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 31 août 2011 à 10:45
Bonjour,

Je cherche à copier des données d'un classeur excel ouvert dans un document word ouvert. Pour cela, j'utilise une UserForm dans Excel qui permet à l'utilisateur de choisir quelles feuilles du classeur il veut copier dans quel document word ouvert. J'ai un Initialize() qui fonctionne :
Private Sub UserForm_Initialize()
    ' Déclarations
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim xlFeuil As Excel.Worksheet
    
    Set wdApp = GetObject(Class:="Word.Application")
    wdApp.Visible = True
    
    ' Remplissage de la ComboBox.
    Me.cbxChoixDocument.Clear
    ' ***manque un test de document ouvert ici
    If IsObject(wdApp) Then
        For Each wdDoc In wdApp.Documents
            Me.cbxChoixDocument.AddItem wdDoc.Name
        Next wdDoc
    Else
        MsgBox "Aucun document word ouvert. Ouvrez le document dans lequel vous souhaitez insérer les feuilles de mesure et placez le curseur à l'endroit désiré.", vbExclamation, "Pas de document word ouvert"
        Exit Sub
    End If
    
    ' Remplissage de la ListBox.
    For Each xlFeuil In ActiveWorkbook.Worksheets
        If xlFeuil.Name <> "Données oct" And xlFeuil.Name <> "Données tiers" And xlFeuil.Name <> "Infos générales" And xlFeuil.Visible Then
            Me.lbChoixFiches.AddItem xlFeuil.Name
        End If
    Next xlFeuil
    
    ' Mise en place du focue à l'ouverture du formulaire.
    Me.cbxChoixDocument.SetFocus
End Sub


Mon problème : le test pour vérifier qu'un document word est ouvert ne fonctionne pas : la fonction GetObject crée obligatoirement une instance de word, qui fait que le test IsObject est toujours vrai. Comment vérifier qu'il n'existe pas de document ouvert ?
Précision : j'ai remarqué que la ligne wdApp.Visible = True est obligatoire sinon la boucle de recherche des documents ne fonctionne pas, quelqu'un sait me dire pourquoi ?

Cordialement,
A voir également:

3 réponses

Up,

Quelqu'un a-t-il une idée pour au moins éviter une erreur si aucun document word n'est ouvert ? (c'est l'instruction GetObject qui renvoie alors une erreur)

Cordialement,
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 31/08/2011 à 10:28
Bonjour,

Peut-être une piste: test Excel à adapter à Word en début de code
je n'en suis pas l'auteur

Function ClasseurEstOuvert(strNomFichierComplet As String) As Boolean 
  Set objExcel = New Excel.Application 
  With objExcel 
    ' L'instance d'Excel qui porte le fichier ne doit pas être visible 
    .Visible = False 
    .Workbooks.Open (strNomFichierComplet) 
    ' Si le classeur est déjà ouvert cette propriété sera à True 
    ClasseurEstOuvert = .Workbooks(1).ReadOnly 
    .Quit 
  End With 
   ' Ne pas oublier de supprimer la référence à Excel 
  ' sinon une autre instance fantôme hantera le système... 
  Set objExcel = Nothing 
 End Function

Michel
0
Merci, je vais tenter d'adapter, même si apparemment cette fonction nécessite un nom de fichier en entrée (que je n'ai évidemment pas si aucun document n'est ouvert).
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
31 août 2011 à 10:45
c'est uniquement une piste! si tu te trouves, merci de me renvoyer l'ascenseur :o)
0