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

こんばんは。いつもお世話になっております。

今回も自力では解決出来なかった為、質問させていただきました。

やりたいこと
1.エクセルのBook1のsheet1(sheetの名前は''テンプレート'')には、情報を書き込んでいくだけのテーブルのテンプレートと、マクロが入っています。このテンプレートを自動で複製して同じBook内にsheet2を作成し、名前を''1月''とします。同様に、12月まで作成させます。
2.複製されるタイミングは月が変わった瞬間に作成されるようにしたいです。
3.sheetには毎日情報を書き込んでいくので、日付が変わったら自動でバックアップをフォルダAに作成されていくようにもしたいです。


よろしくお願い致します。

A 回答 (4件)

とりあえず以下の仕様で作成してみました。


・ブックを開くタイミングでその月のシートが無ければシートのコピーを行う
・ブックを閉じるタイミングで、backup_yymmdd_を付加したバックアップを同じフォルダに作成する。
 既にバックアップファイルがある場合は上書きします。
 別のフォルダに作成するときは、変数pthの値を適宜変更して下さい。


下記はThisWorkbookに入力して下さい。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim pth As String
Dim fName As String
Dim fDate As String
Dim t As Date: t = Date

If Cancel Then
Exit Sub
End If

fDate = Right("0" & Year(t), 2) _
& Right("0" & Month(t), 2) _
& Right("0" & Day(t), 2)

pth = ThisWorkbook.path
fName = ThisWorkbook.name

Application.DisplayAlerts = False
ThisWorkbook.SaveAs (pth & "\" & "Backup_" & fDate & "_" & fName)
Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
Dim ws As Worksheet
Dim m As String
Dim wsExist As Boolean: wsExist = False
m = Month(Date) & "月"

For Each ws In Worksheets
If ws.name = m Then
wsExist = True
Exit For
End If
Next
If wsExist = False Then
ThisWorkbook.Worksheets("テンプレート").Copy _
before:=ThisWorkbook.Worksheets("テンプレート")
ActiveSheet.name = m
End If
End Sub
    • good
    • 0

その Excel ファイルをずっと開きっぱなしにして、深夜も無人 (または 3交代制の担当 が) で 「何か」 が Excel ファイルにデータを書き込み続けるということなのだろうか。


それとも 「毎日情報を書き込む」 何かが 「『本日のお仕事開始』 とか言いながらファイルを開いた時」 なのだろうか。

「日付が変わった瞬間」 とは具体的にどの程度の精度が求められているのだろうか。
開きっぱなしかどうかにもよるが、
・ 毎回ファイルを開いた時にバックアップ済みかどうかと、現在の月のシートがあるかどうかの判断によって処理を行うようにするわけにはいかないのだろうか。

「毎日情報を書き込む」 ということは Excel 以外の何かが Excel の外からそのファイルに対して書き込むのだろうから、ずっと VBA で日付チェックをしているわけにはいかないだろう。

PC が起動している限りなるべく確実に毎日バックアップするのであれば、特定の名前のファイル (今回の Excel ファイル) を別のフォルダーにファイル コピーするスクリプトを書いて、そのスクリプトをタスク スケジューラーで実行させたほうが良い気がする。
    • good
    • 1

> 特に月が変わったタイミングでシートを複製する所と、



現在の日付から、シート名("1月"など)の文字列を作って、そのシートが既にあれば何もせず、無ければ作る。

>毎日のデータを名前をつけて保存する所です。
案1:
データの保存は、毎回行う。ファイル名に日付を含ませて置くだろうから、同じ日の間は上書きされる。
案2:
日付が変わった段階で、前日までの分をバックアップしておきたいと言うことであるのなら、1日前の日付からバックアップファイル名の文字列(ファイル名に日付を含ませて置くだろうから)を作って、そのファイルがあれば何もしない。無ければバックアップする。
    • good
    • 0

どの部分が難しいと感じているのでしょうか?

    • good
    • 0
この回答へのお礼

特に月が変わったタイミングでシートを複製する所と、毎日のデータを名前をつけて保存する所です。

お礼日時:2016/01/31 23:55

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A