Officeスクリプト

【Officeスクリプト入門】ワークシートの操作

ワークシート選択

名前を指定してシートを選択

function main(workbook: ExcelScript.Workbook) {
  // "あああ"という名前のシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");
}

先頭/末尾/○○番目のシートを選択

function main(workbook: ExcelScript.Workbook) {
  // 先頭のシートを選択
  let firstWorksheet = workbook.getFirstWorksheet();

  // 末尾のシートを選択
  let lastWorksheet = workbook.getLastWorksheet();

  // ○○番目のシートを選択
  // (↓は2番目のシートを選択する例)
  let selectedWorksheet = workbook.getWorksheets()[1]; // 注意: []内の番号は0始まり
}

アクティブなシートを選択

function main(workbook: ExcelScript.Workbook) {
  // 現在アクティブなシートを選択
  let activeWorksheet = workbook.getActiveWorksheet();
}

アクティブなシートを変更

function main(workbook: ExcelScript.Workbook) {
  // アクティブにしたいシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");

  // 選択したシートをアクティブに変更
  selectedWorksheet.activate();
}

ワークシートの追加

新規作成

function main(workbook: ExcelScript.Workbook) {
  // "あああ"という名前のシートを新規追加
  let newWorksheet = workbook.addWorksheet("あああ");
}

新規作成したワークシートは末尾に追加されます。


既に存在している名前で新規作成を行うと、以下のようなエラーが出ます。


名前が被っていてもエラーが起きないようにする場合は以下のように記述します。

function main(workbook: ExcelScript.Workbook) {
  // "あああ"という名前のシートが、存在する場合はそのシートを取得、存在しない場合は新規作成
  let newWorksheet = workbook.getWorksheet("あああ") ? workbook.getWorksheet("あああ") : workbook.addWorksheet("あああ");
}

シート複製

function main(workbook: ExcelScript.Workbook) {
  // コピー元のシートを選択
  let sourceSheet = workbook.getWorksheet("コピー元");


  // シートをコピーして、先頭に追加
  let copiedSheet1 = sourceSheet.copy();

  // シートをコピーして、末尾に追加
  let copiedSheet2 = sourceSheet.copy(ExcelScript.WorksheetPositionType.end);

  // シートをコピーして、特定のシートの前に追加
  let copiedSheet3 = sourceSheet.copy(ExcelScript.WorksheetPositionType.before, workbook.getWorksheet("あああ"));

  // シートをコピーして、特定のシートの後ろに追加
  let copiedSheet4 = sourceSheet.copy(ExcelScript.WorksheetPositionType.after, workbook.getWorksheet("あああ"));


  // コピーしたシートの名前は「~(2)」のような名前になるので適宜名前を変更する
  copiedSheet1.setName("コピー先のシート");
}

ワークシートの削除

function main(workbook: ExcelScript.Workbook) {
  // 削除したいシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");

  // シートを削除
  selectedWorksheet.delete();
}

ワークシートの移動

function main(workbook: ExcelScript.Workbook) {
  // 移動したいシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");

  // シートを先頭に移動
  selectedWorksheet.setPosition(0);

  // シートを末尾に移動
  selectedWorksheet.setPosition(workbook.getWorksheets().length - 1);

  // シートを任意の位置に移動 (先頭シートを0として、数値で指定)
  selectedWorksheet.setPosition(2);
}

範囲外の数値を指定するとエラーになります。
(0以上、「シート数 – 1」以下、の数値を指定してください)

ワークシート数のカウント

function main(workbook: ExcelScript.Workbook) {
  // ブック内のシートの数を取得
  let sheetsCount = workbook.getWorksheets().length;
  console.log(sheetsCount); // シート数をログに出力
}

ワークシート名

シート名の取得

function main(workbook: ExcelScript.Workbook) {
  // 名前を取得したいシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");

  // シート名を取得
  let sheetName = selectedWorksheet.getName();
  console.log(sheetName); // シート名をログに出力
}

シート名の変更

function main(workbook: ExcelScript.Workbook) {
  // 名前を変更したいシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");

  // シート名を変更("あああ"→"AAA")
  selectedWorksheet.setName("AAA");
}

重複するシート名に変更しようとするとエラーになります。

ワークシートの表示/非表示

シートの表示/非表示状態を変更する

function main(workbook: ExcelScript.Workbook) {
  // 表示/非表示を変更したいシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");


  // シートを表示にする
  selectedWorksheet.setVisibility(ExcelScript.SheetVisibility.visible);

  // シートを非表示にする
  selectedWorksheet.setVisibility(ExcelScript.SheetVisibility.hidden);

  // シートを超非表示にする(再表示の一覧にも表示されなくなる)
  selectedWorksheet.setVisibility(ExcelScript.SheetVisibility.veryHidden);
}

シートの表示/非表示状態を取得する

function main(workbook: ExcelScript.Workbook) {
  // 表示/非表示を変更したいシートを選択
  let selectedWorksheet = workbook.getWorksheet("あああ");

  // 選択したシートの表示/非表示状態を取得する
  let visibility = selectedWorksheet.getVisibility();
  console.log(visibility); // ログに状態を出力


  // 特定の状態のシートを一覧で取得する (↓はhiddenのシート一覧の例)
  let hiddenSheets = workbook.getWorksheets().filter((sheet) => sheet.getVisibility() == ExcelScript.SheetVisibility.hidden);
}

シートを超非表示(veryHidden)にした場合、シートの削除ができないので注意が必要です。
シートを削除する場合は、veryHidden以外の状態に変更してから削除してください。

コメント

タイトルとURLをコピーしました