今回は特定のエクセルファイルにシート追加、名称変更をするがテーマ!
■前提
今回はMicrosoft.Office.Interop.Excelを使用するので参照設定を
追加する必要があります。
※注意!
COMオブジェクト解放(ReleaseComObject)の処理とかしてないので、
途中終了とかするとプロセスが残り続けます。
取り敢えず動かしてみたい!って人向けの簡単なコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using System; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; namespace EXCELいろいろ { public partial class Start_excel : Form { public Start_excel() { InitializeComponent(); } private void excel_start_Click(object sender, EventArgs e) { //EXCEL起動 Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application(); ExcelApp.Visible = false; Workbook ExcelWorkbook = ExcelApp.Workbooks.Open(@"D:\Study\001_起動テスト.xlsx"); //新規シート追加 int bef_totalSheets = ExcelWorkbook.Sheets.Count; ExcelWorkbook.Worksheets.Add(Type.Missing, After:ExcelWorkbook.Worksheets[bef_totalSheets]); //末尾シート名変更 int aft_totalSheets = ExcelWorkbook.Sheets.Count; string sheetname = ExcelWorkbook.Worksheets[aft_totalSheets].Name; ExcelWorkbook.Worksheets[sheetname].Name = "好きなシート名に変更できるよ!"; //EXCEL終了 ExcelApp.Quit(); } } } |
■17~20行目
→EXCELの起動および指定ファイルを開く処理を行います。
「ExcelApp.Visible = ( )」はtrue、falseにすることが出来ますが
エクセルの画面が見えるか見えないかだけの違いかと思います。
ここは実際に試してみた方が分かりやすいです。
この時点でなんかエラーで起動できない!とかあったら以下の記事内容も
お試しください。(Office修復、再インストール、レジストリチェック、ビルド変更)
■23~24行目
→シートの追加にはAddメソッドを使います。
「After:~~」の箇所が、どこのシートの後に追加するかって感じです。
なので、シートの最大数(bef_totalSheets)を設定してあげることで
末尾に新規シートを追加することが可能です。
※この時点では追加されるシート名はデフォルトの「Sheet~」
■27~30行目
→ここではさっき追加したシート名の名称変更を行います。
1.まずはシート追加後のシート数の取得を行います。
23行目と同じくシートの最大数を取得するのですが、
シート追加した後の値が欲しいので新しく変数を設定します。(aft_totalSheets)
2.次に末尾シート名の取得です。
ここはそのままな感じですね、(aft_totalSheets)番目の名称です。
3.ここで名称変更です。
2.で設定したシート名を変更する処理ですね。
31文字より多い文字列に設定するとエラーになるので注意しましょう。
※EXCEL自体も32文字以上のシート名に出来なかったかと思います。
コメントを残す