2016-04-30 13 views
0

私はしばらくこのことをやろうとしていましたが、できませんでした。私は通常より多くのものを検索しますが、私はVBA(C++とJavaのみ)に慣れていません。外部のワークシートから別のワークシートにデータをコピーする

すべてがデータ(ソース)を含む複数のシートを含むExcelファイル(ブック)があります。私は見出し(ターゲット)のみを含む複数のワークシートを含む別のExcelファイルを持っています。

対象のワークブックに移動して見出しを取得し、ソースブックに移動してこの見出しが見つかるまですべてのワークシートをループし、データをターゲットワークブックにコピーするコードです。

ソースファイルのすべての見出しは、すべてのワークシートの同じ行にあることに注意してください。

enter image description here

+0

あなたのニーズに正確なコードはありません。しかし、助けになる素晴らしい例がたくさんあります。あなたがしなければならないことは、ワークシートをループする方法、ワークシート名を取得する方法などなど、問題を小さなものに分割することです。必要なものを作業して構築しようとします。あなたが何らかのエラーに遭遇した場合、SOは常にそこにあります:-) – newguy

+0

私は現在読んでいますが、その根本的な根拠がなく深いところから始めるのは難しいですが、助言に感謝します。 –

+0

これは実際にはかなり一般的なことです。このためのコードを簡単に見つけることができます。 –

答えて

1

このコードは、あなたの問題を解決する必要があります。

Sub Read_External_Workbook() 

    '''''Define Object for Target Workbook 
    Dim Target_Workbook As Workbook 
    Dim Source_Workbook As Workbook 
    Dim Target_Path As String 

    '''''Assign the Workbook File Name along with its Path 
    '''''Change path of the Target File name 
    Target_Path = "D:\Sample.xlsx" 
    Set Target_Workbook = Workbooks.Open(Target_Path) 
    Set Source_Workbook = ThisWorkbook 

    '''''With Target_Workbook object now, it is possible to pull any data from it 
    '''''Read Data from Target File - Assuming that your headers's locations are absolute. 
    Target_Data = Target_Workbook.Sheets(1).Cells(1, 1) 
    Source_Workbook.Sheets(1).Cells(1, 1) = Target_Data 

    '''''Update Target File - 
    Source_data = Source_Workbook.Sheets(1).Cells(3, 1) 
    Target_Workbook.Sheets(1).Cells(2, 1) = Source_data 

    '''''Close Target Workbook 
    Source_Workbook.Save 
    Target_Workbook.Save 
    Target_Workbook.Close False 

    '''''Process Completed 
    MsgBox "Task Completed" 

End Sub 
+0

私のデータは同じ順序でなければなりませんか?例えば、最初のワークシートには最初の列が必要ですが、3番目のワークシートには2番目の列を入れることができます。 –

関連する問題