2016-09-08 16 views
0

主キーに基づいて1つのExcelファイルにマージする必要がある2つのExcelファイルがあります。私はvb.netでこれを行う必要があり、どこから始めたらいいか分からない。 1つのファイルはデータリストで、もう1つはマトリックスです。データリストに追加された行列フィールドが必要です。主キーに応じて、データリストのデータ行に対応する行列行が入力されます。私は次のようなことがありますが、私が正しい方向に進んでいるかどうかはわかりません。もしそうなら、どうすれば新しいExcelファイルとして保存できますか?2つのExcelファイルをvb.netの主キーで結合する

Dim DT1 As DataTable 
DT1.Rows.Add(DtSet) 

Dim DT2 As DataTable 
DT2.Rows.Add(DtSet2) 

DT1.PrimaryKey = New DataColumn() {DT1.Columns(ComboBox1.SelectedItem)} 
DT2.PrimaryKey = New DataColumn() {DT1.Columns(ComboBox2.SelectedItem)} 

DT1.Merge(DT2) 
+0

あなたの最後の質問が削除された理由は、あなたが多くの研究を自分でやらなかったということでした。私はちょうど検索しました* engined * datatableをexcel *に保存し、* first *結果はhttp://stackoverflow.com/questions/8207869/how-to-export-datatable-to-excelです。これはあなたが持っているのとまったく同じ質問です。それは非常にうまく答えられています。 – djv

+0

あなたが私に与えたリンクはC#用です。vb.netの構文が必要です – Chrisetiquette

+0

http://converter.telerik.com/ – djv

答えて

0

私があなたの場合は、Excelの統合機能を使用します。

https://www.ablebits.com/office-addins-blog/2015/09/01/consolidate-excel-merge-sheets/#consolidate-data-excel

あなたは本当にこのためにVBを使用している場合は、以下のスクリプトを試すことができます。

Sub Merge2Workbooks() 
    Dim SummarySheet As Worksheet 
    Dim FolderPath As String 
    Dim NRow As Long 
    Dim FileName As String 
    Dim WorkBk As Workbook 
    Dim SourceRange As Range 
    Dim DestRange As Range 

    ' Create a new workbook and set a variable to the first sheet. 
    Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1) 

    ' Modify this folder path to point to the files you want to use. 
    FolderPath = "C:\Users\Peter\invoices\" 

    ' NRow keeps track of where to insert new rows in the destination workbook. 
    NRow = 1 

    ' Call Dir the first time, pointing it to all Excel files in the folder path. 
    FileName = Dir(FolderPath & "*.xl*") 

    ' Loop until Dir returns an empty string. 
    Do While FileName <> "" 
     ' Open a workbook in the folder 
     Set WorkBk = Workbooks.Open(FolderPath & FileName) 

     ' Set the cell in column A to be the file name. 
     SummarySheet.Range("A" & NRow).Value = FileName 

     ' Set the source range to be A9 through C9. 
     ' Modify this range for your workbooks. 
     ' It can span multiple rows. 
     Set SourceRange = WorkBk.Worksheets(1).Range("A9:C9") 

     ' Set the destination range to start at column B and 
     ' be the same size as the source range. 
     Set DestRange = SummarySheet.Range("B" & NRow) 
     Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _ 
      SourceRange.Columns.Count) 

     ' Copy over the values from the source to the destination. 
     DestRange.Value = SourceRange.Value 

     ' Increase NRow so that we know where to copy data next. 
     NRow = NRow + DestRange.Rows.Count 

     ' Close the source workbook without saving changes. 
     WorkBk.Close savechanges:=False 

     ' Use Dir to get the next file name. 
     FileName = Dir() 
    Loop 

    ' Call AutoFit on the destination sheet so that all 
    ' data is readable. 
    SummarySheet.Columns.AutoFit 
End Sub 

これも面白いかもしれません。

https://siddharthrout.wordpress.com/2012/06/05/vb-netvba-copy-rows-from-multiple-tabs-into-one-sheet-in-excel/

関連する問題