アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルの2000を使用しています。
こんなことが出来るかどうか教えてください。
「原紙」というシートをコピーして自動的に6月だったら6月1日から30日までのシートを作成したいのです。シート名は6月なら20070601とか日にちのわかるような表示のシート名にしたいのです。
毎回コピーをとってシート名を変更しているのですが、これが結構手間がかかってしまします。
宜しくお願いします。

A 回答 (2件)

以下のマクロを実行すると、実行した月の1日~月末日分だけシートを


コピーします。コピー元のシート名は2行目を修正して下さい

Sub Macro1()
Const org As String = "原紙"
Dim dt As Date
 For dt = DateSerial(2007, Month(Date), 1) _
  To DateSerial(2007, Month(Date) + 1, 0)
    Worksheets(org).Copy after:=ActiveSheet
    ActiveSheet.Name = Format(dt, "YYYYMMDD")
 Next dt
End Sub

マクロはALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

この回答への補足

ありがとうございます。
もうひとつお聞きしたいのですが、
こういうのは可能でしょうか?
例えば、作成時にメッセージみたいなので、何年何月の作成をしますかっていうのを表示してそこに入力すると、その該当月分の上記のようなシートを自動で作成ってことはちょっと無理でしょうか?

補足日時:2007/06/01 12:38
    • good
    • 0

Sub Macro1()


Const org As String = "原紙"
Dim dt As Date
Dim yer, mot As String

yer = InputBox("年を設定して下さい 例:2007") '年を収得

If yer = "" Then
MsgBox "キャンセルされました"
Exit Sub
End If

mot = InputBox("月を設定して下さい 例:5") '月を収得

If mot = "" Then
MsgBox "キャンセルされました"
Exit Sub
End If


For dt = DateSerial(Val(yer), Val(mot), 1) To DateSerial(Val(yer), Val(mot) + 1, 0)

Worksheets(org).Copy after:=ActiveSheet
ActiveSheet.Name = Format(dt, "YYYYMMDD")

Next dt

MsgBox "終了"

End Sub

--------------------------------------------------
No1さんのをすこし手をくわえました。

入力する数値は間違えないで下さい。
    • good
    • 1
この回答へのお礼

ありがとうございます。早速試してみます。

お礼日時:2007/06/04 21:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!