Проблема в том, что функции DDEClient.poke(Item, Data) оба значения передются как UNICODE.
Но внутри идет вызов функции DdeClientTransaction(), в которой значение pData передается как UNICODE, а параметр wFmt установлен в CF_TEXT (как ANSI текст). Соответственно, Excel неправильно интерпретирует передаваемые данные.
Как возможный вариант исправления, могу предложить написать dll-ку, которая будет перехватывать вызовы DdeClientTransaction и подменяеть параметр CF_TEXT на значение CF_UNICODETEXT.
Что касается 2003-го офиса, то, возможно, проблема в том же самом UNICODE, но только со стороны Excel. Возможно, он так же не умеет с ним работать.
Но это только гипотеза. Проверить не на чем