Word文書の中央のテキスト


0

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で見つけたいくつかの異なることを試しましたが、機能するものは何も見つかりませんでした。

回答:


1

更新:wdAlignParagraphCenterのような定数は実際には定義されていない可能性があるため、コードで確認してください。

Word(またはExcel)で書式設定を行う方法の例を取得する最も簡単な方法は、実際にマクロの記録を開始し、必要な処理を行い、記録を停止してマクロの内容を確認することです。

サンプルコードでは、テキストを中央に配置しようとする兆候は見られません。のようなものを試してみてくださいがselection.ParagraphFormat.Alignment = wdAlignParagraphCenter、それは実際に試してからではなく、ドキュメントから取得されます。

もう少し実験した後、wdAlignParagraphCenterの値は1になりますが、vbsからはそうではありません。VBScriptのドキュメントを掘り下げて、これがどこで定義されているかなどを正確に把握することは、読者の課題として残されています。

また、ドキュメントを読み通してください。WordのコードエディタからアクセスできるVisual Basicリファレンスには、おそらく役立つ情報があります。

(少なくとも私の長年の経験では)Wordでできることは、正しく機能する同等のコードを持っていないこともありますが、おそらくWordBasicの時代から改善されているかもしれません。


マクロを記録すると、ここで指定したコードが得られますが、機能しません。私がすでに試したさまざまなことをリストすべきだったと思います。
テスター101

テキストを挿入する前か後に挿入しましたか?提供されたサンプルであなたがしていることは、ドキュメントを開いてフォントを変更し、入力することと同じだと思います。テキストを挿入する前にセンタリングを変更すると、違いが生じる場合があります。テキストを挿入すると、次の段落の設定が変更されます。
フェンスポスト09

私が満足していること、少なくともその時は結果が出ます。コード内でそれを移動しようとしましたが、何も中央に配置されていません。
テスター101

これらの定数は、関心のあるかもしれない後半に拘束されるものについての情報を含むこの議論:excelforum.com/excel-programming/...
fencepost

2つのコメントの削除/統合:問題は、wdAlignParagraphCenterWordの外部で実際に定義されていないため、(無視された)エラーがスローされているか、正当な値である可能性が高い0として扱われていると思われます。1を使用するようにその値を明示的に定義し、その値をコマンドに投げ込もうとした1つの例を見つけました。それはトリックをしました。
フェンスポスト09

0
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

これは私にとっては
うまくいき

何を手に入れましたか?私はあなたのコードの残りの部分でそれを試してみました。
ビーナー2009

上記のコードを編集してこのコード行を含めましたが、タイトルはまだ左揃えです。
テスター101

ここでの違いはおそらくコードを実行している場所にあると思います。Word内で実行している場合、定数は正しい値を持ちます。.vbsから実行している場合は実行されません。
フェンスポスト09

wdAlignParagraphCenterが定義されていないというフェンスポストのアイデアがターゲットにある場合は、追加できます。(wdAlignParagraphCenter = 1)
ビーナー09

0
%% 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 );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.