| 
    
     |  | ▼マナ さん: >▼hoyahoyamachine さん:
 >
 >ht tps://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/pivotcaches-create-method-excel?f=255&MSPPError=-2147217396
 >
 >ここでは、
 >
 >> 文字列を使用してブック、ワークシート、およびセル範囲を指定するか、
 >> 名前付き範囲を設定して名前を文字列として渡すことをお勧めします。
 >> Range オブジェクトを渡すと、"型の不一致" エラーが予期せず発生します。
 >
 >としか記載されていませんが
 >検索すると、↓を指定している事例ばかりでしたので、
 >ReferenceStyle:=xlR1C1
 >
 >もし、うまくいかない場合は、試してみてください。
 
 たいへんご丁寧なアドバイスありがとうございました。
 
 ピボットテーブル作成のマクロ記録を眺めると、SourceTypeとTableDestinationは外部参照かつR1C1形式の文字列で記録されおり、
 貴方アドバイスの二条件を追加した以下のコードでうまくいきました。
 
 Set pvtCache = Workbooks("RSB.xlsm").PivotCaches.Create( _
 SourceType:=xlDatabase, _
 SourceData:=DBTop.CurrentRegion.Address(External:=True, ReferenceStyle:=xlR1C1), _
 Version:=xlPivotTableVersion12)
 
 Set pvtTbl = pvtCache.CreatePivotTable( _
 TableDestination:=tblTop.Address(External:=True, ReferenceStyle:=xlR1C1), _
 TableName:="PReport", _
 DefaultVersion:=xlPivotTableVersion12)
 
 他のコード上にあるメッソドでも範囲指定のパラメータにRangeオブジェクトを書いていて、本来エラーだけどもエラーが発生していない場合があるかもしれないと、ナニゲに思った次第です。
 
 |  |