マクロ コンバーターを使用して VBA コードを Apps Script に変換する際に発生する可能性のある一般的な問題を以下に示します。
印刷
ファイルを印刷する VBA API は自動的に Apps Script に変換されますが、元の VBA API とは異なる動作をする可能性があります。以下に 2 つの例を示します。
VBA API | Apps Script での動作 |
---|---|
PrintOut | Apps Script に変換されますが、Apps Script API はプリンタではなくファイルに出力します。PDF ファイルを手動で印刷できます。 |
PrintToFile | Apps Script に変換します。PDF ファイルはマイドライブ フォルダに保存されます。 |
未変換のアイテム
次の機能はマクロ コンバータで変換されないため、手動で変換する必要があります。
トリガー
キーボード ショートカットと一部のイベントベースのトリガーという 2 種類のトリガーは、マクロ コンバータで変換されません。多くの場合、これらのトリガーは手動で作成できます。
キーボード ショートカット
キーボード ショートカットを追加するには、関数をマクロとしてインポートする手順に沿って操作します。
イベントに基づくトリガー
VBA コードのイベント(BeforeClose
や BeforeSave
など)には、Apps Script に同等のものがないものもありますが、回避策を作成できる場合があります。
BeforeClose
などのイベントでは、スプレッドシートを閉じる前に実行する必要があるアクションを行うためのカスタム メニューやボタンを作成できます。
Google スプレッドシートでは編集内容が自動的に保存されるため、BeforeSave
などのイベントの回避策は実現できません。
Userforms
VBA では、UserForm はアプリケーションのユーザー インターフェース(UI)のウィンドウまたはダイアログ ボックスです。Macro Converter では UserForm は変換されません。Apps Script で手動で作成できます。
ユーザー フォーム ダイアログを作成する
- パソコンで、変換したファイルを Google スプレッドシートで開きます。
- 上部の [拡張機能] > [** Apps Script**] をクリックします。
- エディタの左側にある [ファイル] の横にある [ファイルを追加] > [HTML] をクリックします。HTML ファイルには、元の VBA UserForm と同じ名前を付けることをおすすめします。
- フォームに表示するフィールドと情報を追加します。HTML フォームについて詳しくは、W3school.com をご覧ください。
- 左側で、変換されたコードを含む Apps Script ファイル(GS ファイル)をクリックします。
- コードに
onOpen()
トリガーがすでに存在する場合は、以下のコードで更新します。コードにonOpen()
トリガーがない場合は、次のコードを追加します。function onOpen() { SpreadsheetApp.getUi() .createMenu('User Form') .addItem('Show Form', 'showForm') .addToUi(); } function showForm() { var html = HtmlService.createHtmlOutputFromFile('userform_module_name') .setWidth(100) .setTitle('Sign-up for Email Updates'); SpreadsheetApp.getUi().showSidebar(html); }
userform_module_name
は、追加した HTML ファイルの名前に置き換えます。- 上部の [プロジェクトを保存] アイコン をクリックします。
- Google スプレッドシートに切り替えて、ページを再読み込みします。
- Google スプレッドシートの上部にある [User Form] > [Show Form] をクリックします。
名前付き範囲
Excel では、名前付き範囲は単一のセルまたはセルの範囲に付けられた名前です。
Excel ファイルを Google スプレッドシートに変換する際、一部の名前付き範囲はサポートされていないため、変換されません。以下に 2 つの例を示します。
サポートされていない名前付き範囲 | 説明 |
---|---|
テーブル | Google スプレッドシートではサポートされていませんが、回避策があります。 この名前付き範囲をスプレッドシートで再作成するには、テーブル範囲の A1 表記を指す名前付き範囲を追加します。変換されたコードが認識できるように、VBA コードで元の名前付き範囲と同じ名前を使用します。 |
範囲のリスト | Google スプレッドシートではサポートされていません。回避策はありません。 |
関連記事
- Macro Converter アドオンの概要
- VBA マクロの互換性を確認する
- VBA マクロを Apps Script に変換する
- 変換されたコードのエラーを修正する
- Macro Converter のチュートリアルを見る
- 互換性のある VBA API のリスト