0

レポートに優れたピボットテーブルを作成するアプリケーションをvb.netで開発しました

私のマシンのExcelバージョンが2003年から2010年にアップグレードされ、ピボットテーブル機能が失敗しています

WkbResult.PivotCaches.Add2003バージョンと2010バージョンの両方の呼び出しを調べましたが、2003と2012を除いて違いは見つかりませんでした。WkbResult.PivotCaches.Create

Dim WksPivot As Excel.Worksheet = WkbResult.Worksheets("Summary")
Dim WksResult As Excel.Worksheet = WkbResult.Worksheets("Test_Details")
Dim PC As Excel.PivotCache = Nothing
Dim PTS As Excel.PivotTables = Nothing
Dim PT As Excel.PivotTable = Nothing

' This is where it fails even after i changed Add to Create method

PC = WkbResult.PivotCaches.Create(Excel.XlPivotTableSourceType.xlDatabase, WksResult.Range("A:D"))

参照を確認しようとしましたが、参照を新しいバージョンに変更しました。これは私のマシンに表示されますが、それでも同じ例外が発生します。

これが例外の一部です

System.ArgumentException was unhandled
  Message="The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))"
  Source=""
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Microsoft.Office.Interop.Excel.PivotCaches.Create(XlPivotTableSourceType SourceType, Object SourceData, Object Version)
       at QCLite.PivotTableManager.CreateResultsPivotTable(Workbook& WkbResult, ListView lstResults) in C:\userdata\Framework\src\06 Utilities\QCLite\QCLite\PivotTableManager.vb:line 23
4

1 に答える 1

1

Excel 2010 では ("A:D") としての範囲の指定が機能しないようです

呼び出しを変更しました

Dim TotalRows As Integer = WksResult.UsedRange.Rows.Count

PC = WkbResult.PivotCaches.Add(Excel.XlPivotTableSourceType.xlDatabase, WksResult.Range("A1:D" & TotalRows))

そしてそれは魅力のように機能しました。

Add 呼び出しも驚くほどうまくいきました。

于 2012-09-19T17:33:16.110 に答える