• ベストアンサー

ファイル名を日付にしたいのですが、うまく行きません

Sheet1のセルA1に"2016/5/1"のデータが有ります。 このデータをファイル名にして保存したいので、以下のVBAを作りました。 しかし、ファイル名が"2016/5/1"ではなく、"ym"になってしまいます。 どうしたらよいでしょうか? Option Explicit Sub コピー保存() Dim ym As Long Sheets("Sheet1").Range("a1").Select ym = Range("z1") ThisWorkbook.SaveCopyAs _ Filename:="H:\" & "ym" & ".xlsm" End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

いろいろ、問題がありますね。 まず、何よりも「"ym"」としていることです。 「"ym"」とした時点で、「ym」という文字列になってしまいます。 変数を「"」で囲ってはいけません。 また、「ym = Range("Z1")」って何ですか? それから、ファイル名は文字列ですから、「Dim ym As String」とします。 他にも、「Windows」にはファイル名として使えない文字があります。 半角の「?」や「¥」マークなどですが、半角の「/」もその一つです。 したがって、半角の「/」は全角にする必要があります。 結果、私が作るなら、 Option Explicit Sub コピー保存() Dim ym As String ym = Range("A1").Value ym = Replace(ym, "/", "/") ThisWorkbook.SaveAs Filename:="F:\" & ym & ".xlsm" End Sub となります。

crossinlove
質問者

お礼

Z1はA1の誤りでした。 ご教示いただいたコードで動作確認できました。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

>"2016/5/1"ではなく、"ym"になってしまいます 理由は、すでに回答がある通りだし、極く初心者的なミス。 ファイル名は文字列で指定するもの。 ーー Sub test01() Dim filename As String filename = Format(Range("A1"), "yymmdd") MsgBox filename filename = Format(Range("A1"), "yyyymmdd") MsgBox filename End Sub ' A1 セルに半角で2016/5/1 と入れた場合 '前半では 上記は 160501となる、公判では20160501となる。 こういう書式指定と質問者がしたい日付の表し方を明確にして質問すべきでしょう。 ファイル名の中の年月日の区切りのつもりだろうが、スラッシュは使えない。 A1セルに入れる日付の入れ方も規制しないとならないだろう。 上記は日付シリアル値(文字列でない)をA1セル入れるという前提での話。 この辺もあいまいのままでは。 A1セルにファイル名やその意©j恥部を入れさせるというのは手が込んでいるだけで凝って回っているだけでは? ーー Range("a1").Select ym = Range("z1") これはどういう意味?Z1はA1のミススペルか。Range("a1").Select しなくても、ym = Range("z1") は有効のはず。 ーー http://excelwork.info/excel/booksavecopyas/ ブックのコピーを保存(SaveCopyAs メソッド) 本当に SaveCopyAs メソッド を使うケースなのか?

crossinlove
質問者

お礼

動作確認できました。 ありがとうございます。 Z1はA1のミススペルです。 /が使えないのは把握していませんでした。 SaveCopyAs メソッドは、都度日付のブックを作ろうとしていたので、必要でした。 そこのところの説明が不足していました。 日付もハイフンかアンダーバーか月日表記かを質問するなら指定しておいたほうが良かったです。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • f272
  • ベストアンサー率46% (8653/18507)
回答No.1

"ym"と書けば、当然に変数名のymとは関係なく、文字列のymです。 変数として使いたければ、ymとします。 なお、windowsのファイル名には / という文字はつかえません。

crossinlove
質問者

お礼

""で囲むと変数が使えなくなるんですね。 半角/駄目なんですね。 全角はOKなんですね。 ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A