Accessマクロで保存済みインポートエクスポート操作が表示されないときの対処

概要

この記事の結論
保存済みインポート・エクスポートがマクロで見つからないときは、「アクション自体がない」のか「保存した操作名が候補にない」のかを分けます。デスクトップマクロか、アクション表示設定はどうかを確認し、保存済み操作が現在のデータベースに存在するか調べます。ウィザードの詳細設定で保存するテキスト形式定義は別物で、実行方法も異なります。

この記事でわかること

  • アクション不足と操作名不足を分ける
  • テーブルのデータマクロと区別
  • 保存先DBと定義の種類を確認
  • 信頼設定を一括解除しない

この記事の主な内容

  1. 最初に表示されない対象を切り分ける
  2. マクロアクションが見つからない場合
  3. 保存済み操作名が候補にない場合
  4. テキスト形式定義との違い
  5. マクロまたはVBAで実行を確認する
  6. 再発を防ぐ保存と配布のルール
  7. よくある質問

想定読了時間:約8分~10分


1 最初に表示されない対象を切り分ける

「表示されない」には少なくとも3つの状態があります。
マクロの追加候補に実行アクションがない、アクションはあるが保存済み操作名がない、操作名は選べるが実行時に失敗する、という状態です。最初にどこで止まっているかを確認します。

表示されない場所で原因を分ける。アクションがない、操作名がない、実行時に失敗を整理しています。
状態最初に調べる場所
アクションが見つからないマクロの種類と表示設定
保存した名前が出ない現在のDBと保存した定義の種類
名前はあるが実行できない信頼設定、ファイル、権限、保存先

確認するアクションはRunSavedImportExportです。
日本語画面では「保存済みのインポート/エクスポート操作の実行」に相当する名前で表示されます。
版によって表記が違う場合もあるため、英語名と役割を合わせて確認しましょう。

参考:Microsoft RunSavedImportExportマクロアクション


2 マクロアクションが見つからない場合

まず、通常のデスクトップデータベースのマクロを編集しているか確認します。
テーブルのイベントで使うデータマクロは利用できるアクションが異なり、デスクトップマクロと同じ候補は出ません。
[作成]から通常のマクロを新規作成して比較すると切り分けやすくなります。

1. 通常のマクロデザイナーを開き、アクション一覧を確認します。

2. [すべてのアクションを表示]の設定がある場合は表示を切り替え、候補を確認します。

3. RunSavedImportExportに相当するアクションを探します。

4. アクションが確認できても実行できない場合は、データベースが信頼されているかを別途確認します。

Microsoftは、このアクションは信頼されていないデータベースでは許可されないとしています。
候補表示と実行許可は別の問題です。
入手元と内容を確認したファイルについて、組織のルールに沿った信頼設定を行います。すべてのマクロを無条件に有効化する必要はありません。

参考:Microsoft RunSavedImportExportマクロアクション


3 保存済み操作名が候補にない場合

[外部データ]の[保存済みのインポート操作]または[保存済みのエクスポート操作]を開き、目的の名前があるか確認します。ここにない場合、操作を保存していない、別のDBへ保存した、別種類の定義を保存した、といった可能性があります。

  • いま開いているACCDBが、操作を保存したファイルと同じか。
  • インポート側とエクスポート側の両方を確認したか。
  • 操作完了後に保存し、分かりやすい名前を付けたか。
  • 配布用フロントエンドにその保存済み操作が含まれているか。

別のDBで保存した操作名は、現在のDBの候補として自動共有されるわけではありません。
保存直後にマクロを開いたままなら、一度閉じて開き直して候補を確認します。
それでもなければ、保存先と定義の種類を見直してください。

参考:Microsoft インポートまたはエクスポート操作の詳細を保存する

参考: Microsoft RunSavedImportExportメソッド


4 テキスト形式定義との違い

テキストファイルのウィザードにある[詳細設定]で保存した定義と、操作完了後に保存する操作の詳細は別物です。名称が似ていても、同じ一覧に出ることを期待すると迷いやすくなります。

