一般的な問題への対処

このガイドでは、マクロ コンバーターを使用して Visual Basic for Applications(VBA)コードを Apps Script に変換する際に発生する可能性のある一般的な問題について説明します。

ファイルを印刷する VBA API は自動的に Apps Script に変換されますが、元の VBA API とは異なる動作をする可能性があります。次の表に 2 つの例を示します。

VBA APIApps Script での動作
PrintOutApps Script に変換されますが、Apps Script API はプリンタではなくファイルに出力します。PDF ファイルを手動で印刷します。
PrintToFileApps Script に変換します。PDF ファイルはマイドライブ フォルダに保存されます。

未変換のアイテム

次の機能はマクロ コンバータで変換されないため、手動で変換する必要があります。

トリガー

2 種類のトリガー(キーボード ショートカットと一部のイベントベースのトリガー)は、マクロ コンバータで変換されません。多くの場合、これらのトリガーは手動で作成できます。

キーボード ショートカット

キーボード ショートカットを追加するには、関数をマクロとしてインポートする手順に沿って操作します。

イベントに基づくトリガー

BeforeCloseBeforeSave などの VBA コードのイベントには、Apps Script に同等のものはありませんが、回避策を作成できる場合があります。

BeforeClose などのイベントでは、スプレッドシートを閉じる前に実行する必要があるアクションを行うためのカスタム メニューやボタンを作成できます。

Google スプレッドシートでは変更が自動的に保存されるため、BeforeSave イベントの回避策は存在しません。

Userforms

VBA では、UserForm は、アプリケーションのユーザー インターフェース(UI)のウィンドウまたはダイアログです。Macro Converter では UserForm は変換されません。Apps Script で手動で作成します。

ユーザー フォーム ダイアログを作成する

  1. パソコンで、変換したファイルを スプレッドシートで開きます。
  2. 上部の [拡張機能] > [** Apps Script**] をクリックします。
  3. エディタの左側にある [ファイル] の横のファイルを追加アイコン > [HTML] をクリックします。HTML ファイルには、元の VBA UserForm と同じ名前を付けることをおすすめします。
  4. フォームに表示するフィールドと情報を追加します。HTML フォームについて詳しくは、W3school.com をご覧ください。
  5. 左側で、変換されたコードを含む Apps Script ファイル(GS ファイル)をクリックします。
  6. コードに 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);
    }
        
  7. userform_module_name は、追加した HTML ファイルの名前に置き換えます。
  8. 上部の [プロジェクトを保存] アイコン をクリックします。
  9. Google スプレッドシートに切り替えて、ページを再読み込みします。
  10. Google スプレッドシートの上部にある [User Form] > [Show Form] をクリックします。

名前付き範囲

Excel では、名前付き範囲は単一のセルまたはセルの範囲に付けられた名前です。

Excel ファイルを Google スプレッドシートに変換する際、サポートされていない特定の名前付き範囲の種類は変換されません。次の表に、一般的な例を示します。

サポートされていない名前付き範囲説明
テーブルスプレッドシートではサポートされていませんが、回避策があります。

この名前付き範囲をスプレッドシートで再作成するには、テーブル範囲の A1 形式を指す名前付き範囲を追加します。変換されたコードが認識できるように、VBA コードで元の名前付き範囲と同じ名前を使用します。
範囲のリストスプレッドシートではサポートされていません。回避策はありません。