[xl2010][VBA] test document word ouvert
bj51
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 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
- Signer un document word - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
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