Officeスクリプト clear() メソッドの使い方|値のみクリアや書式リセットを自在に

当ページのリンクには広告が含まれています。
clear()メソッド

「Officeスクリプトでセルのデータをクリアしたいけど、どうすればいいんだろう…」
そんな疑問を持っていませんか?


全てのセルを一括で削除したい

値のみ削除を行いたい

その場合は、Officeスクリプトの「clear()メソッド」を
使用すると解決します!


この記事では、Officeスクリプトの「clear()メソッド」を使って、セル内のデータや書式を簡単にクリアする方法を詳しく解説します。

Officeスクリプトのclear()メソッドを使えば、セル内のデータ、書式、リンクをまとめて削除したり、値のみや書式のみを選択してクリアすることができます。

使用例はすべてコピペするだけで実際に使用できるようにしていますので、初心者でもすぐに実践可能です。
気になる部分だけでもぜひご覧いただければと思います。


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

この記事を読むとできるようになること

この記事を読むことで、次のことができるようになります。

Officeスクリプトでセルをクリアする方法:clear()メソッドの基本を解説

Officeスクリプトのclear()メソッドは、Excelシート内のセルの内容や書式を一度にクリアし、セルをリセットするための便利なメソッドです。

これにより、セル内のデータ、書式、リンクなどをすべて削除して、完全に初期状態に戻すことができます。

たとえば、既存のデータを削除して新しいデータを入力する前に、セルをリセットしたい場合に役立ちます。

clear()メソッドでできること
  • 月次報告書のデータリセット
    • 毎月の報告書で前回のデータを削除し、新しいデータを入力しやすくします(値のみをクリア)。
  • 書式リセットで見やすいシートに
    • フォントや背景色などが混在している場合、書式だけをクリアしてセルの見た目を整えられます(書式のみをクリア)。
  • リンク削除で資料をシンプルに
    • 不要なハイパーリンクだけを削除し、データと書式はそのまま残せます(リンクのみをクリア)。
  • シート全体を一括クリア
    • テンプレートを初期状態に戻す場合に便利。内容と書式をすべて削除し、セルを空にできます(すべてをクリア)。

Officeスクリプトでセルをクリアするclear()メソッドの使い方

clear()メソッドは、セルの内容 (データ)だけでなく、セルの書式設定も含めてクリアすることができます。

clear()メソッドの構成

clear()メソッドの構成
設定解説
  • range (必須)
    • clear()メソッドを適用するセル・範囲を指定します。
  • clear() (必須)
    • 指定したセル範囲のクリアを実行します。
  • オプション (任意)

より詳しい情報は、ExcelScript.ClearApplyTo enumを参照してみてください。

OfficeスクリプトのClear()メソッドで指定できるオプション一覧

Clear()メソッドのオプション一覧を紹介します。

このオプションを指定することで、削除する範囲を指定することができます。

スクロールできます
メソッド名説明
.clear()セル内のすべてのデータ、書式、
ハイパーリンクをクリア
します。
.clear(
ExcelScript.ClearApplyTo.all
)
セル内のすべてのデータと書式をクリアします。
.clear(
ExcelScript.ClearApplyTo.contents
)
セルのデータ (テキスト、数値、
ハイパーリンク) だけをクリア
し、書式は保持する。
.clear(
ExcelScript.ClearApplyTo.formats
)
セルの書式 (フォント、色、罫線など)だけをクリアし、
データとハイパーリンクは保持します。
.clear(
ExcelScript.ClearApplyTo.hyperlinks
)
セル内のハイパーリンクだけをクリアし、
データを書式は保持します。
消しゴム

.clear()メソッドの解説 (セル内のすべてのデータをクリア)

clear()メソッドは、セル範囲内のすべてのデータ(内容、書式、ハイパーリンクなど)を一括でクリアします。

これは、セルを完全にリセットしたい場合に非常に便利です。

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  
  // セル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セルのデータ、書式、ハイパーリンクをすべて削除
  range.clear();
}
.clear()メソッドの使用例

この例では、セル範囲「B2」から「D4」までのデータと書式がすべて削除され、セルはデフォルトの状態に戻ります。
※ただし、行や列の幅は変更されません。

