Вроде бы, решение найдено. Раз надо создать буфер обмена, а прямые API-функции с этим не справляются, то и надо переложить эту работу "на плечи" того приложения, которое может это сделать. Например, MS Excel.
X++:
ComExcelDocument_RU excel;
COM comRange
;
excel = new ComExcelDocument_RU();
excel.newFile("",true);
comRange = excel.findRange("A1");
comRange.value2("Инициализация буфера обмена");
comRange.copy();
Т.е. копируем в буфер обмена содержимое не пустой (в смысле, заполненной) ячейки Excel, что, собственно, и приводит к инициализации буфера обмена.
Не скажу, что эта операция на 100% исключила возникновение ошибки копирования в буфер обмена, но теперь это не постоянная головная боль, а отдельные "случайные" эпизоды.
Да, если копирование происходит в методе класса ComExcelDocument_RU, то там все проще. Ведь Range определяется там же, в методе вставки. Вот непосредственно перед вставкой данных и надо в найденный Range вставить любое значение и выполнить метод range.copy().