Text in Word-Dokument zentrieren

10474
Tester101

Ich arbeite an einem Skript, das ein Word-Dokument erstellt, aber ich kann den Text nicht zentriert ausrichten. Hier ist ein Beispiel für den Code, den ich verwende. (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 

Ich habe ein paar verschiedene Dinge ausprobiert, die ich bei Google gefunden habe, aber nichts gefunden, was funktioniert.

0

3 Antworten auf die Frage

1
fencepost

UPDATE: Es stellt sich heraus, dass Konstanten wie wdAlignParagraphCenter nicht wirklich definiert werden können. Überprüfen Sie dies also in Ihrem Code.

Um ein Beispiel für die Formatierung in Word (oder Excel) zu erhalten, können Sie am einfachsten mit der Aufzeichnung eines Makros beginnen, tun, was Sie möchten, dann die Aufzeichnung stoppen und sich den Makroinhalt ansehen.

In Ihrem Beispielcode sehe ich kein Zeichen, dass Sie versuchen, den Text zu zentrieren. Versuchen Sie etwas wie selection.ParagraphFormat.Alignment = wdAlignParagraphCenter, obwohl das aus der Dokumentation gezogen wurde, nicht wirklich aus dem Versuch.

Nach etwas mehr Experimenten sollte der Wert von wdAlignParagraphCenter 1 sein, von den vbs ist dies jedoch nicht der Fall. In die VBScript-Dokumentation einzugreifen, um herauszufinden, wo genau dies definiert ist usw., bleibt dem Leser als Übung vorbehalten.

Seien Sie auch bereit, die Dokumentation durchzulesen. Das vom Word-Editor aus erreichbare Visual Basic-Referenzhandbuch enthält Informationen, die wahrscheinlich für Sie von Nutzen sind.

Beachten Sie, dass es (zumindest in meiner jahrelangen Erfahrung) in Word möglicherweise Dinge gibt, die kein korrekt funktionierendes Code-Äquivalent haben, obwohl sie möglicherweise seit den Tagen von WordBasic Verbesserungen vorgenommen haben.

Beim Aufzeichnen eines Makros wird der Code angegeben, den Sie hier angegeben haben. Dies funktioniert jedoch nicht. Ich denke, ich hätte die verschiedenen Dinge auflisten sollen, die ich bereits ausprobiert habe. Tester101 vor 14 Jahren 0
Haben Sie das vor oder nach dem Einfügen des Textes eingefügt? Ich glaube, das, was Sie in dem von Ihnen bereitgestellten Beispiel tun, entspricht dem Öffnen eines Dokuments, dem Ändern der Schriftart und dem Eingeben. Wenn Sie die Zentrierung vor dem Einfügen des Textes ändern, kann dies einen Unterschied machen - nachdem Sie den Text eingefügt haben, wird die Einstellung für den nächsten Absatz geändert. fencepost vor 14 Jahren 0
Damit wäre ich zufrieden, zumindest würde ich ein Ergebnis sehen. Ich habe versucht, es im Code zu verschieben, aber nichts ist zentriert. Tester101 vor 14 Jahren 0
Diese Diskussion einschließlich der Informationen zu den Konstanten, die zu spät gebunden sind, könnte von Interesse sein: http://www.excelforum.com/excel-programming/530868-how-to-write-in-word-wo-reference.html fencepost vor 14 Jahren 0
2 Kommentare gelöscht / konsolidiert: Das Problem ist, dass "wdAlignParagraphCenter" nicht außerhalb von Word definiert ist. Ich vermute, es wird entweder ein (ignorierter) Fehler ausgegeben oder als 0 behandelt, was wahrscheinlich ein legitimer Wert ist. Ich habe ein Beispiel gefunden, in dem dieser Wert explizit für die Verwendung von 1 definiert wurde, und ich habe versucht, diesen Wert in den Befehl zu übernehmen. das hat den Trick gemacht. fencepost vor 14 Jahren 0
Das war genau richtig. Die Einstellung selection.ParagraphFormat.Alignment = 1 hat den Trick ausgeführt. Vielen Dank. Tester101 vor 14 Jahren 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 
Das hat bei mir nicht funktioniert Tester101 vor 14 Jahren 0
was hast du bekommen? Ich habe es mit dem Rest Ihres Codes ausprobiert und hatte einen schönen zentrierten Titel. Beaner vor 14 Jahren 0
Ich habe meinen Code oben so bearbeitet, dass er diese Codezeile enthält. Mein Titel ist jedoch immer noch gerechtfertigt. Tester101 vor 14 Jahren 0
Ich glaube, der Unterschied hier liegt wahrscheinlich darin, wo Sie den Code ausführen. Wenn Sie es in Word ausführen, hat die Konstante den richtigen Wert. Wenn Sie es von einem .vbs ausführen, dann nicht. fencepost vor 14 Jahren 0
Wenn die Idee von fencepost, dass wdAlignParagraphCenter nicht definiert ist, erreicht ist, können Sie es hinzufügen. (wdAlignParagraphCenter = 1) Beaner vor 14 Jahren 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 );