LoginSignup
0
0

More than 1 year has passed since last update.

速報 Microsoft Office VBAで EAWFCTRL.DLLが存在せず参照不能になる Breaking IF refference Setting eawfctrl.dll Then Error occur

Last updated at Posted at 2022-02-13

確認環境 OS And Office Version

Windows10 64 bit Micrsoft Access Latest Version (64bit)

発見の端緒

以前(2019年)に作成したaccdbファイルを開こうとしたとしたところ、
ewcfCtrl.dllを検索しています
と表示されては消えるというループを繰り返す。
アクセス自体を、タスクバーのアイコンから閉じる。また、タスクマネージャーから終了。そうしないと終了できない。

Access データベースの参照の問題を解決する方法

Access Visual Basic参照の解決

Access は、参照ボックスに表示される情報に従って、各参照に関連するファイル (タイプ ライブラリ、オブジェクト ライブラリ、コントロール ライブラリなど) を読み込む。 Access でファイルが見当たらないなら、Access は次の手順を実行してファイルを検索します。

  1. 参照されているファイルが現在メモリに読み込まれているかどうかを確認するアクセス チェック。
  2. ファイルがメモリに読み込まれない場合、Access はレジストリ キーが RefLibPaths 存在することを確認します。 キーが存在する場合、Access は参照と同じ名前の名前付き値を検索します。 一致がある場合、Access は、名前付き値がポイントするパスから参照を読み込む。
  3. 次に、Access は次の場所にある参照先ファイルを次の順序で検索します。
    1. Application フォルダー (Msaccess.exeのファイルの場所)。
    2. [ファイル] メニューの [開く] をクリック した場合に 表示される現在 のフォルダー 。
    3. オペレーティング Windowsファイルが実行されているフォルダーまたは Winnt フォルダー。
    4. [システム] フォルダーまたは [winnt] Windowsの下にある System フォルダー。
    5. オペレーティング システムから直接アクセスできる PATH 環境変数内のフォルダー。
  4. Access でファイルが見当たらないなら、参照エラーが発生します
今回は、この3の段階で止まるようだ。

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
製品バージョン ファイルバージョンに同じ
とあった。この記述はMS-EAWFと一致している。また怪しげなサイトとも一致している。

訂正予定

今後、再インストール、情報等の収集を行い、確認が取れれば必要に応じて、記事のコードを順次変更する。
チェックボックスにチェックが入れば修正完了。

0
0
1

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