C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

エクセル書込み

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■100900 / inTopicNo.1)  エクセル書込み
  
□投稿者/ ようよう (1回)-(2022/11/20(Sun) 10:12:13)

分類:[C#] 

C#でエクセルに書込みしています
下記ではエクセルを閉じた状態でないと
使用できないのですが
エクセルを立ち上げた状態で書き込むには
どこを変更したらよろしいでしょうか
お願い致します




using ClosedXML.Excel;
using System;

class Program
{
    static void Main(string[] args)
    {
        const string path = @"c:\DATA\excel.xlsx"; 
        XLWorkbook book = new XLWorkbook(path);
        book.Worksheet(1).Cell("a1").Value = "1";
        book.SaveAs(path);
    }
}

引用返信 編集キー/
■100901 / inTopicNo.2)  Re[1]: エクセル書込み
□投稿者/ 魔界の仮面弁士 (3493回)-(2022/11/20(Sun) 11:29:31)
No100900 (ようよう さん) に返信
> 下記ではエクセルを閉じた状態でないと
> 使用できないのですが
> エクセルを立ち上げた状態で書き込むには
> どこを変更したらよろしいでしょうか

排他モードで開いているファイルへの書き込みはできないので:

案0) Microsoft 365 の契約がある場合は、OneDrive にアップロードしておいた上で、別端末から共有編集を行う

案1) ファイルが閉じるまで待ち合わせてから編集する

になるかと思います。開いている相手が、自 PC 上の Excel からである場合には、それに加えて

案3) GetRunningObjectTable API で System.Runtime.InteropServices.ComTypes.IRunningObjectTable を得て
 ROT テーブルから起動中の Excel を捉えて GetObject メソッドで Excel のインスタンスを得て操作する

案4) Marshal.GetActiveObject メソッドに、 CLSID として "Excel.Application" を渡し、
 Excel のインスタンスを得て操作する

案5) Microsoft.VisualBasic.dll を参照設定して、Microsoft.VisualBasic.Interaction.GetObject メソッドの
 第一引数にワークブックファイルのパス、第二引数を null を渡して Excel.Workbook インスタンスを得るか、もしくは
 第一引数に null、第二引数に CLSID "Excel.Application" を渡して Excel.Application インスタンスを得て操作する。

などの選択肢が使える可能性があります。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