[xl2010][VBA] test document word ouvert
bj51
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
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 :
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,
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:
- [xl2010][VBA] test document word ouvert
- Test performance pc - Guide
- Word 2013 - Télécharger - Traitement de texte
- Tableau word - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Signer un document word - Guide
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,
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,
Bonjour,
Peut-être une piste: test Excel à adapter à Word en début de code
je n'en suis pas l'auteur
Michel
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