bugfix> c# > 投稿

template.dotのWord文書があり、Windowsエクスプローラーを使用している場合、右クリックすると、関数「新着、開く、印刷など」を選択します。デフォルトは[新規]です。

Process.Start( "template.dot")を使用すると、デフォルトの選択肢は「New」であるため、この関数は新しいドキュメント(「document.doc」)を作成します。 (右クリックで[開く]機能を選択した場合など)MS Wordで編集するために "template.dot"ファイルを開く方法

回答 2 件
  • interopを使用して、次のような.dot/xテンプレートから開始できます。

    using System;
    using System.Runtime.InteropServices;
    using Microsoft.Office.Interop.Word;
    namespace EditWordDotSO
    {
        class Program
        {
            static void Main(string[] args)
            {
                var applicationWord = new Microsoft.Office.Interop.Word.Application();
                applicationWord.Visible = true;
                Document doc = null;
                try
                {
                    doc = applicationWord.Documents.Add(@"path\to\your\a.dotx");
                    doc.Activate();
                }
                catch (COMException ex)
                {
                    Console.Write(ex);
                    //dispose properly as shown below
                }
            }
        }
    }
    
    

    注:COM参照を Microsoft.Office.Interop.Word に追加する必要があります  インストールされているMS Wordに関連付けられています。

    更新:@CindyMeisterの使用によると

    this.Application.Documents.Add(@"C:\Test\SampleTemplate.dotx");
    
    

    new Document() を作成する代わりに 。参照:方法:プログラムで新しいドキュメントを作成する

    PS: finally { ... }  blockは、ドキュメントを閉じてCOMオブジェクトを適切に破棄することを目的としています。最終的に使用する理由

    この投稿に触発された、より複雑な方法は次のとおりです。

    finally {
        doc.Close(null, null, null);
        applicationWord.Quit();
        if (doc != null)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
        if (applicationWord != null)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(applicationWord);
        doc = null;
        applicationWord = null;
        GC.Collect(); // final cleanup    
    }
    
    

    PPS:次のようなテンプレートを追加または変更することもできます。

    doc = applicationWord.Documents.Add();
    doc.set_AttachedTemplate(@"C:\Test\SampleTemplate.dotx");
    doc.UpdateStyles();
    
    

  • Process.Start(new ProcessStartInfo(@"C:\1.dot") { Verb = "open" });
    
    

    また、対応する完全なコマンドは、レジストリの複数の場所にあります。

    Computer\HKEY_CLASSES_ROOT\Applications\WINWORD.EXE\shell\edit\command
    Computer\HKEY_CLASSES_ROOT\Word.Template.8\shell\Open\command
    
    

    私にとっては次のように機能しますが、場合によっては完全なパスが必要になる場合があります。

    Process.Start("winword.exe", @"/n C:\1.dot");
    
    

あなたの答え