XL pour MAC VBA Connexion à Word

Gllou06

XLDnaute Nouveau
Bonjour

Le code ci-dessous fonctionne très bien sous Excel 2013 sur mon PC mais, une fois le classeur copié sur MAC (Excel 2016), celui-ci ouvre la fenêtre de sélection d'un document mais pas le document voulu.

La macro plante au niveau du 1er "set" ; Problème de syntaxe ?

Pouvez-vous m'éclairer ?

Dim wApp As Word.Application
Dim oDoc As Word.Document
'Affectation des données aux variables
Set wApp = New Word.Application
Set oDoc = wApp.Documents.Add(ThisWorkbook.Path & "\" & "DOCAUTO01-CourrierDevis.docx")

La macro prend des infos sur mon tableur et rempli des champs sur Word. La syntaxe ci-dessous vous parait-elle correcte ?
oDoc.Bookmarks("RefAdress1").Range.Text = ActiveWorkbook.ActiveSheet.Range("B2") 'Nom Etablissement
oDoc.Bookmarks("RefAdress2").Range.Text = ActiveWorkbook.ActiveSheet.Range("BA2") 'Civilité responsable
oDoc.Bookmarks("RefAdress3").Range.Text = ActiveWorkbook.ActiveSheet.Range("BB2") 'Nom responsable
oDoc.Bookmarks("RefAdress4").Range.Text = ActiveWorkbook.ActiveSheet.Range("AZ2") 'Titre responsable

Merci de votre réponse
 

job75

XLDnaute Barbatruc
Bonjour Gilou06,

Ceci fonctionne bien sur mon PC mais je ne sais pas sur MAC :
Code:
Dim wApp As Object
Dim oDoc As Object
Set wApp = CreateObject("Word.Application")
wApp.Visible = True
Set oDoc = wApp.Documents.Add(ThisWorkbook.Path & "\" & "DOCAUTO01-CourrierDevis.docx")
oDoc.Bookmarks("RefAdress1").Range.Text = ActiveWorkbook.ActiveSheet.Range("B2") 'Nom Etablissement
oDoc.Bookmarks("RefAdress2").Range.Text = ActiveWorkbook.ActiveSheet.Range("BA2") 'Civilité responsable
oDoc.Bookmarks("RefAdress3").Range.Text = ActiveWorkbook.ActiveSheet.Range("BB2") 'Nom responsable
oDoc.Bookmarks("RefAdress4").Range.Text = ActiveWorkbook.ActiveSheet.Range("AZ2") 'Titre responsable
A+
 

job75

XLDnaute Barbatruc
Bonjour Gilou06,

Pour qu'il n'y ait toujours qu'une seule instance de Word ouverte :
Code:
Dim wApp As Object, oDoc As Object
On Error Resume Next
Set wApp = GetObject(, "Word.Application") 'si Word est déjà ouvert
On Error GoTo 0
If wApp Is Nothing Then Set wApp = CreateObject("Word.Application")
wApp.Visible = True
Set oDoc = wApp.Documents.Add(ThisWorkbook.Path & "\" & "DOCAUTO01-CourrierDevis.docx")
oDoc.Bookmarks("RefAdress1").Range.Text = ActiveSheet.Range("B2") 'Nom Etablissement
oDoc.Bookmarks("RefAdress2").Range.Text = ActiveSheet.Range("BA2") 'Civilité responsable
oDoc.Bookmarks("RefAdress3").Range.Text = ActiveSheet.Range("BB2") 'Nom responsable
oDoc.Bookmarks("RefAdress4").Range.Text = ActiveSheet.Range("AZ2") 'Titre responsable
J'ai supprimé ActiveWorkbook, inutile avec ActiveSheet...

A+
 

job75

XLDnaute Barbatruc
Re,

Exécutez plusieurs fois de suite le code.

On peut vérifier que l'instance Word contient tous les documents ouverts :
Code:
Dim wApp As Object, oDoc As Object, d As Object, mes As String
On Error Resume Next
Set wApp = GetObject(, "Word.Application") 'si Word est déjà ouvert
On Error GoTo 0
If wApp Is Nothing Then Set wApp = CreateObject("Word.Application")
wApp.Visible = True
Set oDoc = wApp.Documents.Add(ThisWorkbook.Path & "\" & "DOCAUTO01-CourrierDevis.docx")
oDoc.Bookmarks("RefAdress1").Range.Text = ActiveSheet.Range("B2") 'Nom Etablissement
oDoc.Bookmarks("RefAdress2").Range.Text = ActiveSheet.Range("BA2") 'Civilité responsable
oDoc.Bookmarks("RefAdress3").Range.Text = ActiveSheet.Range("BB2") 'Nom responsable
oDoc.Bookmarks("RefAdress4").Range.Text = ActiveSheet.Range("AZ2") 'Titre responsable
'---
For Each d In wApp.Documents
  mes = mes & vbLf & d.Name
Next
MsgBox Mid(mes, 2), , "Documents Word ouverts"
A+
 

Gllou06

XLDnaute Nouveau
Merci (tardif pour cause de congés) pour cette réponse.
Tout ceci fonctionne très bien sur Excel 2013 PC mais pas sur Excel 2016 MAC ! (apparemment à cause des activeX qui ne sont pas pris en charge sur Apple).
A ce jour, seule solution : je retourne sur mon PC. Merci quand même
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 280
Membres
103 507
dernier inscrit
tapis23