私は200を超えるワークシートを持つワークブックを持っています。各ワークシートには、セルM4にセールスマン名があります。私は各ワークシートをループするマクロを作成し、M4の値に基づいてセールスマン名ごとにマスターブックを別のワークブックに分割するので、別々にメールで送信できます。私は、セールスマンの名前が並んでいれば、それは簡単だろうと思っています。誰でもこのプロセスを実行できるコードで私を助けることができますか?私の現在のワークブックでさらに説明するために、セールスマン1はM4に5つのワークシートを持ち、Salesmen 2にはセルM4に3つのワークシートがあります。だから各セールスマンのために、私はすべてのワークシートを1つのファイルに移動して保存したいと思っています。VBA分割ブックをセルの値に基づいて複数のブックに分割
答えて
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
ありがとうございますが、私はあなたの理解を私の質問は、各セールスマンが複数のワークシートを持っているとは思わない。現在のコードは、M4の値に基づいてすべてのワークシートを保存しています。最初に、同じセールスマンのワークシートをすべて保存したワークブックを、保存するよりも作成したいと考えています。 @BYates – user3666237
これを今すぐチェックしてください。ワークブックには最初は空白のシートがありますが、必要な場合は最後に削除することもできます。 – BYates
ありがとう@BYatesあなたは100万人に感謝しました。 – user3666237
- 1. セルを複数のセルに分割するExcel VBA
- 2. 要素に基づいて複数のリストに分割リストは
- 3. SQL Serverの:LENに基づいて複数行に分割テキストフィールドルール
- 4. テンプレートをマクロと一緒にファイルに分割するブックを分割する
- 5. キーパターンに基づいて配列を複数の部分に分割
- 6. 分割したブックの新しいブックをそれぞれメールで送信
- 7. 分割セル値
- 8. 分割テキストコンマに基づいて
- 9. Excel VBA:複数のシートに分割
- 10. Vim:行数に基づいて1つのファイルを複数のファイルに分割
- 11. 基準に基づいて1つのブックから別のブックにデータをコピー
- 12. 分割フィールドを複数フィールドに分割
- 13. 値に基づいてOCIの表を分割する
- 14. Redshift - 列の値に基づいてテーブルを分割する
- 15. 分割その値に基づいて2へのSQL列
- 16. パターンに基づいて1つのファイルを複数のファイルに分割する
- 17. Jupyter - 複数のセルのクラスを分割
- 18. SQL:セルの値で列を複数の列に分割する
- 19. 値に基づいて2つに分割する配列
- 20. 条件に基づいて複数の1にArrayListを分割します
- 21. セミコロンに基づいて複数の列に分割するVarcharの最大フィールド
- 22. 条件に基づいて1つのブックから別のブックの特定のセルにデータをコピーする
- 23. 分割オブジェクトタイプに基づくオブジェクトのリスト
- 24. メンバに基づくtclの分割リスト
- 25. オプションのタグに基づくXML分割
- 26. 部分配列値に基づく分割PHP配列
- 27. VBA:現在のワークブックのセル値に基づいて別のブックからデータをコピー
- 28. 1つのセルのデータを複数のセルに分割する
- 29. 値プロパティに基づいて分割されるスカラマップオブジェクト
- 30. 複数の観測クラスに基づいてrでデータを分割する
あなたがこれまでに試してみましたか?何が/働いていないのですか?基本的には、各ワークシートを取り出し、それを「M4」の名前で保存された独自のワークブックに入れたいだけですか? – BruceWayne
@BruceWayne私は自分自身を記録しましたが、シート名(「空白」)はすべて選択して移動してください。あなたの2番目の質問に答えるはい、私はM4に基づいて各シートを移動し、M4の名前に基づいてファイルを保存する – user3666237
ええ、これを行うためのマクロはあまり長くはないでしょう。これまでに試したコードを投稿してください。また、ワークシートを通してルーピングをルックアップします。ワークブック内の各ワークシートをループし、新しいファイルとしてコピーし、M4に値として保存するだけです。 – BruceWayne