保存方法と実行方法の対応。完了後に保存:RunSavedImportExport、詳細設定で保存:TransferTextを整理しています。
保存するタイミング保存したもの主な実行方法
操作完了後保存済みインポート・エクスポートRunSavedImportExport
テキストの詳細設定区切りや列の形式定義TransferTextのSpecificationName

例えば「受注CSV形式_v1」を詳細設定で保存しても、保存済み操作の選択候補にそのまま出るものではありません。
形式定義としてTransferTextから使用するか、ウィザードを最後まで実行して操作自体を別に保存します。

参考:Microsoft TransferTextメソッド
参考: Microsoft インポートまたはエクスポート操作の詳細を保存する

複数テーブルや複数端末への影響が分からない場合は、変更目的と現状の構成を整理してお気軽にご相談ください。


5 マクロまたはVBAで実行を確認する

保存済み操作の名前をVBAで確認する

通常のマクロで候補を確認できない場合、次の例で現在のDBにある保存済み操作名をイミディエイトウィンドウへ表示できます。
Alt+F11でVBEを開き、標準モジュールへ記載します。
これは名前を列挙するだけでデータの取り込みを実行しません。

Public Sub ListSavedOperations()
    Dim item As Object
    For Each item In CurrentProject.ImportExportSpecifications
        Debug.Print item.Name
    Next item
End Sub

一覧に目的の名前がある場合は、マクロのRunSavedImportExportでその名前を指定します。
VBAで実行するなら次の形です。
実際の保存済み操作名へ置き換え、取り込み先の重複や出力ファイルの上書きが起きない検証環境で試してください。

DoCmd.RunSavedImportExport “受注CSV取込_日次”

実行に失敗したら、エラー番号とメッセージを控え、元ファイルの存在、保存先の権限、対象テーブルの構造を確認します。候補が表示されない問題から、実行条件の問題へ調査を切り替えます。

参考:Microsoft RunSavedImportExportメソッド


6 再発を防ぐ保存と配布のルール

再発を防ぐには、保存済み操作とマクロを同じ配布版に含め、名称と用途を記録します。
バックエンドへ保存した操作を、別のフロントエンドから当然に呼べると思い込まないことが大切です。

  • 保存したDB名、操作名、対象ファイル、取り込み先を一覧にする。
  • マクロが参照する名前を変えたら、呼び出し側も更新する。
  • 配布前に別PCで必要な操作が存在するか確認する。
  • 処理済み管理とエラー記録を設け、失敗後の二重取り込みを防ぐ。

繰り返しファイル名や対象期間が変わる場合は、保存済み操作が適しているかを見直します。
形式定義とVBAで引数を管理する方が分かりやすい場合もあります。
定義の作成と変更方法を整理している関連記事もありますので必要に応じてご参照ください。


よくある質問(FAQ)

必ずではありません。
通常のマクロか、操作が同じDBに保存されているか、定義の種類が合っているかも確認します。

それはテキスト形式定義の可能性があります。
保存済み操作とは別なので、TransferTextなどで利用します。

信頼設定、ファイルの存在、権限、取り込み先や出力先の状態を確認します。
エラー内容を記録して切り分けてください。

現在のDBへ自動で共有されません。
利用するフロントエンドに必要な操作を用意し、呼び出し名を揃えます。

Accessマクロと定期取り込みの不具合調査が必要な場合

この記事の手順を作業用コピーで確認しても解決しない場合や、業務への影響が大きく自社だけで判断しにくい場合は、お気軽にご相談ください。Accessの現在の構成、発生している症状、変更したい内容をもとに、調査・改修の範囲を整理します。

ご相談時は、Accessの製品名・Build・bit数、エラーの内容、対象ファイルの構成、直前に変えた設定を分かる範囲でお知らせください。機密データやパスワードは公開フォーム等へそのまま記載しないでください。


参考情報

Microsoft RunSavedImportExportマクロアクション

Microsoft RunSavedImportExportメソッド

Microsoft インポートまたはエクスポート操作の詳細を保存する

Microsoft TransferTextメソッド

TOP