Пример #1
0
        /// <summary>
        /// ExcelファイルのA1セル選択処理
        /// 引数1:Excelファイルパス
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public static int Main(string[] args)
        {
            //引数チェック
            if (!CheckArgs(args))
            {
                return(NG);
            }

            //Excel起動
            WriteLog("Excel起動待ち");
            using (Excel.Application excelApplication = new Excel.Application())
            {
                WriteLog("Excel起動");

                try
                {
                    //Excel描画停止(速度改善のため)
                    ExcelBeginUpdate(excelApplication);

                    //対象ファイルを開く
                    WriteLog("ファイル開く");
                    Excel.Workbook workBook = excelApplication.Workbooks.Open(filePath);

                    //A1セルを選択状態にする
                    WriteLog($"全シート数:{workBook.Sheets.Count}");
                    for (int i = 1; i <= workBook.Sheets.Count; i++)
                    {
                        WriteLog($"{i}シート目処理中");

                        //シート取得
                        Excel.Worksheet sheet = (Excel.Worksheet)workBook.Sheets[i];
                        WriteLog($"シート名:{sheet.Name}");

                        //非表示のシートは操作に失敗するので無視する
                        if (sheet.Visible != Excel.Enums.XlSheetVisibility.xlSheetVisible)
                        {
                            continue;
                        }

                        //シートを選択状態にする(こうしないとセル選択に失敗する)
                        sheet.Select();

                        //倍率を100%に変更
                        excelApplication.ActiveWindow.Zoom = 100;

                        //スクロールを一番先頭に変更(選択セルを変更しても、スクロールバーの位置が元のままなので、先頭に移動)
                        excelApplication.ActiveWindow.ScrollColumn = 1;
                        excelApplication.ActiveWindow.ScrollRow    = 1;

                        //一番左上のA1セルを選択状態に変更
                        sheet.Range("A1").Select();
                    }

                    //一番左に存在するシートを選択状態にする
                    WriteLog("一番左のシートを選択");
                    Excel.Worksheet firstSheet = (Excel.Worksheet)workBook.Sheets[1];
                    firstSheet.Select();

                    //保存
                    WriteLog("保存");
                    workBook.Save();
                    workBook.Close();

                    //Excel終了
                    excelApplication.Quit();
                }
                catch (Exception ex)
                {
                    //何らかのエラー発生
                    WriteLog("例外エラー発生", ex);
                    return(NG);
                }
                finally
                {
                    //Excelを閉じる
                    try
                    {
                        excelApplication.Quit();
                        excelApplication.Dispose();
                    }
                    catch { } //例外発生時は無視
                }
            }

            return(OK);
        }