島野です。お世話になります。

> でも、それ以前の問題のような気がします。

なぜそのようにしたのか、経緯を説明いたします。

>  ACCESS をオートメーションスルだけなら、MSACC.OLB だけを #import するだ
> けで事足ります。

最初「MSACC.OLB」だけを #import してみましたが、
以下のようなエラーが発生してしまいコンパイルが通りませんでした。
----------------------------------------------------------------------
#import "C:\Program Files\Microsoft Office\Office10\MSACC.OLB" 

d:\xxx\msacc.tlh(2307) : error C2504: 'Property' : 定義されていない基本クラスが宣言されています。

struct __declspec(uuid("331fdd00-cf31-11cd-8701-00aa003f0f07"))
_AccessProperty : Property ← ここでエラー
{
   :
};
----------------------------------------------------------------------

次に「MSACC.tlh」ファイルを参照してみると、
「Cross-referenced type libraries」とあり、
いくつかのタイプライブラリが列挙されていました。
----------------------------------------------------------------------
// C++ source equivalent of Win32 type library C:\Program Files\Microsoft Office\Office10\MSACC.OLB
// compiler-generated file created 07/30/03 at 13:28:26 - DO NOT EDIT!

//
// Cross-referenced type libraries:
//
//  #import "C:\Program Files\Common Files\system\ado\msado25.tlb"
//  #import "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
//  #import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL"
//  #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
//  #import "C:\Program Files\Common Files\Microsoft Shared\Web Components\10\OWC10.DLL"
----------------------------------------------------------------------
恐らく、これらのタイプライブラリを事前に #import しないと
基本クラスのヘッダファイルが生成されない為、
「MSACC.tlh」のコンパイルでエラーになるのだと考えました。

この為、上記のタイプライブラリを #import してみました。

>  どうして ADO やら DAO まで #import してるのでしょう?
>  本当にそんなに必要なんでしょうか?

ADO や DAO を #import しているのはこの為です。
本当は Web Components 等も、いらないのですが、
コンパイルが通らないので #import しています。

しかし、今度は「OWC10.DLL」でエラーが発生してしましました。
同様に「OWC10.tlh」ファイルを参照すると、
----------------------------------------------------------------------
// C++ source equivalent of Win32 type library C:\Program Files\Common Files\Microsoft Shared\Web Components\10\OWC10.DLL
// compiler-generated file created 07/30/03 at 13:54:35 - DO NOT EDIT!

//
// Cross-referenced type libraries:
//
//  #import "C:\WINDOWS\System32\msdatsrc.tlb"
//  #import "C:\WINDOWS\System32\MSCOMCTL.OCX"
//  #import "C:\Program Files\Common Files\system\ado\msado21.tlb"
----------------------------------------------------------------------
とありました。

今度は、ADO 2.1 を参照しているようです。

仕方ないので、MSADO25.TLB と MSADO21.TLB を #import してみましたが、
以下のようなのエラーが発生してしましました。
----------------------------------------------------------------------
d:\xxx\msado21.tlh(41) : error C2367: '_Recordset' : 再定義; 異なる uuid 指定子です。

struct __declspec(uuid("00000555-0000-0010-8000-00aa006d2ea4"))
/* dual interface */ _Recordset;
----------------------------------------------------------------------
# 微妙に UUID が違う為?
# <MSADO25.TLB>
# struct __declspec(uuid("00000556-0000-0010-8000-00aa006d2ea4"))
# /* dual interface */ _Recordset;
#
# <MSADO21.TLB>
# struct __declspec(uuid("00000555-0000-0010-8000-00aa006d2ea4"))
# /* dual interface */ _Recordset;

> 通常、新しい方だけ #import すれば十分だと思うのですが。。。

試しに「MSADO25.TLB」だけを #import するように変更してみましたが、
----------------------------------------------------------------------
d:\xxx\owc10.tlh(3468) : error C2146: 構文エラー : ';' が、識別子 'Recordset' の前に必要です。

    __declspec(property(get=GetRecordset))
    _RecordsetPtr Recordset;
----------------------------------------------------------------------
となり、コンパイルが通りませんでした。

# <MSADO25.TLB>
# _COM_SMARTPTR_TYPEDEF(_Recordset, __uuidof(_Recordset));
# とあるので、大丈夫だとは思ったのですが・・・。

そして、色々と試行錯誤した結果、rename("ADODB", "ADODB25") とすることで、
なんとかコンパイルを通すことはできました。

以上が経緯です。

しかし、付け焼刃的な方法ですので、この方法が本当にあっているか
自身がありません。

もしかしたら #import ディレクティブの指定で何かオプション(属性)を
指定してあげれば「MSACC.OLB」だけで済むのかもしれません。

Microsoft のサイトもしくは MSDN Library に
「VC++6.0 で #import を使用して Access 2002 を利用する方法」
というような例題が載っていれば良いのですが、残念ながら
見つけることができませんでした。

以上
--