質問
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();
//}
}
}
}