|
分類:[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)).
上記の内容が分からずどう対処していいのか分かりませんので
教えて頂ければ幸いです
|