Excel VBA PC => MAC - VB/VBA/VBS - Programmation
Marsh Posté le 29-11-2007 à 13:09:29
Le DDE (Dynamic Data Exchange) est une technique propre à Windows. Elle n'existe pas sous Macintosh. Il ne faut donc pas l'utiliser. Voir par exemple http://support.microsoft.com/kb/112427/en-us http://www.vsh.com/Documentation/ModFitLT/apndole.htm
Il faut utiliser OLE à la place. Voir http://members.aol.com/gerrathjen/ [...] undOLE.htm
Marsh Posté le 29-11-2007 à 13:15:27
J'ajoute, que même sous Windows, ce n'est pas une bonne idée d'utiliser DDE, car c'est une vieille technologie qui sera problablement bientôt abandonnée par M$crosoft.
L'automation (nouveau nom de OLE) est la méthode à utiliser.
Par exemple pour copier un tableau Excel dans Word, il suffit de faire :
Sub CopieExcelWord() |
Marsh Posté le 29-11-2007 à 12:09:09
Bonjour,
J'ai crée une macro VBA sur Windows-Excel 2003 qui ouvre un fichier Word et qui y copie des informations.
J'ai du l'installer sur un MAC (Word 2004 pour MAC), lorsque je l'utilise il me met l'erreur suivante :
"Erreur d'exécution 1004. La méthode 'DDEInitiate' de l'objet '_Application' a échoué"
Voilà mon code PC :
If Range("C6" ) = "Mémoire validé" Then
channelNumber = Application.DDEInitiate( _
app:="WinWord", _
topic:="C:\Dossier\Fichier1.doc" )
Else
channelNumber = Application.DDEInitiate( _
app:="WinWord", _
topic:="C:\Dossier\Fichier2.doc" )
End If
En étant allé voir sur MSDN, j'ai adapté mon code comme ceci :
If Range("C6" ) = "Mémoire validé" Then
Shell "SERVEUR:Dossier1:Dossier2:Dossier3:Fichier1"
Do
channelNumber = Application.DDEInitiate( _
app:="MSWord", _
topic:="SERVEUR:Dossier1:Dossier2:Dossier3:Fichier1" )
Loop Until TypeName(channelNumber) <> "Error"
Else
Shell "SERVEUR:Dossier1:Dossier2:Dossier3:Fichier2"
Do
channelNumber = Application.DDEInitiate( _
app:="MSWord", _
topic:="SERVEUR:Dossier1:Dossier2:Dossier3:Fichier2" )
Loop Until TypeName(channelNumber) <> "Error"
End If
Mais ça indique toujours la même erreur. Quelqu'un peut-il me dépanner ?