要するに質問:
この行:
doc.InlineShapes.AddOLEObject("Excel.Chart.8"); // doc is a Microsoft.Office.Interop.Word.Document object
Excelを開きます。これを無効にする方法は?
詳細:
c#でWord2010のスクリプトを使用してテンプレートからdocxドキュメントを作成しようとしています。次の方法でドキュメントを開きます。
Word.Document doc = app.Documents.Open(@"xxxx.docx",Visible:false);
スクリプト中、Word2010は表示されませんが、Word文書内にグラフを作成するとExcel2010が表示されます( "Excel.Chart.8")
チャートのスクリプト作成プロセス全体がモニターに表示されますが、これは私が望んでいることではありません。
プロセス中にExcel2010(グラフツール)を非表示にする方法はありますか?
編集:Excelチャートを作成する例:
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Word.Document doc = app.Documents.Open(@"xxxx.docx",Visible:false);
string classtype = "Excel.Chart.8";
Bookmark shapeBookMark = doc.Bookmarks.get_Item("mybookmark");
Word.InlineShape wrdInlineShape = doc.InlineShapes.AddOLEObject(classtype, Range: shapeBookMark.Range);
if (wrdInlineShape.OLEFormat.ProgID == classtype)
{
object verb = Word.WdOLEVerb.wdOLEVerbHide;
wrdInlineShape.OLEFormat.DoVerb(ref verb);
Excel.Workbook obook = (Excel.Workbook)wrdInlineShape.OLEFormat.Object;
Excel.Worksheet sheet = (Excel.Worksheet)obook.Worksheets["Sheet1"];
//then the access of a cell goes like this:
((Microsoft.Office.Interop.Excel.Range)sheet.Cells[1, 1]).Value = "data";
}
Visible:falseパラメータを使用する必要があることに注意してください。そうしないと、Excelとwordの両方が長いスクリプトプロセスで表示されるためです。短いものでは表示されませんが、長いスクリプトプロセス(16個のグラフ/ docxの作成、入力、フォーマット)を実行する必要があります