.clear(ExcelScript.ClearApplyTo.all)メソッドの解説 (セルのすべてのデータと書式をクリア)

clear()メソッドの ExcelScript.ClearApplyTo.all オプションを使うと、指定したセル範囲内のすべてのデータ、書式、ハイパーリンクを一括でクリアできます。

セルを完全にリセットし、内容も見た目も初期状態に戻したい場合に非常に便利です。
※clear()と動作は同じものです。

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  
  // セル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セルのデータ、書式、ハイパーリンクをすべて削除
  range.clear(ExcelScript.ClearApplyTo.all);
}
.clear(ExcelScript.ClearApplyTo.all)メソッドの使用例

このコードでは、セル範囲「B2」から「D4」までのデータ、書式、ハイパーリンクがすべてクリアされます。

これにより、セル内の内容や見た目もリセットされ、空の状態に戻ります。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。

.clear(ExcelScript.ClearApplyTo.contents)メソッドの解説 (セル内の値のみクリア)

clear()メソッドの ExcelScript.ClearApplyTo.contents オプションを使うと、指定したセル範囲内のデータ(値)のみをクリアし、書式設定やハイパーリンクは保持したままにできます。

データだけをリセットし、セルの見た目はそのまま残したい場合に便利です。

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  
  // セル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セル内のデータのみ削除(書式とハイパーリンクは保持)
  range.clear(ExcelScript.ClearApplyTo.contents);
}
.clear(ExcelScript.ClearApplyTo.contents)メソッドの使用例

このコードでは、セル範囲「B2」から「D4」までのデータ(テキストや数値)がクリアされますが、セルの書式(背景色やフォント)やハイパーリンクはそのまま保持されます。

データのみを削除したい場合に適しており、再入力が必要なテンプレートの準備などで役立ちます。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。

.clear(ExcelScript.ClearApplyTo.formats)メソッドの解説 (セル内の書式のみクリア)

clear()メソッドの ExcelScript.ClearApplyTo.formats オプションを使うと、指定したセル範囲内の書式設定のみをクリアし、セルのデータやハイパーリンクはそのまま保持することができます。

セルの内容は残したまま、フォントや背景色、罫線などの書式をリセットしたい場合に便利です。

function main(workbook: ExcelScript.Workbook): void {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  
  // セル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セルの書式のみ削除(データとハイパーリンクは保持)
  range.clear(ExcelScript.ClearApplyTo.formats);
}
.clear(ExcelScript.ClearApplyTo.formats)メソッドの使用例

このコードでは、セル範囲「B2」から「D4」までの背景色、フォントスタイル、罫線などの書式がクリアされますが、セル内のデータやハイパーリンクは保持されます。

特に、データはそのままでセルの見た目だけをリセットしたいときや、書式の統一が必要な場合に役立ちます。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。

.clear(ExcelScript.ClearApplyTo.hyperlinks)メソッドの解説 (セル内のハイパーリンクのみクリア)

clear()メソッドの ExcelScript.ClearApplyTo.hyperlinks オプションを使うと、指定したセル範囲内のハイパーリンクのみをクリアし、セルのデータや書式設定はそのまま保持できます。

しかし、文字の色 (青色)や下線は元に戻りません
元に戻したい場合は、手動で戻す必要があります。
⇒ 文字や、下線まで元に戻したい場合は「使用例3: ハイパーリンクを削除し、文字色や下線をデフォルトに戻す」で解説を行っています。

リンクだけを削除して、セルの内容や見た目をそのまま残したい場合に便利です。

function main(workbook: ExcelScript.Workbook): void {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  
  // セル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セル内のハイパーリンクのみ削除(データと書式は保持)
  range.clear(ExcelScript.ClearApplyTo.hyperlinks);
}
.clear(ExcelScript.ClearApplyTo.hyperlinks)メソッドの使用例

このコードでは、セル範囲「B2」から「D4」までのハイパーリンクがクリアされますが、セル内のデータや書式はそのまま保持されます。

リンクだけを削除したいときや、リンクが不要になった資料の整理などに役立ちます。
※行や列の幅は変更されませんので、表示のレイアウトはそのままです。

スポンサーリンク

Officeスクリプトでのセル範囲指定方法|clear()メソッドと組み合わせて使う基本

