2016-05-02 4 views
0

私はこのコードを使用して開いた3つのExcelファイルを開いています。一致する列の下で可変量のファイルをマージする

Dim myWorkbooks As New Collection 

Sub GetFile() 
Dim fNameAndPath As Variant, i As Long, x As Variant 
    fNameAndPath = Application.GetOpenFilename("All Files (*.*), *.*", , "Select Files To Be Opened", , True) 

If Not IsArray(fNameAndPath) Then 
    If fNameAndPath = False Then Exit Sub Else fNameAndPath = Array (fNameAndPath) 
    End If 

For i = LBound(fNameAndPath) To UBound(fNameAndPath) 
Set x = Workbooks.Open(fNameAndPath(i)) 
myWorkbooks.Add x 
Next 
End Sub  

私は1つのワークブックに必要なすべてのシートをマージしました。このワークブックには「KomKo」というマスターシートがあります。そして私は "データ(2)"、 "データ(3)"および "データ(4)"である他のシートを持っています。これらのシートは4以上になるので、シートは「データ(11)」と呼ばれることがあります。私はすべての "データ"シートの列Cをコピーして "KomKo"シートの列Aに貼り付けたいと思っています。これらの値をその列Aの次の空の値に貼り付けることができるはずです。

どうすればいいですか?

答えて

0

関連するワークブックを含むコレクションが既にあるので、これらのループをループして、関連するものをメインのwbにコピーすることができます。

だからマスターシート(それを参照することができるようにする) そして「サブシート」を保持しているループ内一つの変数のための変数を定義:

Dim mastersheet As Workbook 

Set mastersheet = ThisWorkbook 'Assuming the code is inside the master sheet 

Dim wb As Workbook 

For Each wb In myWorkbooks 

    'Copy stuff 

    'Example to get a value from the "subsheet" 
    mastersheet.Sheets("sheet1").Cells(1, 1).Value = wb.Sheets("sheet1").Cells(1, 1) 
Next wb 

そしてループ内、コピーC列例えば、カラムにマスターシートの貼り付け:だから

wb.Sheets("sheet1").Range("C1").EntireColumn.Copy 
mastersheet.Sheets("sheet1").Range("A1").PasteSpecial 
+0

それぞれのwbについてmyWorkbooksでは---->これはmyWorkbooksが空であるためエラーです。どうすればこの問題を解決できますか? –

+0

これはMyWorkbooks.add Xの後に使用する必要があります。それ以外の場合は空です – gizlmo

+0

私はそれを削除しましたが、それでも - > wb.Sheets( "sheet1")でエラーが発生しました。 ).EntireColumn.Copy mastersheet.Sheets( "sheet1")。範囲( "A1")。PasteSpecial –

1

を、あなたはあなたの質問を修正した後に、このコードは所望の作業を行う必要があります。

+0

しかし、データシートが別のブックにある場合に参照を追加する(他の回答を参照) – gizlmo

+1

これは、名前にeという "data"を含むすべてのシートに対して機能します。 g。 「123data123」、「asdfdatafdsfa」、「data1234」、「data4342」などがある。 "データ"が小文字または大文字で書かれていても問題ありません – gizlmo

+0

次の空の行が行番号323にありましたが、希望の内容を行番号9323に貼り付けました。これはどのように修正できますか? –

関連する問題