|  | 分類:[C#]
 
 
 C# Windows Form アプリケーション.NET Framework 
宜しくお願いします
パソコン上に開いているエクセルのファイル名をtextboxに表示しようとしています
using System;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        
        private void button2_Click_1(object sender, EventArgs e)
        {
            try
            {
                Excel.Application excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
                if (excelApp.Workbooks.Count > 0)
                {
                    string filePath = excelApp.ActiveWorkbook.FullName;
                    string fileName = Path.GetFileName(filePath);
                    textBox1.Text = fileName;
                }
                else
                {
                    MessageBox.Show("開いているExcelファイルがありません。");
                }
            }
            catch (COMException)
            {
                MessageBox.Show("Excelが起動していません。");
            }
            catch (Exception ex)
            {
                MessageBox.Show($"エラーが発生しました: {ex.Message}");
            }
        }
        
    }
}
上記のコードでボタンをおすと下記のインフォメーションが出ます
エラーが発生しました:型'System.__ComObject'のCOMオブジェクトをインターフェイス型'Microsoft.Office.Excel.Application'にキャストできません。
IID'{000285D5-0000-0000-C000-000000000046}'が指定されたインターフェイスのCOMコンポーネント上で
QueryInterface呼び出した時に次のエラーが発生したため、この操作に失敗しました:要素が見つかりません。
(HRESULTからの例外:0x8002802B(TYPE_E_ELEMENTNOTFOUND)).
上記の内容が分からずどう対処していいのか分かりませんので
教えて頂ければ幸いです
 |