仕事でExcelをつかって記事を納品することがあるのですが、長文をExcelで扱うのはどうなんでしょうか?

Excelは名前、住所、メールアドレス、このような文字数が短いものを大量に扱うのであれば便利だと思いますが、長文をいくつも詰め込むべきではないと思うのです。セルが小さいのであとで見ようとしたとき見づらいです。また複数のセルにかかれた文章を同時にみながら作業をする場合は非常に作業がやりにくいです。

各セルにかかれた文章をテキストエディタで直接編集することはできないのでしょうか? そこで自作することにしました。必要は発明の母です。不自由も発明の母です。

このようなアプリケーションを作成するのは、Excelが公開するCOMコンポーネントへの参照をプロジェクトに追加する必要があります。Visual Studio 2019であれば

これでOK。

まずはExcelのファイルを開く必要があります。フォームにドラッグアンドドロップすればよいようにしました。

これでファイルをドロップすればOpenExcelメソッド(後述)によってファイルが開かれます。

あとはセルの位置を指定してから編集ボタンを押せばセルの編集ができるようになります。

例外処理をしています。例外が発生する場合として考えられるのは、テキストボックスに数字ではないものを入力した、Excelのファイルをドロップするまえにボタンをクリックした、Excelのファイルを閉じてしまったあとなのにボタンをクリックしたなどが考えられます。

現在編集中のワークシートを調べて編集するセルに書かれている文字列を取得します。必要なデータがそろったら新しいフォームを開きます。必要なデータとして、ワークシートオブジェクト、セルの場所、セルの文字列が考えられます。

ワークシートオブジェクトはこれで取得できます。

そこにはリッチテキストボックスがあり、ここで編集を行ないます。

新しいフォームはShowDialog()メソッドではなくShow()メソッドで表示させるので、複数のフォームを見ながら編集作業ができます。

それからセルを指定するのではなく、現在選択されているセルを編集できるようにもしてみます。

現在、選択されているセルを取得するためには

でいいし、

セルの場所やセル内の文字列は

で取得できます。

Form2はこんな感じです。

[反映する]のボタンがクリックされたらリッチテキストボックスの文字列をExcelのファイルに書き込みます。

反映ボタンをクリックするのを忘れてフォームを閉じてしまうかもしれません。そこで反映させていないにもかかわらず閉じようとした場合は確認のメッセージを表示させることにしました。

これでExcel内の長文データの編集も簡単にできると思います。(自信がない)