2016-06-17 5 views
0

複数のワークシートを含む複数のブックがあります。各ワークブックは各自のためのものです。だから私はすべてのシートを1つの新しいブックにマージし、各人のブックを個別に保存したいと思う。私は、新しいワークブックと既存のワークブックを切り替える方法を理解することはできません。私はそれぞれの人物のファイル名が異なるため、ファイル名で複数のシートを含む既存のファイルを参照したくありません。2つのブックが特定のハードコードされたファイル名を持たないときにブックを参照する方法

Sub MergeSheets() 
Dim i As Integer 
Dim Newbook As Workbook 
Dim ws As Worksheet 
Dim PersonName As String 

PersonName = ActiveWorkbook.Sheets("Person Profile").Range("D3") 
Set Newbook = Workbooks.Add 
Set ws = Newbook.Worksheets("Sheet1").Name = "Merged" 


ActiveWorkbook.Sheets("Person Profile").Activate 
ActiveSheet.UsedRange.Select 
Selection.Copy Destination:=Newbook.Range("A1") 


For i = 2 To Sheets.Count 
Sheets(i).Activate 
UsedRange.Select 
Selection.CurrentRegion.Select 
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select 
Selection.Copy Destination:=ws.Range("A65536").End(xlUp).Row 
Next 

Newbook.SaveAs "C:\Users\Documents\" + PersonName + ".xls" 


End Sub 
+0

開き本を使用し、それを変数に設定することができ、その後に相互作用変数と述べました。 – findwindow

+0

あなたの "一人"のブックはループスルーする場所はどこですか?たぶん、開始シナリオと終了シナリオの例を投稿してください。 – user3598756

+0

@ user3598756マクロは、すべてのブックをループするものではありません。このアイデアは、処理が必要なワークブックを開き、別のワークブックを作成し、コード内のパスに保存されるマクロを実行することです。ファイルの名前は、処理中のワークブックのシートのいずれかのセルIDの1つから参照されます。それが理にかなってほしい。ありがとうございます – Zar

答えて

0

あなたは、そのパスを介してworkookの名前

Sub test() 
    Dim workBook1 As Workbook 
    Dim workBook2 As Workbook 
    Dim workBook3 As Workbook 
    Set workBook1 = Workbooks("Book1") 'If opened 
    Set workBook2 = Workbooks("Book3") 'If opened 
    'if not opened 
    Workbooks.Open Filename:="C:\Users\Rui\Documents\Benfica.xlsx" 
    set workBook3 = Workbooks("Benfica.xlsx") 
End Sub 
+0

これは、各書籍をハードコーディングする必要があります。 – findwindow

+0

ファイルを開いていないというシナリオにコードを変更します – ruirodrigues1971

関連する問題