こんにちは、blueです。
今回はOffice ScriptsでのExcel操作(ワークブック、ワークシート、セル操作)について説明します。
VBAとOffice Scriptsはプログラミング言語が異なる為、書き方は大きく異なります。
ただプログラミングの基本は同じですので異なる部分を勉強していけば理解は早いと思います。
VBAと異なる部分も多いですが一つずつ丁寧に説明しますのでぜひ勉強していってください。
Office Scriptsを一から学んでみたい方は以下の書籍がお勧めです。TypeScriptの基本からPower Automateへの連携まで、OfficeScriptsを扱う為必要なすべての内容が書かれています。
Office Scriptsって何?という基本から知りたい方は以下の書籍がお勧めです。技術書ながら非常に読みやすい構成となっているので、本を読むのが苦手な人もストレスなく勉強できるかと思います。
Workbookオブジェクト
Office Scriptsでは新しいスクリプトを実行すると自動的にWorkbookオブジェクトが取得されます。
~Office Scriptsの場合~
function main(workbook: ExcelScript.Workbook) {
}
~VBAの場合~
Function main(wb As Workbook)
Set wb=ThisWorkbook
End Function
functionはVBAのFunctionプロシージャと同じです。
Office Scriptsでは自動でmain関数が作成されるとともに受け取る引数としてworkbookが指定されます。
引数の型であるExcelScriptはVBAでいうApplicationクラスになります。
Excel関連の処理をまとめており、その中のWorkbookクラスを指定しています。
このWorkbookオブジェクトから開いているワークブックに関する様々な情報を取り出していきます。
Worksheetオブジェクト
Office ScriptsでWorksheetオブジェクトを取得するには以下の様なメソッドを使います。
~Office Scriptsの場合~
- getActiveWorksheet()
- getWorksheet(“Sheet1”)
- getWorksheets()
~VBAの場合~
- ActiveWorksheet
- Worksheets(“Sheet1”)
- Worksheets
VBAはプロパティによる取得でしたが、OfficeScriptはメソッドで取得します。
Office Scriptsでは取得系メソッドの接頭語にはgetをつけるのがルールになっているようです。
VBAにはない記載方法なので最初は注意が必要です。
Rangeオブジェクト
OfficeScriptsでRangeオブジェクトを取得するには以下の様なメソッドを使います
~Office Scriptsの場合~
- getActiveCell()
- getCell(行番号,列番号)
- getRange(”A1″)
~VBAの場合~
- ActiveCell
- Cells(行番号, 列番号)
- Range(“A1”)
メソッドということとgetがつく以外はVBAとほぼ同じになります。
その他VBAに存在するようなものも存在します(getUsedRange()など)
その他取得系メソッド
OfficeScriptsでシートやセルの情報を取得するには以下の様なものがあります。
~Office Scriptsの場合~
- getAddress()
- getValue()
- getValues()
- getName()(Workbookの名前、Worksheetの名前)
~VBAの場合~
- Address
- Value
- Values
- Name
これらもVBAと非常に似ていてgetを記載することを意識していれば出てくると思います。
代入メソッド
Office Scriptsでセルなどに代入するには以下の様なメソッドを使います。
~Office Scriptsの場合~
- setValue(値)
- setValues(配列)
- setName(名前)(Workbookの名前、Worksheetの名前)
~VBAの場合~
- Value=値
- Values=配列
- Name=値
VBAではValueプロパティに代入する(Value=値)が普通でしたがOfficeScriptはsetメソッドで取得します。
Office Scriptsでは代入系メソッドの接頭語にはsetをつけるのがルールになっているようです。
こちらもVBAにはない記載方法なので最初は注意が必要です。
代入する値はメソッドの引数に指定することになります。
取得後の注意
Office Scriptsでは取得した情報の型も厳密に合わせる必要があります。
以下はbufという変数にセルA1の情報を格納しています。
~Office Scriptsの場合~
- let buf: string
- buf=workbook.getWorksheet(“Sheet1”).getRange(“A1”).getValue().toString()
~VBAの場合~
- Dim buf As String
- buf=ThisWorkbook.Worksheets(“Sheet1”).Range(“A1”).Value
VBAの場合は数値型などは自動的に文字列に型変換してくれますが、Office Scriptsは厳密に指定をする必要があります。
その為、取得した値をtoStringメソッドを使って文字列型に変換しています。
(VBAには型変換関数としてCStrやCLngが存在します)
今回のまとめ
今回はOffice ScriptsでのExcel操作について説明しました。
Workbookオブジェクト以降はget○○○メソッドで取得するのがOffice Scriptsの基本になることが分かっていただけたかと思います。
Office Scriptsに関しては体系的に勉強することも重要です。以下の書籍では基本的なところから応用まで記載してくださっているので「もっと書けるようになりたい!」という方はぜひこちらもご検討ください
Office Scriptsを一から学んでみたい方は以下の書籍がお勧めです。TypeScriptの基本からPower Automateへの連携まで、OfficeScriptsを扱う為必要なすべての内容が書かれています。
Office Scriptsって何?という基本から知りたい方は以下の書籍がお勧めです。技術書ながら非常に読みやすい構成となっているので、本を読むのが苦手な人もストレスなく勉強できるかと思います。
コメント