Officeスクリプトでclear()メソッドを使ってデータをクリアする際、指定したいセル範囲によってコードの書き方が少し異なります。

clear()メソッドは、セル範囲を柔軟に指定できるため、必要に応じてデータや書式を効率よくクリアできます。

セル範囲指定例1 : 特定のセル範囲を指定する方法

特定のセル範囲を指定する場合、getRange("開始セル:終了セル")を使います。

たとえば、セル範囲「B2」をクリアする場合は次のように記述します。

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // 指定範囲のすべてのデータ、書式、リンクをクリア
  range.clear(ExcelScript.ClearApplyTo.all);
}

セル範囲指定例2 : 行や列全体を指定する方法

特定の行全体列全体をクリアしたい場合、getRange("行番号:行番号")またはgetRange("列番号:列番号")を使います。

行全体をクリアする方法

たとえば、2行目全体のデータや書式をクリアしたい場合は、以下の様にgetRange("行番号:行番号")を指定します。

function main(workbook: ExcelScript.Workbook): void {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let rowRange: ExcelScript.Range = sheet.getRange("2:2");

  // 2行目のすべての内容と書式をクリア
  rowRange.clear(ExcelScript.ClearApplyTo.all);
}

列全体をクリアする方法

たとえば、B列全体をクリアしたい場合は、以下の様にgetRange("列番号:列番号")を指定します。

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let columnRange: ExcelScript.Range = sheet.getRange("B:B");

  // B列のすべての内容と書式をクリア
  columnRange.clear(ExcelScript.ClearApplyTo.all);
}

セル範囲指定例3 : シート全体を指定する方法

シート全体のデータをクリアする場合、getUsedRange()を使うと、使用されているすべてのセル範囲を自動的に取得できます。

function main(workbook: ExcelScript.Workbook): void {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let usedRange: ExcelScript.Range = sheet.getUsedRange();

  // シート全体の内容と書式をクリア
  usedRange.clear(ExcelScript.ClearApplyTo.all);
}

しかし、getUsedRange() メソッドは、「書式設定された空白セル」や「空白のままのセル」も「使用されているセル」として認識するため、最終行や最終列がすれて思ったように取得できないことがあります。

「空白セル」や「書式のみのセル」を無視して最終行・最終列を取得したい場合は、関数を自作し使用する必要があります。

最終行・最終列の取得方法については、別記事で解説を行っています。
合わせてご覧ください。

あわせて読みたい
Officeスクリプトで最終行・最終列を正確に取得する!getUsedRangeの限界と関数化での解決法 「Officeスクリプトで、最終行・最終列を取得するにはどうやればいいの…」そのように悩んでいませんか? ・getUsedRange() メソッドを使用すると、 書式が設定されたセ...

セル範囲指定例4 :動的なセル範囲を指定する方法

データ量が変動する場合、特定のセルから特定の行数や列数を指定して範囲を動的に設定する方法が便利です。

function main(workbook: ExcelScript.Workbook): void {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let dynamicRange: ExcelScript.Range = sheet.getRange("B2").getResizedRange(1, 2);

  // B2から2行×3列の範囲をクリア
  dynamicRange.clear(ExcelScript.ClearApplyTo.all);
}
スポンサーリンク

Officeスクリプト「clear()メソッド」の注意ポイント

clear()メソッドは、Excelシート上のデータや書式を一括でクリアするため、非常に強力な操作です。

以下のポイントに気をつけて使うことで、意図せずデータを削除してしまうリスクを減らせます。

注意1 : クリア対象の範囲を正確に指定する

clear()メソッドを使う際は、対象のセル範囲を間違えないように正確に指定することが重要です。

たとえば、使用中のセル範囲だけをクリアするには getUsedRange() や最終行・最終列を求める関数を使いましょう。

:シート内の使用中の範囲のみをクリア

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  
  // 使用中のセル範囲を取得して、すべてのデータと書式をクリア
  let usedRange: ExcelScript.Range = sheet.getUsedRange();
  usedRange.clear(ExcelScript.ClearApplyTo.all);
}

解説

このコードは、シート内で実際にデータが入力されているセル範囲のみをクリアします。
範囲が自動的に決まるため、不要なセルまでクリアされるリスクを減らせます。

