• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付のセルをファイル名にしたい)

日付のセルをファイル名にしたい

このQ&Aのポイント
  • エクセルで複数のセルの内容をファイル名にしてPDFで保存するマクロのコードを使っているが、日付のセルを参照する方法が分からない。
  • ファイル名は「yymmdd+A1セルの内容」のように表示させたい。
  • もしくは、別のセルにE22を参照して「200213」というように表示させても良い。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.1

Format(Range("E22").Value, "yymmdd") じゃないでしょうか。

akira0723
質問者

お礼

早々のご回答ありがとうございました。 今確認してあっさり希望通りに動きました。 一応NETで調べて、FormatもValueもTextも試したつもりでしたがなぜか動きませんでした。 朝一で昨日の宿題が解決しスッキリしました。

その他の回答 (3)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

こうゆうことでしょうか? E22のセルに ・単なる文字が埋まるケース ・数値が埋まるケース ・日付が埋まるケース があり、日付が埋まるケースの場合に 提示されたコードではエラーになる。 それは、"E22"に"2020/3/4"などと埋まっており それがそのままファイル名の一部となり、 "/"がファイル名に使えない文字のひとつだから。 ならば、 Filename:="\\***\XXXX\?????" & "\" & Range("E22") & Range("A1") & ".pdf" を Filename:="\\***\XXXX\?????" & "\" & Range("E22").text & Range("A1") & ".pdf" とし、 E22に日付が埋まった場合は、 E22セルの表示形式に"YYYYMMDD"などを指定し、 見かけ上、"/"を含まない文字列にすることで エラーを回避できると思います。 それとも、この対応をVBAで動的に対応したいですか? 例えば、ファイル名を組み立てる時に "/"を取り除いてしまうといった対応が思いつきます。 こんなコードです。 Sub 保存印刷()  Dim wkFName As String    wkFName = "\\***\XXXX\?????" & "\"  wkFName = wkFName & Replace(Range("E22").Text, "/", "")  wkFName = wkFName & Range("A1") & ".pdf"    Sheets("提出").ExportAsFixedFormat Type:=xlTypePDF, Filename:=wkFName    Application.Dialogs(xlDialogPrint).Show End Sub

akira0723
質問者

お礼

ありがとうございました。 いつも大変お世話になっております。 この質問の元コードもHohoPapaさんのコードだったと思います。(少し変えた可能性あり?) 非常に好評で多くのファイルで使わせていただいております。 ただし、今回のBSは最初にご回答いただいた#No1さんにさせていただきますのでご了承ください。

akira0723
質問者

補足

いつもながら当方のレベルに合わせた解説付きのご回答に感謝です。 ご確認の件はその通りです。 ただ、今回は質問に記載のように >(E22").Textや.Value・・・も試したのですがダメでした。 >別のセルにE22を参照して「200213」というように表示させ・・・ も一応やっては見たのですがダメでした。 何かの間違いかと、”/”を含まない表示(yymmdd)は再度試してみましたがやはりダメでした。 当方のファイル名にしたい日付のセルの表示は別のシートからのセル参照で2020/2/16を顧客に提出する成績表に転記するため「2020年2月16日」と表示させ、それをマクロで自動保存するときにファイル名として200216-Aセルにするというような参照のせいかもしれません。

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.3

適当なセルに 2020/2/12 と入力すると、Excelが日付と判断して「ある整数」をあたかも日付であるかのように表示してくれます。 「ある整数」は、先に入力したセルの書式設定で「標準」を選択すれば表示されます。2020/2/12 なら 43873 です。 このように Excelは日付データを整数として持っています。 その整数を日付文字列に変換するのがFORMAT関数です。 ためしに、別のセルに 43874 と入力し、セルの書式設定で日付を選択すれば 2020/2/13 になるはずです。

akira0723
質問者

お礼

早々のご回答ありがとうございます。 参考になりました。

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

ファイル名は文字列で指定します。エクセルのオブジェクトの名前は、すべて文字列で指定する(.Nameは)。ファイル名の中に日付情報を入れるなら、日付をFormat関数で、好きな形式の日付に変換して、他の文言と&でくっつければ仕舞い。なぜこんなことが質問になるのかな。 VBAをやりだしたら、WEBで照会は必須。 だから、Googleででも「VBA Fotmay関数 日付」で照会すべきで、それもしてないようだな。 https://www.atmarkit.co.jp/ait/articles/1504/30/news014.html など多数記事在り。 ーー またエクセルでは、日付の入ったセルの値は、日付シリアル値という数が入っているのを知っているのかな。それと見てくれの日付表示との関係を。

akira0723
質問者

お礼

ご回答ありがとうございます。 参考になりました。

関連するQ&A

専門家に質問してみよう