0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エクセルやスプレッドシート自動化のためのVBA、GAS、openpyxl対応表

Last updated at Posted at 2024-11-30

導入などについてはこちらも参照

処理 VBA GAS openpyxl
ブック作成 Workbooks.Add SpreadsheetApp.create("hoge"); Workbook()
シート追加 Worksheets.Add SpreadsheetApp.getActiveSpreadsheet().insertSheet("hoge"); WorkBook.create_sheet(title="hoge")
シート名変更 Worksheets("hoge") SpreadsheetApp.getActiveSpreadsheet().getSheetByName("hoge").setName("fuga"); Workbook.active.title = "fuga"
セルの値を取得
  • Range("A1").Value
  • Cells(1,1).Value
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1").getValue()
  • Workbook.active["A1"].value
  • Workbook.active.cell(1,1).value
セルに値を挿入
  • Range("A1").Value = "hoge"
  • Cells(1,1).Value = "hoge"
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1").setValue("hoge")
  • Workbook.active["A1"] = "hoge"
  • Workbook.active.cell(1,1).value = "hoge"
入力プロンプト表示 InputBox("メッセージ") SpreadsheetApp.getUi().prompt("メッセージ"); input("メッセージ")
ログ出力 Debug.print "hoge"
  • console.log("hoge");
  • Logger.log("hoge");
print("hoge")

ちなみに型宣言の有無、コードの冗長性の観点での個人的な使いやすさで言うと以下。

openpyxl > VBA > GAS

スプレッドシート関連の処理以外の処理でいうと、JavaScriptに慣れているのもあってGASはスラスラ書けるんだけども、スプレッドシート関連の処理に関してはいかんせん冗長で仕様の把握がしづらい。

対応表を見ての通り、openpyxlではシート名やセルの指定にキー指定する形をとっているが、GASではgetterの引数という形で指定するので、ある操作に対応するメソッドを把握する必要がある上にメソッド名が長くてコードの1行が長くなってなんかヤダ。

VBAはopenpyxlでは原理的にムリなMsgBoxでのExcelのメッセージボックス表示などが出来たり、セル指定をする際などはアクティブなブックやシートを明示的に指定しなくてもよいなどのグッドポイントがあるが、ForNextDo WhileLoopIfEnd Ifなど制御構文の終わりを構文として書くのが面倒くさい。

余談だけども最近はPythonでExcelいじったりAtCoderやったりしてるせいもあってJavaScriptのiffor文の条件部分のカッコ()や処理部分の波カッコ{}にも違和感を覚えるようになってしまった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?