確認環境 OS And Office Version
Windows10 64 bit Micrsoft Access Latest Version (64bit)
発見の端緒
以前(2019年)に作成したaccdbファイルを開こうとしたとしたところ、
ewcfCtrl.dllを検索しています
と表示されては消えるというループを繰り返す。
アクセス自体を、タスクバーのアイコンから閉じる。また、タスクマネージャーから終了。そうしないと終了できない。
Access データベースの参照の問題を解決する方法
今回は、この3の段階で止まるようだ。Access Visual Basic参照の解決
Access は、参照ボックスに表示される情報に従って、各参照に関連するファイル (タイプ ライブラリ、オブジェクト ライブラリ、コントロール ライブラリなど) を読み込む。 Access でファイルが見当たらないなら、Access は次の手順を実行してファイルを検索します。
- 参照されているファイルが現在メモリに読み込まれているかどうかを確認するアクセス チェック。
- ファイルがメモリに読み込まれない場合、Access はレジストリ キーが RefLibPaths 存在することを確認します。 キーが存在する場合、Access は参照と同じ名前の名前付き値を検索します。 一致がある場合、Access は、名前付き値がポイントするパスから参照を読み込む。
- 次に、Access は次の場所にある参照先ファイルを次の順序で検索します。
- Application フォルダー (Msaccess.exeのファイルの場所)。
- [ファイル] メニューの [開く] をクリック した場合に 表示される現在 のフォルダー 。
- オペレーティング Windowsファイルが実行されているフォルダーまたは Winnt フォルダー。
- [システム] フォルダーまたは [winnt] Windowsの下にある System フォルダー。
- オペレーティング システムから直接アクセスできる PATH 環境変数内のフォルダー。
- Access でファイルが見当たらないなら、参照エラーが発生します
Access でファイルを開くと "切断された参照が含まれています" というエラー メッセージが表示される
これも同じの原因で発生する。
またExcelなどではMID関数が含まれているとエラーになることが知られている。
定番のVBA関数でコンパイルエラーが出たときの対処法 - moug
Excelであったら、同様の現象が起きたと思われる。
リペアをテストしたが無効
セーフモード
ファイルを
Winキー+R
msaccess.exe ファイルフルパス /safe
で起動
それでもエラーが発生するがCtrl + Break等でなんとか止まる。
ALT+F11でVBEを開く。
参照設定を開こうとしても、エラーが起きるが、Ctrl+Breakで止める。
参照設定をはずす。
現時点ではこれ以外の参照不可はなかった。
原因(調査中)
マイクロソフトが削除したのか、または何らかの操作ミスで削除してしまったのかは不明だが、
従来は
C:\Program Files\Microsoft Office\Office14\EAWFCTRL.DLL
現在の64bit版の場合
%programfiles%\Microsoft Office\root\Office16\
%programfiles(x86)%\Microsoft Office\root\Office16\EAWFCTRL.DLL
というように存在していたが、なぜかDLL自体が削除されている。
もしくは削除したか・・・しかし、このような場所のファイルを削除しない。どうも削除されたとしか思われない。
後述するように東アジア限定のSharePoint関連のもので、Office2007との後方互換のためのものであり、個人のOfficeには必要がないため削除されたのか。
https://kaidnu2.hatenadiary.org/entry/20081011/1223701109
によると、Office 2007に 1.0であったらしい。
いずれにしろ、公式の発表もなく不明だが、このdllがないことにより、参照設定をするときにエラーになるか、参照設定したファイルを開くとエラーになる。
eawfctrlに関する考察
仮説その1
これを使用しているサンプルはない。
Should I Block itという怪しげなサイト(なのでリンクしない)によると、
説明: MicrosoftOfficeグループ承認管理
となっている。奇妙なことにこれがインストールされているのは日本、中国、台湾だけらしい。
そうであれば、サンプルがないこと、これに関する記述が漢字で見つかることも理解できる。
eawfとは東アジアの幅east asaia width、つまり全角文字のコントロールではないか。また2010との互換性のために存在したのかもしれない。
だが、fはこれではいらない。
仮説その2
https://download.microsoft.com/download/6/B/C/6BC3C77E-328E-4B51-ACE8-6A51868DA381/MicrosoftOpenSpecPoster%20-%20Accessiblility%20Version.pdf
に
SharePoint Extensibility Web Page and Web Part Customization
があり、
[MS-EAWF]: Group Approval Web Service Protocol
https://docs.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-eawf/c0dd6de4-8c9b-45a0-9d81-af9b498666ec?redirectedfrom=MSDN
となっている。これからすると、グループ承認管理というのも嘘ではないようだ。東アジア限定のものなのか?
いずれにしろ、個人用のOfficeには必要がないとして削除されたのかもしれない。
参照設定名:eawfctrl 1.2 Type Library
- VAEのオブジェクトブラウザでみると、
- eawfctrlLib
- <グローバル> なし
- Tasksクラス
- Property TaskType As Long
- eawfctrlLib.Tasks のメンバー
- property TaskType
- Dllのプロパティを見ると、
- 元のファイル名 PROJECT.dll
- ファイルの説明 Microsoft Office Group Approval Control
- 種類 アプリケーション拡張
- ファイルバージョン 16.0....
- 製品名 Microsoft Office
- 製品バージョン ファイルバージョンに同じ
訂正予定
今後、再インストール、情報等の収集を行い、確認が取れれば必要に応じて、記事のコードを順次変更する。
チェックボックスにチェックが入れば修正完了。
-
excel Access VBA 2つか1つの設定でVBAの参照設定を完了するマクロ
https://qiita.com/Q11Q/items/67226e7c8b9def529668 -
内容修正
VBA Office 2019(64Bit)参照設定可能リスト Office 2016 Later (version 16) List of ReferenceSettings in Office 2016 Later (version 16)
https://qiita.com/Q11Q/items/adc97b8475bc322180d2