2016-03-23 5 views
0

マクロの目的は、大量のデータから得られたもので、各製品の個別のワークブックにデータを分割します。特定のデータのみをファイルに貼り付けた後、すべてのデータ、ピボットテーブルを備えたワークシート、スプレッドシート上のデータにピボットテーブルのデータを設定してワークブックから5つの個別のワークシートをコピーしたい以前にコピーした次に、ピボットテーブルを更新します。特定のワークブックにワークシートの配列を結ぶ

私の最大の問題は、私はいくつかのワークブックを作成するつもりですので、私は、私がマスターファイルから上書きコピーするために私の配列を定義する作業帳

Dim cell As Range, DataRng As Range 
Dim curPath As String, curWB As String, newWB 
Dim ArrayCM As Variant 
Dim InxW As Long 
Dim xTable As PivotTable 

curPath = ActiveWorkbook.Path & "\" 
curWB = ActiveWorkbook.Name 
'Array of worksheets to be copied over for Company Manger 
Set ArrayCM = curWB.Sheets(Array("CM YTD", "CM MTD", "CM Refurb", "TBM Local", "PSM")) 
--This Gives me an error 

へのワークシートの列に名前を付ける方法です新しいファイルに追加します。これについてのヘルプは非常に高く評価されます。

+0

*** String ***と*** Workbook ***オブジェクトを混同しています。 (配列 "CM YTD"、 "CM MTD"、 "CM Refurb"、 "TBM Local"、 "PSM")) –

+0

'ワークブック(curWB)'だけでなく、curWB – Rory

+0

私はArrayCM = Activeworkbook.Sheetsこれらの両方を試みてもどちらもうまくいきませんでした。私は "Parent Workbook"を定義して、ワークシートを子ブックにコピーすることができます。 – Bruce

答えて

0

ワークシートタイプvarを配列として作成し、それを赤で置き、配列内の各要素をWorksheet Objectに割り当てることができます。

Sub manyWSs() 
    Dim w As Long 
    Dim cwb As Workbook 
    Dim wss() As Worksheet 

    Set cwb = ThisWorkbook 

    With cwb.Worksheets(Array("Sheet1", "Sheet3", "Sheet5")) 
     ReDim wss(1 To .Count) 
     For w = 1 To .Count 
      Debug.Print .Item(w).Name 
      Set wss(w) = .Item(w) 
     Next w 
    End With 

    For w = LBound(wss) To UBound(wss) 
     Debug.Print wss(w).Cells(1, 1).Address(0, 0, external:=True) 
    Next w 
End Sub 

Worksheets(Array("Sheet1", "Sheet3", "Sheet5"))ので.Item(w)が作品を選び出すために使用される真Worksheets collectionではありません。各部分がSetになると、1つのWorksheet Objectのすべてのプロパティ、メソッド、およびメンバーが、完全な親Workbook objectの関連付けを持つ配列の各部分で使用できます。

+0

これは、 'With cwb.Worksheets(Array( "Sheet1"、 "Sheet3"、 "Sheet5"))を実行するたびにエラーが表示されます。私はこの配列を "wss"と呼んでいますか? – Bruce

関連する問題