注意2 : 必要なデータが消えないようにバックアップを取る

重要なデータをクリアする前には、別シートや変数にバックアップを取っておくと安心です。

:クリア対象のデータを別シートにバックアップしてからクリア

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let backupSheet: ExcelScript.Worksheet = workbook.addWorksheet("Backup");

  // 使用中の範囲を取得
  let usedRange: ExcelScript.Range = sheet.getUsedRange();

  // データをバックアップシートにコピー
  backupSheet.getRange("A1").copyFrom(usedRange);

  // 元のシートでデータと書式をクリア
  usedRange.clear(ExcelScript.ClearApplyTo.all);
}

解説

このコードでは、クリアする前に「Backup」という新しいシートを作成し、元のシートからデータをコピーしています。
こうすることで、必要があればデータを簡単に復元できます。

注意3-1 : 行や列の幅は変更されない点に注意

clear()メソッドを使用すると、セルの内容や書式がリセットされますが、行や列の幅は変更されません

幅を初期状態に戻したい場合は、setColumnWidth()setRowHeight()で調整が必要です。

:列幅を初期状態に戻す

function main(workbook: ExcelScript.Workbook): void {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セル範囲の内容をすべてクリア
  range.clear(ExcelScript.ClearApplyTo.all);

  // クリア後に列幅を標準幅に戻す
  range.getColumn(0).getFormat().setColumnWidth(8.43); // Excelの標準幅
}

解説

このコードは、クリアした後に、setColumnWidth(8.43) で、列の幅をExcelの標準幅に戻しています。
行や列の幅も初期化したい場合は、getRow()getColumn()で対象範囲を指定して行います。

注意3-2 : さらに簡単に! delete()メソッドの活用

データとともに行や列そのものを削除し、列幅や行幅も自動調整したい場合は、clear()メソッドの代わりに delete() メソッドを使うと便利です。

delete()メソッドは指定された行や列を削除し、周囲のセルが自動で詰められるため、幅の調整が不要です。

:3行目を削除し、下の行を詰める

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let rowToDelete: ExcelScript.Range = sheet.getRange("3:3");

  // 3行目を削除して、下の行を上にシフト
  rowToDelete.delete(ExcelScript.DeleteShiftDirection.up);
}

解説

このコードでは、3行目を完全に削除し、下の行を自動で詰めています。
delete()メソッドを使うことで行や列の調整が自動化され、作業が簡単になります。

スポンサーリンク

Officeスクリプト「clear()メソッド」の使用例をご紹介

それでは、データ削除の使用例を紹介します。

以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。

この使用例は以下のエクセルを使用して紹介します。

この条件で使用例を行います
  • セル範囲「B2:D4」に表があります。
  • すべてのセルに、罫線・ハイパーリンクが設定されています。
使用例の元シート

Officeスクリプトの基礎から応用までを効率よくしっかり学習したい方には、UdemyのOfficeスクリプト講座もおすすめです。

特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。

使用例1: セル全体をクリアする 「ExcelScript.ClearApplyTo.all」

この例では、clear()メソッドを使用してセル範囲内のデータ、書式、ハイパーリンクをすべてクリアする方法を紹介します。

この操作により、指定したセル範囲が完全にリセットされ、データの初期化やテンプレートの準備に役立ちます。

コード例 | セル範囲全体をクリアする

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();

  // クリアするセル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セル範囲のデータ、書式、ハイパーリンクをすべてクリア
  range.clear(ExcelScript.ClearApplyTo.all);
}

処理結果

使用例1: セル全体をクリアする 「.clear()使用」の処理結果

コードの動作概要

STEP
セル範囲を指定

getRange("B2:D4")メソッドを使って、クリア対象のセル範囲「B2:D4」を指定します。
この範囲は、データの初期化やテンプレートをリセットする目的で設定できます。

STEP
clear()メソッドを使用して範囲をクリア

clear(ExcelScript.ClearApplyTo.all)を使用して、指定範囲内のすべてのデータ、書式、ハイパーリンクを一括でクリアします。
これにより、セル範囲が完全にリセットされ、初期状態に戻ります。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook) {
    • 関数「main」を定義し、スクリプトの実行内容を設定します。
      「workbook」はExcelのブックを操作するための引数です。
  2. let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
    • getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
  3. let range: ExcelScript.Range = sheet.getRange(“B2:D4”);
    • 「getRange(“B2:D4”)」を使用して、クリア対象のセル範囲「B2」から「D4」を指定します。
  4. range.clear(ExcelScript.ClearApplyTo.all);
    • 「clear(ExcelScript.ClearApplyTo.all)」を使って、指定したセル範囲のすべてのデータ、書式、ハイパーリンクを一括でクリアします。
  5. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、clear()メソッドのExcelScript.ClearApplyTo.allオプションを使用して、セル範囲内のすべてのデータ、書式、ハイパーリンクをクリアする方法を示しています。

範囲全体のリセットが簡単に行えるため、データ初期化やテンプレート作成の際に非常に便利です。

使用例2: セル範囲内の値のみをクリアする 「ExcelScript.ClearApplyTo.contents」

この例では、clear()メソッドの「ExcelScript.ClearApplyTo.contentsオプション」を使用して、セル範囲内の値(データ)だけをクリアする方法を紹介します。

この操作により、セルの書式やハイパーリンクは保持されたまま、値のみがリセットされます。
テンプレートのデータをクリアして、書式をそのまま利用したい場合に便利です。

コード例 | セル範囲内の値のみをクリアする

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();

  // 値のみをクリアするセル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セル範囲内のデータのみをクリア(書式とハイパーリンクは保持)
  range.clear(ExcelScript.ClearApplyTo.contents);
}

処理結果

使用例2: セル範囲内の値のみをクリアする 「ExcelScript.ClearApplyTo.contentsオプション使用」の処理結果

コードの動作概要

STEP
セル範囲を指定

getRange("B2:D4")メソッドを使って、データをクリアする対象のセル範囲「B2:D4」を指定します。
この範囲内のデータのみをクリアし、書式やリンクを残したい場合に使用します。

STEP
clear()メソッドで値のみをクリア

clear(ExcelScript.ClearApplyTo.contents)を使用して、指定範囲内のデータ(テキストや数値)だけをクリアします。
これにより、書式やリンクを保持したまま、内容のみをリセットできます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook) {
    • 関数「main」を定義し、スクリプトの実行内容を設定します。
      「workbook」はExcelのブックを操作するための引数です。
  2. let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
    • getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
  3. let range: ExcelScript.Range = sheet.getRange(“B2:D4”);
    • 「getRange(“B2:D4”)」を使用して、クリア対象のセル範囲「B2」から「D4」を指定します。
  4. range.clear(ExcelScript.ClearApplyTo.contents);
    • 「clear(ExcelScript.ClearApplyTo.contents)」を使って、指定範囲内のデータのみをクリアします。
      書式やハイパーリンクはそのまま残り、データだけがクリアされます。
  5. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、clear()メソッドのExcelScript.ClearApplyTo.contentsオプションを使用して、セル範囲内のデータのみをクリアする方法を示しています。

書式やハイパーリンクを保持したままデータのみをリセットできるため、テンプレートのデータ更新などに非常に便利です。

使用例3: ハイパーリンクを削除し、文字色や下線をデフォルトに戻す「ExcelScript.ClearApplyTo.hyperlinks」

この例では、clear()メソッドを用いて、セル内のハイパーリンクを削除し、さらに文字色や下線もデフォルトに戻す方法を紹介します。

セル内のテキストを残しつつ、リンクや書式のみをクリアしたい場合に便利です。

コード例 | ハイパーリンクを削除し文字色と下線をリセット

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();

  // 対象となるセル範囲 "B2:D4" を指定
  let range: ExcelScript.Range = sheet.getRange("B2:D4");

  // セル範囲内のハイパーリンクのみを削除
  range.clear(ExcelScript.ClearApplyTo.hyperlinks);

  // 文字色と下線の書式をリセット
  range.getFormat().getFont().setColor("#000000"); // 文字色をデフォルトの黒に設定
  range.getFormat().getFont().setUnderline(ExcelScript.RangeUnderlineStyle.none); // 下線を削除
}

処理結果

使用例3: ハイパーリンクを削除し、文字色や下線をデフォルトに戻す「ExcelScript.ClearApplyTo.hyperlinks」使用」の処理結果

コードの動作概要

STEP
セル範囲を指定

getRange("B2:D4")メソッドを使って、操作対象となるセル範囲「B2」から「D4」を指定します。
ここで指定された範囲内のハイパーリンクや書式を変更します。

STEP
clear()メソッドでハイパーリンクを削除

clear(ExcelScript.ClearApplyTo.hyperlinks)を使用して、指定範囲内のハイパーリンクのみを削除します。
データや書式はそのまま保持されます。

STEP
文字色と下線のリセット

getFont().setColor("#000000")を使って文字色をデフォルトの黒色に戻し、getFont().setUnderline(ExcelScript.RangeUnderlineStyle.none)を用いて下線を削除します。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook) {
    • 関数「main」を定義し、スクリプトの実行内容を設定します。
      「workbook」はExcelのブックを操作するための引数です。
  2. let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
    • getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
  3. let range: ExcelScript.Range = sheet.getRange(“B2:D4”);
    • 「getRange(“B2:D4”)」を使用して、クリア対象のセル範囲「B2」から「D4」を指定します。
  4. range.clear(ExcelScript.ClearApplyTo.hyperlinks);
    • 「clear(ExcelScript.ClearApplyTo.hyperlinks)」を使用し、セル範囲内のハイパーリンクのみを削除します。
  5. range.getFormat().getFont().setColor(“#000000”);
    • 「setColor(“#000000”)」でフォントの色をデフォルトの黒に設定します。
  6. range.getFormat().getFont().setUnderline(ExcelScript.RangeUnderlineStyle.none);
    • 「setUnderline(ExcelScript.RangeUnderlineStyle.none)」で下線を削除します。
  7. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、clear()メソッドの ExcelScript.ClearApplyTo.hyperlinks オプションと書式設定の変更を組み合わせて、セル内のハイパーリンクを削除し、文字色と下線をデフォルトに戻す方法を紹介しています。

ハイパーリンクの除去と書式の統一が同時に行えるため、シンプルで読みやすい表を作成したい場合に役立ちます。

使用例4: 表データの最終行・最終列を自動で取得し、値のみをクリアする「ExcelScript.ClearApplyTo.contents」

この例では、clear()メソッドと最終行・最終列を動的に取得する関数を使って、表データの範囲を動的に指定し、値(データ)だけをクリアする方法を紹介します。

これにより、シートの構成が変わっても、データ範囲を自動で取得してクリアすることが可能です。

コード例 | 最終行・最終列を自動で取得して値のみをクリア

function main(workbook: ExcelScript.Workbook) {
  let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();

  // 最終行と最終列を取得
  let lastRow: number = getLastDataRow(sheet); // 最終行を取得する関数を呼び出し
  let lastColumn: number = getLastDataColumn(sheet); // 最終行を取得する関数を呼び出し

  // 動的に取得したセル範囲内のデータのみをクリア
  let range: ExcelScript.Range = sheet.getRangeByIndexes(1, 1, lastRow - 1, lastColumn - 1); // B2から最終行・最終列まで
  range.clear(ExcelScript.ClearApplyTo.contents);
}


// ↓ 正確に最終行を求める関数
function getLastDataRow(sheet: ExcelScript.Worksheet): number {
  let usedRange: ExcelScript.Range = sheet.getUsedRange();
  if (!usedRange) return 0;

  let startRow: number = usedRange.getRowIndex();
  let rowCount: number = usedRange.getRowCount();
  let columnCount: number = usedRange.getColumnCount();

  for (let i: number = rowCount - 1; i >= 0; i--) {
    let rowIndex: number = startRow + i;
    let range: ExcelScript.Range = sheet.getRangeByIndexes(rowIndex, 0, 1, columnCount);
    let values = range.getValues()[0];

    // 行内の各セルをチェック
    if (values.some(cell => {
      if (cell === null || cell === undefined) {
        return 0;
      }
      if (typeof cell === 'string') {
        return cell.trim() !== "";
      }
      return true; // 数値やブール値など、非文字列型はデータありと判断
    })) {
      return rowIndex + 1;
    }
  }
  return 0;
}


// ↓ 正確に最終列を求める関数
function getLastDataColumn(sheet: ExcelScript.Worksheet): number {
  let usedRange: ExcelScript.Range = sheet.getUsedRange();
  if (!usedRange) return 0;

  let startColumn: number = usedRange.getColumnIndex();
  let rowCount: number = usedRange.getRowCount();
  let columnCount: number = usedRange.getColumnCount();

  for (let i: number = columnCount - 1; i >= 0; i--) {
    let columnIndex: number = startColumn + i;
    let range: ExcelScript.Range = sheet.getRangeByIndexes(0, columnIndex, rowCount, 1);
    let values = range.getValues();

    // 列内の各セルをチェック
    if (values.some(row => {
      let cell = row[0];
      if (cell === null || cell === undefined) {
        return 0;
      }
      if (typeof cell === 'string') {
        return cell.trim() !== "";
      }
      return true; // 数値やブール値など、非文字列型はデータありと判断
    })) {
      return columnIndex + 1;
    }
  }
  return 0;
}

処理結果

使用例4: 表データの最終行・最終列を自動で取得し、値のみをクリアするの処理結果

コードの動作概要

STEP
最終行・最終列を取得

getLastDataRow(sheet)およびgetLastDataColumn(sheet)関数を使用して、表データの最終行と最終列を動的に取得します。
これにより、表のサイズが変動しても自動で範囲が調整されます。

STEP
取得した範囲内の値のみをクリア

getRangeByIndexes(1, 1, lastRow - 1, lastColumn - 1)で動的に取得した範囲を指定し、clear(ExcelScript.ClearApplyTo.contents)を使用して値(データ)のみをクリアします。
書式やリンクは保持されます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. function main(workbook: ExcelScript.Workbook) {
    • 関数「main」を定義し、スクリプトの実行内容を設定します。
      「workbook」はExcelのブックを操作するための引数です。
  2. let sheet: ExcelScript.Worksheet = workbook.getActiveWorksheet();
    • getActiveWorksheet()メソッドで、アクティブなシート(現在選択されているシート)を取得し、変数「sheet」に格納します。
  3. let lastRow: number = getLastDataRow(sheet);
    • 「getLastDataRow()」関数を使用して、表の最終行のインデックスを取得します。
  4. let lastColumn: number = getLastDataColumn(sheet);
    • 「getLastDataColumn()」関数を使用して、表の最終列のインデックスを取得します。
  5. let range: ExcelScript.Range = sheet.getRangeByIndexes(1, 1, lastRow – 1, lastColumn – 1);
    • 取得した最終行・最終列を用いて、クリア対象の範囲「B2」から指定範囲を動的に設定します。
  6. range.clear(ExcelScript.ClearApplyTo.contents);
    • 「clear(ExcelScript.ClearApplyTo.contents)」を使って、指定範囲内のデータのみをクリアします。
      書式やハイパーリンクはそのまま残ります。
  7. }
    • 関数「main」の終了を示しています。

総括・ポイント

この使用例では、clear()メソッドと最終行・最終列を自動で取得する関数を組み合わせることで、データ範囲を柔軟に指定してクリアする方法を示しています。

表のデータ範囲が動的に変わる場合に非常に便利です。

この記事のまとめ

この記事では、Officeスクリプトの clear() メソッドを用いてExcelシート内のセル内容や書式をクリアする方法について詳しく解説しました。

用途に応じて異なるオプションを使い分けることで、セルの内容を柔軟に管理する方法を学べます。

さらに、最終行・最終列の自動取得やデータバックアップについても解説しているため、実用的なスクリプト作成が可能になります。

ポイントのおさらい

さらに学ぶために

Officeスクリプトでのクリア操作を理解したら、次のステップとして データフィルタリング や 条件付き書式の自動化、集計操作 を学ぶと、さらに高度なExcel操作ができるようになります。

あわせて読みたい
サイトマップ VBAOfficeスクリプトワークシート関数 VBA 基本設定 VBAとは? VBAの始め方 VBAのおすすめ設定 セル操作 RangeとCells CurrentRegion Offset Resize 最終行・最終列の取...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次