もとの環境について
「Windows7の事務用PC:32ビット、Office2007」が数十台
この単一スペックでわかりやすい状態から、一気に下記の状態になります。
これは、何の不具合もなく、切り替えが完了するって方が無理があるでしょうw
なので、日々ちまちま起こる不具合と対策を日々加筆していこうと思います。
Office2010以降のVBAでは、バージョンが変わっており、「Declare」の後にPtrSafeをつけることになっています。単純に書き足せばよいのです
しかし、ウチもそうですが、一度に完全に以降できず、移行期間にはOffice2007とOffice2010が混在してしまいます。その場合は、下記のように条件付きコンパイルで切り分ける必要があります。
Declare PtrSafe Function FindWindowA& Lib “User32” (ByVal C&, ByVal T$)
#Else
Declare Function FindWindowA& Lib “User32” (ByVal C&, ByVal T$)
#End If
これ何気に、いろんなものが散々コケて面倒臭い(T-T)
使ってないつもりでも、変なトコでAPI使ってるケースが結構あるんですよね(T-T)
これは何気にWindows7を導入した時にも発生したんです。レジストリをいじらなければなりません。問題はいじるべき部分がOfficeのバージョンで異なるということです。
今回の正解は、「HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Text」でした。ここに新規DWORD値を追加して、名前を「StartDoubleWidthUnicodeCharacters」とし、値を「80」とし、「16進」にチェックを入れれば修正完了です。
ちなみに、以前はOfficeが同じ32bitでもOSが64bitか32bitかでいじるレジストリが変わります。
単純に対応するドライバをダウンロードし直せば済むだけの話です。が、どっぷりと落とし穴にハマってしまいました。というのも、Windows10の64ビットで問題なくインストールできてたので、安心していたら、Windows7のワークステーションでコケてしまうという予想外の展開にやられてしまいました(^^;
横着せずにOSとビットが変われば、ドライバを変えましょうという教訓を込めて。