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

わんくま同盟

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

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

ツリー一括表示

excel文字検索 /screen (24/10/16(Wed) 23:18) #103376
Re[1]: excel文字検索 /KOZ (24/10/17(Thu) 01:53) #103377


親記事 / ▼[ 103377 ]
■103376 / 親階層)  excel文字検索
□投稿者/ screen (5回)-(2024/10/16(Wed) 23:18:39)

分類:[.NET 全般] 

c# Windows Form アプリケーション .NET Framework

前回教えて頂いた内容と似ているのですが

textbox1に文字列を入れてボタンを押すと、現在開いているエクセルのA列を検索して
一致するものがあればB列の文字列をtextbox2に表示をさせたいのです

これも前回と同じようなインフォメーションが出てきてしまうのですが
Microsoft.Office.Interop.Excelの使い方がおかしいのでしょうか

宜しくお願い致します

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApp5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            string searchValue = textBox1.Text;

            if (string.IsNullOrEmpty(searchValue))
            {
                MessageBox.Show("検索する文字を入力してください。");
                return;
            }

            try
            {
                Excel.Application excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
                Excel.Workbook workbook = excelApp.ActiveWorkbook;
                Excel.Worksheet worksheet = workbook.Sheets[1] as Excel.Worksheet;

                Excel.Range range = worksheet.Range["A:A"];
                Excel.Range foundCell = range.Find(searchValue);

                if (foundCell != null)
                {
                    string result = (string)(worksheet.Cells[foundCell.Row, 2] as Excel.Range).Value;
                    textBox2.Text = result;
                }
                else
                {
                    MessageBox.Show("一致するデータが見つかりませんでした。");
                }
            }
            catch (COMException ex)
            {
                MessageBox.Show($"Excelに接続できませんでした: {ex.Message}");
            }
            catch (Exception ex)
            {
                MessageBox.Show($"エラーが発生しました: {ex.Message}");
            }
        }
    }
}

[ □ Tree ] 返信 編集キー/

▲[ 103376 ] / 返信無し
■103377 / 1階層)  Re[1]: excel文字検索
□投稿者/ KOZ (474回)-(2024/10/17(Thu) 01:53:36)
No103376 (screen さん) に返信
> 前回教えて頂いた内容と似ているのですが

前回どのように対処したのかわかりませんが、NetOfficeFw.Excel を使っているなら
以下のコードでいけるはずです。

worksheet.Range["A:A"] が worksheet.Range("A:A") になるので注意。

private void button1_Click(object sender, EventArgs e)
{

    string searchValue = textBox1.Text;

    if (string.IsNullOrEmpty(searchValue))
    {
        MessageBox.Show("検索する文字を入力してください。");
        return;
    }

    using (Excel.Application excelApp = Excel.Application.GetActiveInstance())
    {
        if (excelApp != null)
        {
            if (excelApp.Workbooks.Count > 0)
            {
                Excel.Workbook workbook = excelApp.ActiveWorkbook;
                Excel.Worksheet worksheet = workbook.Sheets[1] as Excel.Worksheet;

                Excel.Range range = worksheet.Range("A:A");
                Excel.Range foundCell = range.Find(searchValue);

                if (foundCell != null)
                {
                    string result = (string)(worksheet.Cells[foundCell.Row, 2] as Excel.Range).Value;
                    textBox2.Text = result;
                }
                else
                {
                    MessageBox.Show("一致するデータが見つかりませんでした。");
                }
            }
            else
            {
                MessageBox.Show("開いているExcelファイルがありません。");
            }
        }
    }
}

[ 親 103376 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -