3

質問

C#を使用してMicrosoftWordでRTFファイルをプログラムで開きたい。しかし、それをしている間、「ファイルの変換」ダイアログを表示したくありません。それ、どうやったら出来るの?

コード

このコードを試しましたが、Wordの[ファイルの変換]ダイアログが表示されます。

object missing = Missing.Value;
string fileName = @"C:\RtfFile.rtf";
//object encoding = WdSaveFormat.wdFormatRTF;
object encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
object noEncodingDialog = true; // http://msdn.microsoft.com/en-us/library/bb216319(office.12).aspx
word.Documents.Open(ref fullFilePath, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing, ref missing, ref missing, ref noEncodingDialog, ref missing);

ここに画像の説明を入力してください

私がこれまでに試したこと

実際には、2つのサブ質問があります。

一方では、どのエンコーディングを使用するかわかりません。コードスニペットに示されている両方のオプションを試し、ウィキペディアでRTF文字エンコードを確認しました。

一方、object noEncodingDialog = true[ファイルの変換]ダイアログがポップアップし続けるため(おそらくエンコーディングが間違って設定されているため)、機能していないようです。

何か案は?

バージョン

  • Word 2003
  • .NET 3.5
  • Visual Studio 2010 Ultimate

完全なソースコード

試してみたい場合に備えて。

[COM]タブから[MicrosoftWord11.0オブジェクトライブラリ]への参照を追加します。

using System;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Word;

namespace WordAutomationDemo
{
    public class Program
    {
        static void Main(string[] args)
        {
            new Program();
            Console.ReadKey();
        }

        public Program()
        {
            object wordObject = null;
            try
            {
                wordObject = Marshal.GetActiveObject("Word.Application");
            }
            catch (Exception)
            {
                // Do nothing.
            }

            Application word = null;
            bool wordInstanceCreated = false;
            if (wordObject != null)
            {
                word = (Application)wordObject;
            }
            else
            {
                wordInstanceCreated = true;
                word = new Application();
            }

            word.Visible = true;

            object missing = Missing.Value;
            object fullFilePath = @"C:\RtfFile.rtf";
            //object encoding = WdSaveFormat.wdFormatRTF; // http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas(v=vs.80).aspx
            object encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
            object noEncodingDialog = true; // http://msdn.microsoft.com/en-us/library/bb216319(office.12).aspx
            word.Documents.Open(ref fullFilePath, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing, ref missing, ref missing, ref noEncodingDialog, ref missing);

            //if (wordInstanceCreated)
            //{
            //    word.Quit();
            //}
        }
    }
}
4

1 に答える 1

4

Openメソッドのドキュメントによると、2番目の引数(ConfirmConversions)はドキュメント変換を無効にするように指定できます。それを(引数)と組み合わせるとReadOnly、問題が解決するはずです。

bool f = false;
bool t = true;
word.Documents.Open(ref fullFilePath, ref t, ref f, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing, ref missing, ref missing, ref noEncodingDialog, ref missing);
于 2011-02-16T13:11:19.573 に答える