• ベストアンサー

エクセルでシートのコピー

いつもお世話になっています、質問が2つあります。 1.マクロで一ヶ月分のカレンダーの原本に西暦を入力してシートをコピーしながら12月までのカレンダーを作りましたが、印刷時に余白が規定値のままの為土曜日が印刷されません、余白やヘッダーはコピーできないのでしょうか? 2.保存する時にフォルダ(カレンダー)内に2009年として保存したいのですが、マクロを除いてブックだけ保存することが出来るらしいのですが、教えてGOOで検索しても解りませんでした。 以上、ずうずしく2つも質問してしまいましたがよろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 前回の質問からですね。本当は、前からまとめたほうがよいのですが、年末・年始ではありまりレスの対応が良くないかもしれません。 まず、前の質問から回答をさせていただきます。 (1) これは使いませんが、参考までにおきます。 'Sub Test1() 'Dim i As Integer 'For i = 2 To 12 'With Worksheets(1).Copy(After:=Worksheets(i - 1)) '   ActiveSheet.Name = CStr(i) & "月" 'End With 'Next 'End Sub (2) マクロ抜きの保存 >教えてGOOで検索しても解りませんでした。 これは、最近も質問がありましたが、いくつかの回答は、私はあまりシックリこないです。難しい方法は、私は賛成しません。簡単なことですが、マクロを別なブックに保存して、実行をすればよいわけです。 マクロの以下のコードは、必ず「標準モジュール」においてください。 最初のシート1 をコピーして、新しいブックにつないでいきます。 こうすれば、新しいブックに、マクロ抜きブックが作られます。 Sub Test2()   Dim i As Integer   Worksheets(1).Copy   With ActiveWorkbook     For i = 2 To 12       With .Worksheets(1).Copy(After:=.Worksheets(i - 1))         ActiveSheet.Name = CStr(i) & "月"       End With     Next   End With End Sub できたら、ファイル名を付けて保存してください。 >マクロを削除して保存してみましたが、開く時マクロを有効にするか効いてきます、これをでないように出来ませんでしょうか? それは、標準モジュールが存在するからだと思います。上記のマクロでは、そのようなことはないはずです。 >シートのコピーはサンプル集をそのまま引用していて まさか、出版されている書籍のコードではないと思います。サンプルとはいえ、そのままでは無駄が多すぎます。私なら、このようなスタイルになります。 Sub Sample1() Dim org As Range Dim i As Integer Set org = Worksheets(1).Cells For i = 2 To 12  With Worksheets.Add(After:=Worksheets(i - 1))   org.Copy .Cells(1)  .Name = CStr(i) & "月" End With Next i Set org = Nothing End Sub

hakujira
質問者

お礼

ありがとうございます、(1)は'Sub Test1()で、今やってみてうまくいきました。 (2)については、検索時に適合度順で検索した為か見落としてしまいました、日付順で見たら2番目に出てきました、でもこれは私には難しすぎるので今回は諦めました、開く時にマクロを無効にすれば済みますので。 恥ずかしいのですが、今の私は'Sub Test1()とSub Sample1()の違いが理解できません、そこで今回とりあえずカレンダーは完成として、今年はマクロの知識をもう少し深める方向で行こうと思います。 年末年始の忙しい時に答えて下さいましてありがとうございました。

その他の回答 (1)

noname#99913
noname#99913
回答No.1

1.コピーするときに、「シートのコピー」機能を使えば、余白も反映されます。 2.マクロを削除してから保存すればいいのでは? ただし、オリジナルは別に残しておかないといけません。

hakujira
質問者

補足

早速の回答ありがとうございます。 シートのコピーはサンプル集をそのまま引用していて、あまり理解できていません、下記の構文の修正箇所を指摘してもらえると助かります。 Worksheets(1).Cells.Copy For j = 1 To 12 Worksheets.Add after:=Worksheets(ActiveSheet.Index) ActiveSheet.Name = CStr(j) & "月" ActiveSheet.Paste Range("A1").Value = j Next j Application.CutCopyMode = False マクロを削除して保存してみましたが、開く時マクロを有効にするか効いてきます、これをでないように出来ませんでしょうか?

関連するQ&A