I'm facing a problem with a MS Word DDE Automation controlled by our CRM system.
The setup
Base for the document created is a Word .dot template which fires a macro on Document.New. Inside this macro I create a .Net component registered for COM.
Set myCOMObject = CreateObject("MyCOMObject")
The component pulls some data from a database and hands string values which are assigned to Word DocumentVariables.
Set someClass = myCOMObject.GetSomeClass(123)
ActiveDocument.Variables("docaddress") = someClass.GetSenderAddress(456)
All string values returned from the component are encoded in UTF-16 (codepage 1200).
What happens
The problem arises when the CRM system calls Word to create a new doc by DDE (winword.exe /n /dde): The string values from the component are turned into UTF-8 encoded strings.
All the static text inside the template stays nicely encoded in UTF-16 - example the umlaut ü inside my DocumentVariables is turned into c3 b0 while it stays fc for the rest of the document (checked file in hex editor).
If I'm creating a document from a template with the same macro functionallity directly (without DDE) all strings are fine; i.e. are encoded in UTF-16.
Side effects If I create a new document from my template, keep this document open and create a new document controlled by DDE the characters are encoded correctly!
This also works the other way round: creating a DDE controlled document first breaks the character encoding when creating a second document directly.