質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

5200閲覧

vba シート名 実行日付

coko1

総合スコア276

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2016/09/13 07:28

編集2016/09/13 08:05

マクロを実行後excelを読み込んでシートをコピーするのですが、読み込んだシートの名前を実行日の日付にする方法はありますでしょうか?
その日初めての実行は "20xx/xx/xx_1" または "20xx/xx/xx" 、
その日付内で複数回マクロを実行した場合は "20xx/xx/xx_2" "20xx/xx/xx_3"のようにしたいのですが…

実際にやりたいこと。
・マクロの実行日をシート名につけてシートを月単位または日にち単位での管理
(月単位の場合、9月に行ったものを1BOOK、10月に行ったものを1BOOKとしてまとめたい)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2016/09/13 07:52

実行するたびシートが増えていくのですか?
coko1

2016/09/13 08:06 編集

とりあえずはそのイメージで考えています。
guest

回答3

0

ベストアンサー

シート名を求める処理を書いてみました。
これで得られた名前でシートをコピーすればよろしいかと思います。
ちなみにシート名にスラッシュ(/)は使えないので、YYYYMMDD_#の書式にしています。

VBA

1Dim ws As Worksheet 2Dim dd As String 3Dim max As Integer 4Dim num As Integer 5Dim newname As String 6dd = Format(Now, "yyyymmd") 7max = 1 8For Each ws In Worksheets 9 If Len(ws.Name) > 8 Then 10 If Left(ws.Name, 8) = dd Then 11 num = Val(Mid(ws.Name, 10)) 12 If num >= max Then max = num + 1 13 End If 14 End If 15Next 16newname = dd & "_" & max 17

投稿2016/09/13 08:17

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takito

2016/09/13 08:32

私も最初は枝番を抜き出して+1しようと思いましたが、シートの並びを入れ替えても大丈夫か不安になりました、、、
coko1

2016/09/13 08:45

この方法で一度試してみます!
ttyp03

2016/09/13 08:57

>takitoさん takitoさんが回答した処理内容とほぼ一緒だったので笑ってしまいましたw
jawa

2016/09/13 09:35

横から失礼しますm(__)m 全てのシートをループして同じ日付の最大枝番+1にしているので、シートの並び順を入れ替えても大丈夫そうですね。 自分も当初、Takitoさんと同じく「日付が同じシートのシート数をカウントする方法」を考えたのですが、枝番3まで作った後に枝番2を削除したりすると次もまた枝番3を作ることになってしまいそうなので、結局ttyp03さんのように最大枝番を見つける必要があるという結論に至りました(^-^;
takito

2016/09/13 10:49

あ、そうか、なるほど!読めてませんでした、、、解説ありがとうございました
guest

0

準備
a.マクロのあるブック(コピー先)
b.コピー元のブック

イメージ
a.を開いてマクロを実行
(1)b.から目的のシートをa.にコピー(シート名はあとで変更するのでそのまま)
(2)シート名候補となる今日の日付文字列を決定 20160913
※ちなみにシート名にスラッシュは使えません
(3)a.のブックの全シートから(2)のシート名候補文字列で「前方一致」するシート数をカウント
(4)(3)の結果+1を今回の枝番として(2)のシート名候補の後ろに付加
※20160913 が1枚目なら 20160913_1

こんな感じでできそうです

投稿2016/09/13 08:20

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

マクロを実行した回数をどこかのセルに入力しておき、
マクロを実行するたびに、そこのセルの値をプラス。
表示するセルに、日付と値を”&”でつなげればOKだとおもいます。

投稿2016/09/13 07:35

jm1156

総合スコア866

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問