Excel VBA PC => MAC

Excel VBA PC => MAC - VB/VBA/VBS - Programmation

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 ?

Reply

Marsh Posté le 29-11-2007 à 12:09:09   

Reply

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

Reply

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()  
  Dim PlageACopier As Range  
  Dim AppWord As Object  
  Set PlageACopier = Range("mon tableau" )  
  Set AppWord = CreateObject("Word.Application" )  
  PlageACopier.Copy  
  With AppWord  
     .Visible = True  
     .Documents.Open (ThisWorkbook.Path & "\Essai.doc" )  
     .Selection.Paste  
  End With  
End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed