[[20160310143223]] 『日数分をシートコピーしたい』(torao) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日数分をシートコピーしたい』(torao)

お世話になっております。
質問させてください。

ネット等で調べて日報を日数分コピーするマクロを貼りました。
Sub copy()
For i = 1 To 5
c = c + 1
Worksheets("日報").Copy after:=Worksheets("日報")
Worksheets("日報 (2)").Name = c & "日目"
Next
End Sub

これで5日分のシートが出来ましたが、「日報」シートとは別に、
「基本項目」のシートを作成し、工期を入力したいと思います。

「基本項目」

   A    B      C     D     E
1 工事名 ○○新築工事
2 工期  2016/3/1   から 2016/5/15   まで
3 請負者  株式会社 ○○

上記のような工期があった場合、2ヵ月半のシートをコピーしたいのですが、
どのようにもとのマクロを変更したら良いか、教えていただけませんでしょうか。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 あまり効率はよくないかもしれませんが・・・

 Sub test()

     Dim 日付 As Date
     Dim 位置 As Long

     Application.ScreenUpdating = False

     日付 = Range("B2").Value
     位置 = Worksheets("基本項目").Index

     Do
         Worksheets("基本項目").Copy After:=Worksheets(位置)
         ActiveSheet.Name = Format(日付, "yyyy-m-d")
         日付 = 日付 + 1
         位置 = 位置 + 1
     Loop Until ActiveSheet.Name = Format(Range("D2").Value, "yyyy-m-d")

     Application.ScreenUpdating = True

 End Sub

 スラッシュはシート名に使えないので形式は2016-3-1のようになっています。
(se_9) 2016/03/10(木) 15:19

(se_9)様

さっそくの返信ありがとうございます。

頂いたマクロを実行いたしましたが、書き方が拙くて申し訳ありません。
シートをコピーしたいのは「日報」シートで、どんな作業をしたのか記入する様式になっています。

「基本項目」で工期を記入し、その日数分の「日報」シートをコピーしようと思っています。

どうかよろしくお願いいたします。
(torao) 2016/03/10(木) 15:31


 いつものトンチンカンな回答をしてしまいました。すみません。

 Sub test()

     Dim 日付 As Date
     Dim 位置 As Long

     Application.ScreenUpdating = False

     日付 = Worksheets("基本項目").Range("B2").Value
     位置 = Worksheets("日報").Index

     Do
         Worksheets("日報").Copy After:=Worksheets(位置)
         ActiveSheet.Name = Format(日付, "yyyy-m-d")
         日付 = 日付 + 1
         位置 = 位置 + 1
     Loop Until ActiveSheet.Name = Format(Worksheets("基本項目").Range("D2").Value, "yyyy-m-d")

     Application.ScreenUpdating = True

 End Sub
(se_9) 2016/03/10(木) 15:38

(se_9)様

頂いたマクロでシートコピー出来ました。
本当にありがとうございます。
仕事が捗ります。

また何かありましたらお願いいたします。
(torao) 2016/03/10(木) 15:55


(se_9)様
もう一つお聞きしたいのですが、
ActiveSheet.Name = Format(日付, "yyyy-m-d")
の日付を平成〜に出来るでしょうか

増やしたシートのB4に工期分の日付を入れたいのですが、
平成○○年○月○日(○曜日)←このような形です

シート名からセルに入れてみようと下記の様に変更してみました

ActiveSheet.Name = Format(日付, "gggee"年"mm"月"dd"日"(aaaa)")

コンパイルエラーになってしまい、出来ませんでした。

それとも違う方法がありますでしょうか。
お願いいたします。

(torao) 2016/03/10(木) 16:25


 "ggge年mm月dd日(aaaa)" にしてください。
(se_9) 2016/03/10(木) 16:38

(se_9)様
返信ありがとうございます。

ActiveSheet.Name = Format(日付, "ggge年mm月dd日(aaaa)")

このようにやってみましたら、日付以上のシートが大量に出来てしまいました。

なにか他に原因があるのでしょうか…。
何度もすみません。
(torao) 2016/03/10(木) 16:47


 Loop Until ActiveSheet.Name = Format(Worksheets("基本項目").Range("D2").Value, "yyyy-m-d")
 の"yyyy-m-d"も変えましたか?アクティブシートの名前が工期の○○まで(今回のケースだと平成28年05月15日(日曜日))と
 合致しなければずっとシートを作成し続けることになります。なので書式を変える際は必ずLoop〜のところも一緒の書式に
 してください。
(se_9) 2016/03/10(木) 16:54

 Do/Loop ではなく For/Next で書いてみました。

 Sub 別案()
    Dim z As Long
    Dim f As Long
    Dim t As Long
    Dim x As Long

    Application.ScreenUpdating = False

    With Sheets("基本項目")
        f = .Range("B2").Value2
        t = .Range("D2").Value2
    End With

    z = Sheets("日報").Index

    For x = t To f Step -1
        Sheets("日報").Copy After:=Sheets(z)
        On Error Resume Next    '念のため
        ActiveSheet.Name = Format(x, "ggge年mm月dd日(aaaa)")
        On Error GoTo 0
    Next

 End Sub

(β) 2016/03/10(木) 18:10


(se_9)様、(β)様
本当にありがとうございます。

(se_9)様
その部分、直していませんでした…。
今日はもう退社してしまったので、明日やってみます。

(β)様
わざわざありがとうございます。

 「Do/Loop ではなく For/Next」
今は違いが分かりませんが、勉強したいと思います。
(torao) 2016/03/10(木) 20:21

 Do〜LoopじゃなくてFor〜Nextの方がいいのかなと思っていたらβさんから回答が。
 コート提示しておいて何ですが、βさんの方を使ってください。
(se_9) 2016/03/11(金) 07:48

(se_9)様
昨日はありがとうございます。

(β)様のマクロを使用したところ増やしたシートのB4に日付を入れたいのですが、
これを原紙であるところの「日報」に
「=RIGHT(CELL("filename",B4),LEN(CELL("filename",B4))-FIND("]",CELL("filename",B4)))」
このような関数をいれてみたところ、やはり日付の欄にすべて「日報」になってしまいました。

工期分のシートをコピーして、ついでに連続した日付も入れたかったんですが、なにか良い方法ありませんでしょうか。

(torao) 2016/03/11(金) 11:54


 そんな難しいことをする必要はないですよ。
 日報シートの B4 は 空白でOK。表示書式を、お好きなものにしておいてください。

 で、ActiveSheet.Name = Format(x, "ggge年mm月dd日(aaaa)") の下あたりに

 Range("B4").Value = x を追加してください。

(β) 2016/03/11(金) 12:10


(β)様
ちゃんと出来ました。
ありがとうございます。
助かりました。

(se_9)様もありがとうございます。

(torao) 2016/03/11(金) 15:16


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.