2012-05-14 3 views
0

Je fais appel de mon code C++ deux commandes DDE:mot appel DDE ignoré

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false) 
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false) 

commande premier modèle ouvert ws.dot et le document MyDoc.doc. Le modèle ws.dot contient la macro FillTemplateAttests que j'essaie d'exécuter dans un second appel de commande DDE. Ces deux commandes fonctionnaient correctement plus de 3 mois. Il y a quelques jours, la deuxième commande a interrompu le fonctionnement. Je n'ai rien à changer dans cette partie du code ou dans la macro FillTemplateAttests. Fonctionnement interrompu signifie que lorsque j'appelle la deuxième commande, rien ne se passe même lorsque ExecuteMacro call renvoie true (ce qui signifie que tout devrait être OK selon documentation). Lorsque je cours le même programme avec les mêmes documents ws.dot et MyDoc.doc sur un autre ordinateur tout est OK. Quand j'appelle la deuxième commande deux fois il est effectivement exécuté (mais une seule fois - premier appel est ignoré):

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false) 
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false) 
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false) 

Il me semble comme installation de Word est cassé. Pourriez-vous m'aider à me trouver le cœur du problème?

ADDENDA:

Quand j'appelle ces 3 commandes en ligne, tous sont exécutés:

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false) 
FormDde->DdeClientConv1->ExecuteMacro("[Beep]", false); 
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false) 

Répondre

0

Cela a résolu mon problème même quand je ne sais pas pourquoi:

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false) 
FormDde->DdeClientConv1->ExecuteMacro("[]", false); 
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false)