これも課題を文章にしただけの丸投げで、回答者にやってくださいと、テストしているようなものになっている。
もう少し筋道立てて考えて、どういうことをするコードが必要か(私は要素技術といっている)、切り分けられないのか。
またマクロの記録なども使えるのだ。
ーー
操作をしてマクロの記録をとった。
Sub Macro4()
Workbooks.Add
Range("A2:B4").Select
Selection.Copy
Windows("Book2").Activate
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\XXXX\My Documents\tst0708.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Windows("Book1").Activate
End Sub
ーー
知っておくべき基本は
まづ1シートだけ取り出して、独立したブックに名前をつけて保存できない。
だから新しいブックに、まずA+B列ー>A列+B列、次にA列+C列ー>A列+B列という風にデータをコピー貼り付けし、その都度名前をつけて保存しなければならない。
簡単にするために元データがA,、B、C列しかない場合を考える。質問もこのように簡素化すれば良いのだ。
データを貼り付けるブックを作っておく。(下記でWB1)VBAで出来るが初心者は手動も兼用するが良い。
元データは、私の場合は、「列ごと保存.xls」と言うブック
別ブックも含めて扱うときは、ブック名.シート名.セル範囲の順に略さず書いたほうが良い。
また名前をつけて保存するその名前のルールを決めておく。下記ではtst0708" & i & ".xlsと固定文字+日付+連番にした。",
Sub Macro5()
For i = 1 To 2
Workbooks.Open "WB1.xls"
ActiveWorkbook.Worksheets("Sheet1").Cells.Clear
Windows("列ごと保存.xls").Activate
Workbooks("列ごと保存.xls").Worksheets("Sheet1").Columns(1).Select
Selection.Copy
Windows("WB1.xls").Activate
Workbooks("WB1.xls").Worksheets("Sheet1").Columns(1).Select
ActiveSheet.Paste
'----
Windows("列ごと保存.xls").Activate
Workbooks("列ごと保存.xls").Worksheets("Sheet1").Columns(i + 1).Select
Selection.Copy
Windows("WB1.xls").Activate
Workbooks("WB1.xls").Worksheets("Sheet1").Columns(2).Select
ActiveSheet.Paste
'--------
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\OTO\My Documents\tst0708" & i & ".xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWorkbook.Close
Next i
End Sub
ーーー
上記はマクロの記録のコードにひきづられている(冗長な)面はある。
あとは列数からFor i = 1 To 2の2を実情に合わせて適切にするコードを考える。
さらには改良してCopy-Paste方式からCopy Destination方式を使うとか。
お礼
早速のご回答、ありがとうございました。 とても参考になり、やりたいことがほぼできました。