2016-07-12 9 views
0

vbaを使用してピボットテーブルを作成しようとしています。以下は試したコードです:vba実行時エラーを使用してピボットテーブルを作成する

Sub CreatePivot() 

    Dim objTable As PivotTable 
    Dim objField As PivotField 
    Dim ws As Worksheet 

    Set ws = Worksheets.Add 
    Sheets(ws.Name).Name = "Write-Off Pivot" 

    ' Select the sheet and first cell of the table that contains the data. 
    ActiveWorkbook.Sheets("GEP Write-Offs Rawdata").Select 
    Range("A1").Select 

    Set objTable = ws.PivotTableWizard 

    ' Specify row and column fields. 
    Set objField = objTable.PivotFields("MPG") 
    objField.Orientation = xlRowField 

    ' Specify a data field with its summary 
    ' function and format. 
    Set objField = objTable.PivotFields("'A_780610 - Inventory - Obsolescence") 
    objField.Orientation = xlDataField 
    objField.Function = xlSum 
    objField.NumberFormat = "$ #,##0" 


End Sub 

このエラーメッセージが表示されます。 「実行時エラー 『104』」

問題は、この行であることが、それを引き起こしているものを把握することはできませんように見える「オブジェクトの_Worksheet "方法『ピボットテーブル』が失敗しました」。

Set objTable = ws.PivotTableWizard 
+1

あなたはいくつかの引数を見逃しているようです。正式なドキュメンテーションを見て、それがあなたに近づくかどうかを確認してください。https://msdn.microsoft.com/en-us/library/office/ff839228.aspx – sous2817

+0

@Yuvarajテストデータの検証後に私の答えを提出しました。 Excel 2016であなたのようなアクティブなメンバーからのフィードバックを得たいと熱望しています。確かに答えのポイントではなく、決してプロセスを終了することができないので、私たちの学習経験を強化することです。 – skkakkar

+0

あなたの迅速な行動は高く評価されます。ありがとう – skkakkar

答えて

1

をあなたの次の行は、変更を必要とする

Set objTable = ws.PivotTableWizard 

これを。データソースシートを指している必要があります。

Set objTable = Sheets("GEP Write-Offs Rawdata").PivotTableWizard 

それはあなたのコマンド

Set ws = Worksheets.Add 
    Sheets(ws.Name).Name = "Write-Off Pivot" 

がit.Mayにリンクされていないので、適当にそれを修正してくださいピボットテーブルを作成し、新たな付加シートに書き込みます。

これは、@ Roryが提案したものに加えてあります。

+0

@Rory Set objTableに関して私が提案した変更についてあなたの視点を要求する勇気が集まります。私はexcel-vbaの初心者レベルで学習することを熱望しているので、これが無関係か間違っている場合は、私の答えを撤回することに躊躇しません。 – skkakkar

0

あなたはwsシート上の任意のデータがないため使用ActiveSheet.Pivottablewizardではなくws.PivotTableWizardを使用する必要があります。

ちなみに、これは不必要に複雑である:

Sheets(ws.Name).Name = "Write-Off Pivot" 

必要なのは、次のとおりです。いくつかのパラメータを必要とするPivotTableWizard

ws.Name = "Write-Off Pivot" 
0

方法:

Set objTable = ws.PivotTableWizard(xlDatabase, ActiveWorkbook.Worksheets("Table8").Range("A1:A5"), ws.Range("A1:A6")) 
:このように

多くのパラメータがありますが、私はデータソースの型、データソース、データの配置が必要です。

あなただけの「(」es.PivotTableWizardまたはあなたがここでそれらを得ることができた後、開いた場合は、すべてのパラメータを参照してください。

https://msdn.microsoft.com/de-de/library/office/ff839228.aspx

+0

実際には、実際にそれらのどれも*必要はありません。 – Rory

関連する問題