ACCESS2003のイミディエイトウィンドウで
DateAdd関数を実行すると、
「実行時エラー '5':プロシージャの呼び出し、または引数が不正です。」が発生します。
ただし、ACCESS2003で必ずでるわけではなく、私の環境では以下のような状況で
発生しております。
OS:Windows7
MS-OFFICE2003 SP3(ACCESS 2003のみ)
MS-OFFICE2007 SP2(ACCESS2007以外)
MS-OFFICEのインストール順番は2003→2007
上記環境でACCESS2003を使用しDateAdd関数を実行するとエラーが発生。
EXCEL2007のVBAを使用しDateAdd関数を実行すると正常に値の取得が可能。
※VBE6.DLLのバージョンは6.5.10.40
上記環境下に VritualPC+WindowsXPモード環境を構築し
MS-OFFICE2003をインストールし
(MS-OFFICE2007のインストールはしていません)
ACCESS2003でDateAdd関数を実行すると正常に値の取得が行えます。
※VBE6.DLLのバージョンは6.4.99.69
原因としてはWindows7上でMS-OFFICE2003と2007を共存させていることが
考えられるとおもうのですが、それが原因なのでしょうか?
http://support.microsoft.com/default.aspx/kb/936748/ja?p=1
上記を参照したところ、WindowsVISTAベースのOSで
ACCESS2003とACCESS2007の共存はエラーが起こることがあるようですが、
VBAを使っている点で考えるとEXCELなどの他のOFFICE製品であっても
2003と2007の共存ではエラーが起こり得るのでしょうか?
回避方法等ございましたら、ご教示いただけると幸いです。
1.DateAdd関数でInterval引数に"yyyy"を指定すると動作します。
それ以外の"m","d"などについてはすべてエラーが発生します。
2.DatePart関数でも同現象が発生しています。
また、なにかわかりましたら記載させていただきます。
Replace("abcdefg", "de", "12") を実行すると
正しくは、abc12fgが返却されるが
置換がおこなわれず、abcdefgがそのまま返却されます。
Option Compare Binaryに変更するか
もしくは、Replace関数のCompare引数にvbBinaryCompareを明示的に指定すると
正しくabc12fgが返却されます。
DateAdd関数が正常に動作する環境下では
Option Compare Databaseの指定でも置換が正常に行われます。
よって、OSの再インストールから行うことで復旧をしました。
"佐々木" からの元のメッセージ: