Discussion:
シート名を本日の日付にする方法(VBA)
(too old to reply)
unknown
2007-05-18 04:31:01 UTC
Permalink
Workbook_openイベントで、シートを末尾にコピーしたのですが、
毎日1シートずつ更新されていく書類なのです。

ですので、件名の通り、本日の日付をシート名にしたいのですが、
ご存じの方がいらっしゃれば是非お教えください。
まえだAきひろ
2007-05-18 05:50:01 UTC
Permalink
Excel
VBAが使えるのであれば、Date関数の返り値をString変数に代入後、Replace関数でそのString変数に対しワークシート名に使えない記号を置換するなど処理後、末尾に挿入するワークシートの名前としてつかえばいいですよ。
unknown
2007-05-18 06:28:01 UTC
Permalink
なるほど!

一つクッションを入れてあげればいいのですね。

どうもありがとうございました。とても参考になりました!
まえだAきひろ
2007-05-18 07:23:01 UTC
Permalink
Date関数の返り値自体は、日付型ですが、String変数へ返り値を代入すると、文字列型に型変換されます。環境設定にも左右されますが、"2007/05/18"のようなYYYY/MM/DD形式の文字列になります。

これをこのまま、ワークシート名に使おうとすると、/(スラッシュ)がワークシート名に使えない記号のため、うまくいきません。ですから、REPLACE関数など使って、ワークシート名にふさわしい文字列に修正しなくてはなりません。


Workbook_openイベント時に、本日の日付をワークシート名としてワークシートを挿入する、あるいは既存ワークシートをコピーして本日の日付にワークシート名をつけかえる場合、その前処理として、既に本日の日付のワークシート名が存在していないかチェックして、同名の名前のワークシート挿入やワークシート名変更でエラー発生を回避するようにしましょう。
kounoike
2007-05-18 11:39:42 UTC
Permalink
Post by unknown
Workbook_openイベントで、シートを末尾にコピーしたのですが、
毎日1シートずつ更新されていく書類なのです。
ですので、件名の通り、本日の日付をシート名にしたいのですが、
既に解決済みだと思いますが、参考までに。もちろん、やり方は何通り
もありますが。ただし、シートをコピーするのではなく、ただ単に追加する
だけですが。
日付の書式は、Format(Date, "ge年m月d日")の部分で好みのタイプに
変更。

Sub te()
Dim flag As Boolean
Dim i As Long
On Error GoTo errhandle
flag = False
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(Date, "ge年m月d日")
Do While (flag)
ActiveSheet.Name = Format(Date, "ge年m月d日") & "(" & i & ")"
flag = False
Loop
Exit Sub
errhandle:
i = i + 1
flag = True
If i = 1 Then
Resume Next
Else
Resume
End If
End Sub

Loading...