1

いくつかの XML から情報を取得した後、Word ドキュメントを生成するために使用する必要があるブックマークとスタイルを含む Word 2010 テンプレートがあり、Interop (バージョン 8.3) で c# を使用しています。テンプレートは私に与えられたもので、会社の文書化規則に従っているため、まったく変更できません。

テンプレートのカスタム番号付きリスト スタイルを使用すると、1 ではなく 2 から開始する不可解な番号付けが失敗することがあります。それ以外の場合は、前のリストの番号付けに従います。

テンプレートから既存のスタイルを変更したり、プログラムからカスタム スタイルを適用したりできれば、これらのケースを修正するのは簡単ですContinuePreviousList: falseが、生成された Word ドキュメントには、強制的に使用するスタイルが必要です。

Word 文書を開き、リストを右クリックして [ 1 で再起動] オプションを選択すると (英語の Word を持っていないので、それが適切な翻訳であることを願っています)、発生する可能性のある問題のほとんどが修正されますが、 Interop からそれを使用する方法がわかりません。マクロを記録してから C# に変換して、Word がいくつかの関数を作成する方法を知りましたが、マクロの記録を開始するとマウスがロックされます。何か案は?

4

2 に答える 2

2

マウスはロックされていますが、キーボードのマウス ボタンを右クリックしてコンテキスト メニューを表示し、マクロの記録中に [Restart at 1] を選択できます。

私はC#相互運用を使用してこれになりました:

using System.Runtime.InteropServices;
using MSWord = Microsoft.Office.Interop.Word;

namespace ResetNumberingInWordDoc
{
    class Program
    {
        static void Main()
        {
            var application = new MSWord.Application();
            var document = application.Documents.Open(@"C:\mydocument.docx");

            const int listNumber = 1; //The first list on the page is list 1, the second is list 2 etc etc

            document.Range().ListFormat.ApplyListTemplateWithLevel(
                ListTemplate: document.ListTemplates[listNumber], 
                ContinuePreviousList: false, 
                ApplyTo: MSWord.WdListApplyTo.wdListApplyToWholeList,
                DefaultListBehavior: MSWord.WdDefaultListBehavior.wdWord10ListBehavior);

            document.Save();
            document.Close();

            application.Quit();

            Marshal.ReleaseComObject(application);
        }
    }
}
于 2012-12-21T10:11:03.267 に答える
1

記録されたマクロを見て、 「Restart at 1」機能を実行する正確な方法を見つけました。番号付きリスト スタイルの段落を見つけたら、「1 から再開」する番号を選択し、「List_Norm」スタイルを適用する必要があります。

listParagraph.SelectNumber(); //Select numbers from the NumberList paragraph
application.Selection.set_Style(document.Styles["List_Norm"]); //Apply "List_Norm" style

そうすれば、リストの内容は元のスタイルを維持しますが、リストは 1 から始まります。

同じコードを適用してタイトル スタイルを再開できますが、「List_Norm」の代わりに「Tit_List」スタイルを適用します。

于 2013-01-08T17:06:34.580 に答える