Центрировать текст в документе Word

10390
Tester101

Я работаю над сценарием, который создает документ Word, но не могу выровнять текст по центру. Вот пример кода, который я использую. (VBScript)

set objword = createobject("word.application") set doc = objword.documents.add set selection = objword.selection selection.Font.name = "arial"  selection.Font.size = "20" selection.Font.Bold = true selection.Paragraphs.Alignment = wdAlignParagraphCenter selection.typetext "This is the title that should be centered" selection.typeparagraph doc.saveas("testdoc.doc") objword.Quit set objword = nothing 

Я пробовал несколько разных вещей, которые я нашел через Google, но я не нашел ничего, что работает.

0

3 ответа на вопрос

1
fencepost

ОБНОВЛЕНИЕ: оказывается, что константы, такие как wdAlignParagraphCenter, на самом деле не могут быть определены, поэтому проверьте это в своем коде.

Самый простой способ получить пример того, как выполнить форматирование в Word (или Excel), - это фактически начать запись макроса, делать то, что вы хотите, затем остановить запись и взглянуть на содержимое макроса.

В вашем примере кода я не вижу никаких признаков того, что вы пытаетесь центрировать текст. Попробуйте что-то вроде selection.ParagraphFormat.Alignment = wdAlignParagraphCenter, хотя это извлечено из документации, а не из попытки.

После еще нескольких экспериментов значение wdAlignParagraphCenter должно быть равно 1, но из vbs это не так. Копаться в документации по VBScript, чтобы выяснить, где именно это определено и т. Д., Оставляют читателю в качестве упражнения.

Кроме того, будьте готовы прочитать документацию - справочник по Visual Basic, доступный из редактора кода Word, содержит информацию, которая, вероятно, будет вам полезна.

Помните, что (по крайней мере, из моего многолетнего опыта) в Word могут быть вещи, которые не имеют правильно функционирующего эквивалента кода, хотя, возможно, они улучшили ситуацию со времен WordBasic.

Запись макроса дает код, который вы предоставили здесь, но это не работает. Думаю, мне следовало перечислить разные вещи, которые я уже пробовал. Tester101 14 лет назад 0
Вы поместили это до или после того, как вставили текст? Я полагаю, что то, что вы делаете в предоставленном вами примере, эквивалентно открытию документа, изменению шрифта и вводу текста. Если вы измените центрирование до вставки текста, это может иметь значение - после вставки текста это изменит настройку для следующего абзаца. fencepost 14 лет назад 0
То, что я был бы счастлив, по крайней мере, тогда я увидел бы результат. Я пытался переместить его в коде, но ничто не было центрировано. Tester101 14 лет назад 0
Это обсуждение, включающее информацию о тех поздних связях констант, может представлять интерес: http://www.excelforum.com/excel-programming/530868-how-to-write-in-word-wo-reference.html fencepost 14 лет назад 0
2 комментария удалены / объединены: проблема в том, что `wdAlignParagraphCenter` на самом деле не определен вне Word, поэтому я подозреваю, что он либо выдает (игнорируется) ошибку, либо обрабатывается как 0, что, вероятно, является допустимым значением. Я нашел один пример, который явно определил это значение для использования 1, и попытался добавить это значение в команду; это сделало трюк. fencepost 14 лет назад 0
Это было на месте. установка selection.ParagraphFormat.Alignment = 1 сделал свое дело. Благодарю. Tester101 14 лет назад 0
0
Beaner
Set objWord = CreateObject("word.application") Set objDoc = objWord.Documents.Add Set objSelection = objWord.Selection objSelection.Font.Name = "arial" objSelection.Font.Size = "20" objSelection.Font.Bold = True objSelection.Paragraphs.Alignment = wdAlignParagraphCenter objSelection.typetext "This is the title that should be centered" objSelection.typeparagraph objDoc.saveas ("testdoc.doc") objWord.Quit Set objWord = Nothing 
Это не сработало для меня Tester101 14 лет назад 0
что ты получил? Я попробовал это с остальной частью вашего кода и получил хороший центрированный заголовок. Beaner 14 лет назад 0
Я отредактировал мой код выше, чтобы включить эту строку кода, но мой заголовок все еще остается выровненным. Tester101 14 лет назад 0
Я считаю, что разница здесь, вероятно, в том, где вы запускаете код. Если вы запускаете его в Word, константа имеет правильное значение; если вы запускаете его с .vbs, то это не так. fencepost 14 лет назад 0
Если идея fencepost о том, что wdAlignParagraphCenter не определен, находится на цели, вы можете добавить его. (wdAlignParagraphCenter = 1) Beaner 14 лет назад 0
0
Jeffery Devereux
%% Start by creating a Word Document Word_COM = actxserver('Word.Application'); set(Word_COM,'visible',1); RAM_Report = invoke(Word_COM.documents,'add'); invoke(RAM_Report.paragraphs,'add'); ReportDoc = Word_COM.Selection;  %% ReprtDoc Created  ReportDoc.Paragraphs.Alignment = 1; MyTextWithLineFeed = sprintf('%s\n','Hello World'); ReportDoc.TypeText( MyTextWithLineFeed );