目次
はじめに
VBA と Office Scripts は似ているようで全く別物です。
このチートシートでは、よく使う処理を“即書換できる形”で一覧化しています。
基本構造
| VBA | Office Scripts |
|---|---|
| Sub マクロ() | function main(workbook) |
Sub Sample()
End Subfunction main(workbook: ExcelScript.Workbook) {
}セル操作
値の読み書き
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| 読み込み | Range(“A1”).Value | getRange(“A1”).getValue() |
| 書き込み | Range(“A1”).Value = 1 | getRange(“A1”).setValue(1) |
Range("A1").Value = 100sheet.getRange("A1").setValue(100);Cells指定
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| A1セルの指定 | Cells(1,1) | getCell(0,0) |
👉 0始まりに注意
範囲操作
範囲取得
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| セル範囲の指定 | Range(“A1:B5”) | getRange(“A1:B5”) |
行・列
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| 1行目を指定 | Rows(1) | getRange(“1:1”) |
| 1列目を指定 | Columns(1) | getRange(“A:A”) |
シート操作
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| シート指定 | Worksheets(“Sheet1”) | getWorksheet(“Sheet1”) |
| アクティブシート | ActiveSheet | getActiveWorksheet() |
Worksheets("Sheet1").Range("A1").Value = 1let sheet = workbook.getWorksheet("Sheet1");
sheet.getRange("A1").setValue(1);ループ処理
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| 10回のループ処理 | For i = 1 To 10 | for (let i = 0; i < 10; i++) |
For i = 1 To 3
Cells(i,1).Value = i
Next ifor (let i = 0; i < 3; i++) {
sheet.getCell(i,0).setValue(i+1);
}条件分岐
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| IF文による分岐処理 | If ~ Then | if ( ) |
If Range("A1").Value > 10 Then
MsgBox "OK"
End Ifif (sheet.getRange("A1").getValue() > 10) {
console.log("OK");
}最終行の取得
Dim lastRow As Long
lastRow = Cells(Rows.Count,1).End(xlUp).Rowlet lastRow = sheet.getUsedRange().getLastRow().getRowIndex();👉 Office ScriptsはUsedRangeベース
書式設定
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| 文字書体を「太字」にする | Font.Bold = True | getFormat().getFont().setBold(true) |
Range("A1").Font.Bold = Truesheet.getRange("A1").getFormat().getFont().setBold(true);クリア処理
| 操作内容 | VBA | Office Scripts |
|---|---|---|
| A1セルをクリア | Range(“A1”).Clear | clear() |
Range("A1").Clearsheet.getRange("A1").clear();配列処理(重要)
VBA
Dim data
data = Range("A1:B2").ValueOffice Scripts
let data = sheet.getRange("A1:B2").getValues();👉 配列は2次元配列
NGパターン(重要)
Select / Activate(使えない)
Range("A1").Select
Selection.Value = 1👇
sheet.getRange("A1").setValue(1);よく使う置き換えまとめ
| VBA | Office Scripts |
|---|---|
| Value | getValue / setValue |
| Cells | getCell |
| Range | getRange |
| Worksheets | getWorksheet |
| ActiveSheet | getActiveWorksheet |
| MsgBox | console.log |
対応できない主な機能
| 機能 | 可否 |
|---|---|
| UserForm | ❌ |
| ファイル操作 | ❌ |
| API通信 | ◎(fetch) |
おわりに (まとめ)
まとめ
このチートシートはよく使う処理「書き換えのヒント集」です。
- VBAは 1 始まり → Office Scriptsは 0 始まり
- Selectは不要
- Workbookから操作する構造になる
より高度な自動化を行う場合は、Power Automate との連携も検討すると効果的です。
次回は、生成AIを利用して既存VBAコードを書き換えてみたいと思います。
この記事が、少しでも誰かのお役に立てれば幸いです。
当サイトの記事で使用したVBAなどのサンプルをDLできます
この記事のサンプルはありません!
ダウンロードページへは下のカードをクリックすればジャンプできます。
よろしければご利用ください!
サンプルのダウンロードはこちらから


【Excel VBA】サンプルファイル_ダウンロードのページ
・最新の登録データが一番上になっています。・目次クリックでジャンプできますのでご利用ください。 ダウンロード一覧(1/7ページ目)新しい登録順です 記事ごとに使っ…
