2017-01-18 14 views
-2

私は200を超えるワークシートを持つワークブックを持っています。各ワークシートには、セルM4にセールスマン名があります。私は各ワークシートをループするマクロを作成し、M4の値に基づいてセールスマン名ごとにマスターブックを別のワークブックに分割するので、別々にメールで送信できます。私は、セールスマンの名前が並んでいれば、それは簡単だろうと思っています。誰でもこのプロセスを実行できるコードで私を助けることができますか?私の現在のワークブックでさらに説明するために、セールスマン1はM4に5つのワークシートを持ち、Salesmen 2にはセルM4に3つのワークシートがあります。だから各セールスマンのために、私はすべてのワークシートを1つのファイルに移動して保存したいと思っています。VBA分割ブックをセルの値に基づいて複数のブックに分割

+0

あなたがこれまでに試してみましたか?何が/働いていないのですか?基本的には、各ワークシートを取り出し、それを「M4」の名前で保存された独自のワークブックに入れたいだけですか? – BruceWayne

+0

@BruceWayne私は自分自身を記録しましたが、シート名(「空白」)はすべて選択して移動してください。あなたの2番目の質問に答えるはい、私はM4に基づいて各シートを移動し、M4の名前に基づいてファイルを保存する – user3666237

+0

ええ、これを行うためのマクロはあまり長くはないでしょう。これまでに試したコードを投稿してください。また、ワークシートを通してルーピングをルックアップします。ワークブック内の各ワークシートをループし、新しいファイルとしてコピーし、M4に値として保存するだけです。 – BruceWayne

答えて

3
Sub WayEatFresh() 

For i = 1 To ThisWorkbook.Sheets.Count 
    NewWorkbookName = ThisWorkbook.Sheets(i).Cells(4, 13).Value 
    ThisWorkbook.Sheets(i).Copy 
    ActiveWorkbook.SaveAs "C:\YourFilePath\" & NewWorkbookName & ".xlsx", FileFormat:=51 
Next 

End Sub 

EDIT:

Sub WayEatFresh() 

Salesmen = "" 
For i = 1 To ThisWorkbook.Sheets.Count 
    If InStr(Salesmen, ThisWorkbook.Sheets(i).Cells(4, 13).Value) = 0 Then 
    If Salesmen = "" Then 
     Salesmen = ThisWorkbook.Sheets(i).Cells(4, 13).Value 
    Else 
     Salesmen = Salesmen & "->" & ThisWorkbook.Sheets(i).Cells(4, 13).Value 
    End If 
    End If 
Next 

SalesmanArray = Split(Salesmen, "->") 

For i = 0 To UBound(SalesmanArray) 
    NewWorkbookName = SalesmanArray(i) 
    Set NewWB = Workbooks.Add 
    For j = 1 To ThisWorkbook.Sheets.Count 
     If ThisWorkbook.Sheets(j).Cells(4, 13).Value = SalesmanArray(i) Then 
      ThisWorkbook.Sheets(j).Copy After:=NewWB.Sheets(1) 
     End If 
    Next 

    NewWB.SaveAs ("C:\YourLocation\" & NewWorkbookName & ".xlsx") 
    NewWB.Close 
    Set NewWB = Nothing 
Next 

End Sub 
+0

ありがとうございますが、私はあなたの理解を私の質問は、各セールスマンが複数のワークシートを持っているとは思わない。現在のコードは、M4の値に基づいてすべてのワークシートを保存しています。最初に、同じセールスマンのワークシートをすべて保存したワークブックを、保存するよりも作成したいと考えています。 @BYates – user3666237

+0

これを今すぐチェックしてください。ワークブックには最初は空白のシートがありますが、必要な場合は最後に削除することもできます。 – BYates

+0

ありがとう@BYatesあなたは100万人に感謝しました。 – user3666237

関連する問題