• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ブックの分割をするとき)

ブックの分割方法とシート名の引き継ぎについて

このQ&Aのポイント
  • 果物の出荷先を県別にまとめたシートを新しいブックに分割する方法について質問です。現在、マクロを使用してコピーしていますが、1つの問題点があります。
  • 問題点1は、コピーされる行が1行目のみであり、1~8行目に拡張したいという点です。
  • 問題点2は、ファイル名にセルを参照してコードと県名を結合していますが、シート名もファイルと同じになってしまうことです。元のファイルのシート名を引き継ぎたいと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 元のコードの動きが何か変な感じですが、そのままとして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 こんな、感じですか?

morino-sato
質問者

お礼

ありがとうございました。 ちなみに、分割する際に元のシートの列幅も同じにしたいときは、どのようにすれば、よいでしょうか。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

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」にしています。 この行を削除してください。

morino-sato
質問者

お礼

ありがとうございました。 ちなみに、分割する際に元のシートの列幅も同じにしたいときは、どのようにすれば、よいでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう