- ベストアンサー
ブックの分割方法とシート名の引き継ぎについて
- 果物の出荷先を県別にまとめたシートを新しいブックに分割する方法について質問です。現在、マクロを使用してコピーしていますが、1つの問題点があります。
- 問題点1は、コピーされる行が1行目のみであり、1~8行目に拡張したいという点です。
- 問題点2は、ファイル名にセルを参照してコードと県名を結合していますが、シート名もファイルと同じになってしまうことです。元のファイルのシート名を引き継ぎたいと考えています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 元のコードの動きが何か変な感じですが、そのままとして1、2部分だけ変更すると Dim w As Worksheet Dim n As Long Dim r As Long Dim s As String Dim WSH As Variant Dim myPath As String Dim a As String Dim b As String Set w = ActiveSheet a = w.Name n = Worksheets.Count On Error GoTo errhandle For r = 8 To w.Range("A65536").End(xlUp).Row s = w.Cells(r, "B") & "_" & w.Cells(r, "C") w.Rows(r).Copy Worksheets(s).Range("A65536").End(xlUp).Offset(1) Next r On Error GoTo 0 Set WSH = CreateObject("Wscript.Shell") myPath = WSH.specialfolders("Desktop") & "\" For r = Worksheets.Count To n + 1 Step -1 Worksheets(Worksheets.Count).Copy ActiveSheet.Columns.AutoFit b = ActiveSheet.Name ActiveSheet.Name = a ActiveWorkbook.SaveAs Filename:=myPath & b ActiveWorkbook.Close False Application.DisplayAlerts = False Worksheets(Worksheets.Count).Delete Application.DisplayAlerts = True Next r w.Select Exit Sub errhandle: Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = s w.Rows("1:8").Copy Range("A1") Resume End Sub こんな、感じですか?
その他の回答 (1)
- Prome_Lin
- ベストアンサー率42% (201/470)
1. 「w.Rows(1).Copy Range("A1")」を For r = 1 to 8 w.Rows(r).Copy Range("A" &r) Next r にする。 2. ActiveSheet.Name = s で、シートの名前を「s」にしています。 この行を削除してください。
お礼
ありがとうございました。 ちなみに、分割する際に元のシートの列幅も同じにしたいときは、どのようにすれば、よいでしょうか。
お礼
ありがとうございました。 ちなみに、分割する際に元のシートの列幅も同じにしたいときは、どのようにすれば、よいでしょうか。