3

Excel 2007 がインストールされているコンピューターで実行するマクロを使用して、xlPivotTableVersion10 ピボット テーブル (Excel 2003 互換) を作成する必要があります。ソースファイルからマクロを実行します。複数のピボット テーブルを作成したい [互換モード] で開いた .xls ファイル (WkbVar) がもう 1 つあります。外部 Access データベース (DOH Location inventory V6) への接続を作成し、そこからデータソースとピボット キャッシュ (PC) をこの接続で取得しました。

Set pc = WkbVar.PivotCaches.Create(SourceType:=xlExternal,
SourceData:=WkbVar.Connections("DOH Location inventory V6") _
, Version:=xlPivotTableVersion10)
With pc
.CreatePivotTable TableDestination:=WksAlertesVar.Range("A9"),TableName:="PivotTable_0", _
DefaultVersion:=xlPivotTableVersion10
End With

ピボット キャッシュは問題なく作成されているようですが、「.CreatePivotTable [...] DefaultVersion:=xlPivotTableVersion10」行で、タイプ 1004 の「application defined of object-define」エラーが発生します。

私はいくつかのバリエーションを試しましたが、ここに私が得たものの要約があります:

  • ピボット キャッシュ バージョン:=xlPivotTableversion10 +ピボット テーブルDefaultVersion:=xlPivotTableversion10 => 1004 エラー

  • ピボット キャッシュ バージョン:=xlPivotTableversion10 +ピボット テーブルDefaultVersion:=xlPivotTableversion12 => 1004 エラー

  • ピボット キャッシュ バージョン:=xlPivotTableversion12 +ピボット テーブルDefaultVersion:=xlPivotTableversion10 => 5 エラー「無効なプロシージャ コール」

  • ピボット キャッシュ バージョン:=xlPivotTableversion12 +ピボット テーブルDefaultVersion:=xlPivotTableversion12 => 正常に動作しますが、Excel 2007 ピボット テーブルが作成されます。これは、xls ファイルでのフィルターおよび更新と互換性がありません。

接続を作成した後でマクロを停止し、[互換モード] のまま手動でピボット テーブルを作成すると、期待どおりに機能します。Excel 2003 のピボット テーブルが作成されます。私がやろうとしていることは可能だと思いますが、正しくコーディングできないようです...

Excel 2003 のピボット テーブルを xls ファイルで作成する方法についてヒントがあれば、Excel 2007 アプリケーションと VBA を使用して、知識を共有していただければ幸いです。

J.

-------------- 編集 (Karter のコメントに従って)

実際、ピボット テーブルに外部ソースを使用すると問題が発生するようです。もう少し検索とテストを行った後、次の回避策を思いつきました。

With ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, Version:=xlPivotTableVersion10)
.Connection = Array( )'HERE GOES ALL THE DATA RELATIVE TO MY CONNECTION TO THE ACCESS DATABASE
.CommandType = xlCmdTable
.CommandText = Array( _ 'here is the SQL string to select some data from a specific table I have in my Access database
"SELECT *" & Chr(13) & "" & Chr(10) & "FROM [DOH historique avec libelles] WHERE [DOH historique avec libelles]![Numero Site Gestionnaire] = " & NoSite _
)
.MaintainConnection = False
.CreatePivotTable TableDestination:=ActiveWorksheet.Range("A9"), TableName:="PivotTable_0", DefaultVersion:=xlPivotTableVersion10
End With

以前は、最初に「DATA RELATIVE TO MY CONNECTION ...」情報のみで接続を追加し、.CommandType、.CommandText などのパラメーターは使用しませんでした。

私は接続パラメーターにあまり詳しくありませんが、このトリックは、Karter によって強調された外部ソースの問題と関係があると思います。

4

1 に答える 1

1

実際のソース接続には互換性がないと思います。ソースとして xldatabase を使用すると、正常に動作します。

Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Sheet5!R1C1:R2C3", Version:=xlPivotTableVersion10)

Set pt = pc.CreatePivotTable(Sheet7.[A1], "testpivot1", , xlPivotTableVersion10)

Excel 2003 でピボット テーブルをコーディングしたときに、ピボット テーブルの接続文字列を手動で調整する必要があったことを知っているので、それが問題の原因になっている可能性があります。古い例を見つけることができるかどうかを確認します。

于 2013-03-12T14:45:47.910 に答える