Я думаю, что я нашел причину разницы в поведении, которую вы описываете, и несколько способов получить аналогичный эффект через автоматизацию, как вы можете получить вручную.
Когда вы вводите что-то вручную, средство AutoCorrect/AutoFormat Word выполняет «прослушивание» того, что вы набираете, и когда оно распознает то, на что оно было запрограммировано, например три дефиса подряд, оно вмешивается и принимает соответствующее действие AutoCorrect/AutoFormat.
Однако при вызове автоматизации, если вы вставляете текст (через TypeText), который был бы автоматически отформатирован при вводе вручную, AutoFormating не происходит автоматически - я думаю, это может быть из-за того, что TypeText() обходит код Word который обрабатывает ввод с клавиатуры. Макросы Word, которые вызывают TypeText(), тоже ведут себя так. Но вы может вызывать его в коде автоматизации, например:
MSWord.Selection.TypeText('Some text');
MSWord.Selection.TypeText(#13#10);
MSWord.Selection.TypeText('---');
MSWord.Selection.Range.AutoFormat;
Я не тщательно тестируется выше других записей Автоформата, я бы ожидать, что работать с ними, так что я полагаю, это может иметь «преимущество» по сравнению с другими методами, которые вам не нужно знать о том, как на самом деле делается форматирование :-).
В качестве альтернативы, вы можете применить эффект вручную, как показано в другой ответ, или код, который я писал в моей первой попытки ответить на ваш д, а именно
Word.Selection.TypeText('Some text');
Word.Selection.TypeText(#13#10);
Word.Selection.InlineShapes.AddHorizontalLineStandard;
Word.Selection.TypeText('More text');
Надеюсь, между этими тремя возможностями, вы Я смогу получить эффект, который вам нужен.
Отличный результат! Я тестировал с '' --- '','' === '','' *** ''и многие другие, и многие, если не большинство правил автокоррекции/автоформата, работают (если они включены в настройках пользователей!). Некоторые не использовали, например. '(e)' должен указать знак евро в моей настройке, но этого не делать. Однако при вводе текста на клавиатуре. –
Спасибо, @Tom. Я все еще играю с ним, но сам столкнулся с некоторыми морщинами с расширениями AutoCorrect (в списке ниже флажка «Заменить текст во время ввода» на вкладке «Автозамены») - кажется, что до тех пор, пока графический интерфейс Word сразу получит контроль после моего Selection.Autoformat * и * я затем нажимаю клавишу пробела вручную, расширенный текст заменяется на короткий код. НО я еще не нашел ничего, что мог бы сделать в коде автоматизации, который может заменить клавишу пробела и получить расширенный автотекст. Я мог бы начать свой собственный вопрос о том, что ... – MartynA
MartynA, я думаю, что мы уже ответили на этот вопрос, так что было бы неплохо открыть новый специально для других вопросов, касающихся AutoCorrect/AutoFormat. Или у нас может быть более бесплатный чат на форуме Emb OleAutomation. –