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

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

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

お世話になります。 さてかなり前に2つのセルの内容をファイル名にしてpdfで保存して印刷画面の表示までをマクロにする下記のコードを教わって多くのエクセルで使用しているのですがE22が日付の場合が出てきました。 (E22").Textや.ValueやNETで探したコードも試したのですがダメでした。 (要するに分かっていません) やりたいことは、ファイル名は200216XXXXのようにyymmdd+A1セルの内容にしたいのです。 別のセルにE22を参照して「200213」というように表示させてもOKです。 一番簡単な方法を教えて下さい。 Sub 保存印刷() Sheets("提出").ExportAsFixedFormat Type:=xlTypePDF, _ Filename:="\\***\XXXX\?????" & "\" & Range("E22") & Range("A1") & ".pdf" Application.Dialogs(xlDialogPrint).Show End Sub

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.1

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

akira0723
質問者

お礼

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

その他の回答 (3)

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答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/17068)
回答No.2

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

akira0723
質問者

お礼

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

関連するQ&A

  • エクセルのマクロでシートの指定範囲をセル名で保存

    いつもお世話になっております。 だいぶ前に下記のコードを教わってあまりの便利さに非常に多くのファイルで多用しているのですが今回エクセルシートのまま保存したく。 2か所のPDFとpdfをxlmsに変更してみたのですが何故か必ずpdfで保存されるのです。 尚、保存ファイルは印刷範囲で指定でした範囲で、ページ設定通りに印刷されることも必要なので合わせてよろしくお願いします。 更に、問題ないと思うのですが、保護の範囲&編集許可の範囲指定も保持したファイルにしたいのでこれも合わせてお願い致します。 Sub 保存() Sheets("成績表(提出)").ExportAsFixedFormat Type:=xlTypePDF, _ Filename:="\\Sav01\成績書\原紙\1.成績表" & "\" & Range("E20") & ".pdf" End Sub

  • VBA  PDF ファイル名をセルからつける

    ExcelでPDFを出力するときに、たとえばB1のセルに入力されているものを、ファイル名の一部として出力する方法がわかりません。 例えばB1に「資料1」と入力されていた場合で、PDFのファイル名を[TEST資料1.pdf]にしたい場合、下記に何かを足すだけでできますでしょうか? ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "I:\補TEST\TEST.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True End Sub できれば、解説もいただけると助かります。よろしくお願いします。

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

    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

  • デスクトップの所定のフォルダにセルをファイル名で

    先日ここでデスクトップの決まったフォルダ(見積書)の中に、セルA1名のフォルダを作成し、そのフォルダ内にB2+C3をファイル名に保存したい、とし質問したら下記のたった6行で出来ることご回答いただきました。(ビックリ!) このコードは個々のデスクトップのファイルパスが不要なので、どのPCでもこのままC&Pで動くので非常に有用で早速使いたいのですが、新たな要求として、親フォルダの中に子フォルダ(フォルダA1)をつくらずに、デスクトップ上の決まった名前(見積書)のフォルダに直接B2+C3のファイル名で保存したく。 下記のご回答頂いたコードを試行錯誤してみたのですがやはりだめでした。 Sub Macro1()   ChDrive "C:"   ChDir CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\見積書"   On Error Resume Next   MkDir [A1]   On Error GoTo 0   ActiveSheet.ExportAsFixedFormat xlTypePDF, [A1] & "\" & [B2] & [C3] End Sub

  • 違うシートのデータを1つのPDFファイル保存VBA

    Sub データPDFファイル化() If MsgBox("ファイルをPDF化し過去データとして保存します。よろしいでしょうか?", vbYesNo) = vbNo Then End End If If Range("L2").Value <> "" Then Dim Fn As String Fn = Format(Range("L2"), "yyyy年m月d日") & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:="D:\フォルダB\過去記録データ保存用フォルダ\データ\" & Fn Else MsgBox "セルL2にファイル名が入力されていません。", vbExclamation End If End Sub この様なコードがあります。エクセル2003では使用出来ないのでエクセル2007以降の使用です。 これはシート名「A」にコマンドボタンを設置し、そのコマンドボタンを押すとPDF化して保存するマクロです。 そこで質問ですがコマンドボタンを押すとシート名「A」と隣にあるシート名「B」をまとめてPDFファイルで保存する方法はどの様にすれば良いのでしょうか? PDF化した際は1ページ目がシート名「A」で2ページ目がシート名「B」を表示させ、名前はシート名「A」のL2(yyyy年m月d日)で保存します。

  • エクセル セル内容をファイル名に

    はじめまして。 今現在エクセルにていくつかのセル内容を結合しています。(ファイル名用として) その中には日付をTEXT(A1,yy.mm.dd)としSUBSTITUTE(A2,"/",".")でスラッシュをピリオドに 変換してるセルもあります。 ボタンを作り押したときにそのセルを読み込み、ファイル名にしているのですが 読み込まれた内容にダブルコーテーションがついてしまいます。 「”ファイル名”」の様になってしまい、そのまま保存を押すと .xlsが付かず困っております。 ちなみにボタンに入れてあるマクロは Private Sub CommandButton1_Click() Application.Dialogs(xlDialogSaveAs).Show Arg1:=Range("AK14").Value End Sub です。 どなたかご教授頂けませんでしょうか。。。 宜しくお願い致します。

  • VBAでPDFを保存する

    Excel2013です。VBAでPDFで保存するコードを書きたいのですが、通常の名前をつけて保存のように保存先とファイル名をその都度変更できるウィンドウを出したいのですが、どのようにすればいいのでしょうか?保存先とファイル名をあらかじめ指定する方法はネット検索でヒットするのですが、そうでない方法が探せません。 以下は現在のコードです。 Sub PDF保存() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "c:\\xxx.pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False End Sub

  • VBA中の”シート名”を”アクティブシート”に変更

    いつもお世話になっております。 非常に初歩的な質問なのですが、下記の2つのVBA中のシート名をアクティブシートに変更したいのですが、 sheetName = ActiveSheet.Name で試行錯誤するもうまくいきません。 実際のコードは下記の通りです。 これらのシート名”申請書”をアクティブシートに変更したいのです。 このコードは過去にここで教えて頂いたコードで出来ればこれを修正したいので宜しくお願いします。 1.Sub 申請書登録() Dim NewBookName As String With ThisWorkbook.Sheets("申請書") Windows("1.新規・変更登録申請書(原紙)・リスト②T用.xlsm").Activate For i = 5 To Sheets("規格登録・変更リスト").Range("A1048576").End(xlUp).Row + 1 If Sheets("規格登録・変更リスト").Range("B" & i).Value = "" Then With Sheets("規格登録・変更リスト") .Range("A" & i).Value = Sheets("申請書").Range("E3").Value .Range("B" & i).Value = Sheets("申請書").Range("O3").Value .Range("C" & i).Value = Sheets("申請書").Range("E4").Value ・・・・・・・・・・・・・・・・・・・ 2.Sub 申請書保存() Dim NewBookName As String With ThisWorkbook.Sheets("申請書") NewBookName = .Range("F22").Value & " " & .Range("E4").Value & " " & .Range("A2").Value & " " & .Range("A1").Value Worksheets("申請書").ExportAsFixedFormat Type:=xlTypePDF, Filename:="\***\XXXX\1.申請書\申請書" & "\" & NewBookName End With End Sub

  • エクセルシートをVBAでPDFファイルで保存する

    いつもお世話になっております。 先日ここで、(1)エクセルシートから自動でPDFファイルを作成し、(2)所定のフォルダに自動で保存し、(3)作成されたPDFファイルを決まった宛先に自動送信する、というVBAのコードを教わって非常に満足して使い始めたのですが、使ってみたらどんどん欲が出てきて3度目の質問です。 上記のコードでは、PDFファイルが「送信.pdf」で上書きされてしまう事は分かっていたのですが、メールの送信日時で区別できるので送信BOXから手動で専用BOXに移動すれば良いと思ったのですが、やはりPDFファイルを所定のフォルダーに自動で保存できれば一気に完了するので何とかならないかと。 一応NETで「日付をファイル名にする」といういくつかのコードを調べて種々試行錯誤してみたのですが、当方の実力では下記のVBAコードに組み込むことはできないとの結論に至りました。(情けない限り) 追加したいことは自動作成されるpdfファイルを上書きされずに所定のフォルダに自動保存する、です。 ファイル名としては特定のセルの値(これがbest)、もしくは日付(yyyy/dd/mm)でも十分です。 とにかく自動作成されるPDFファイルが所定のフォルダに上書きされずに保存されればOKなのですが。 本当に何度も追加質問をすることになってしまって申し訳ないのですが宜しくお願いいたします。 Sub Test() Dim FilePath As String, strSub As String Dim OutlookApp As Object Dim OutlookMail As Object 'On Error Resume Next FilePath = "\\ABC\123\あいう\アイウ\サンプル名\結果報告書\送信.pdf" 'Sheet3の結果報告書の特定のセルに品名 strSub = Worksheets("結果報告書").Range("E14").Value & "XXXX" & "LOT " & Range("E19") Worksheets("結果報告書").ExportAsFixedFormat Type:=xlTypePDF, Filename:=FilePath Set OutlookApp = CreateObject("Outlook.Application") Set OutlookMail = OutlookApp.CreateItem(0) With OutlookMail .To = "*****@xxxxx.co.jp" .CC = "" .BCC = "" .Subject = strSub .Body = "表題の件添付の通りです。" .Attachments.Add FilePath .Send End With   MsgBox "送信完了" End Sub

  • エクセルで所定のフォルダーにPDFファイルで保存

    エクセル、ワードでほぼ毎日送付する報告書をpdfファイルで送ることになりました。 ファイル名が指定の数字10桁(LOT No)で、これはエクセル表に入力してあるのでそのセルから引っ張ってきたいのです。⇒オペミス防止 少し調べてみたら非常に簡単な下記の3行で出来ることが分かったのですが、ついでにpdfファイル(D10のセル内容+.pdf)で保存画面が出て来れば非常に便利。 更なる欲としては、フォルダーまで指定できれば、マクロボタン化しておけば非常に便利なのですが。 1つ1つのマクロはここで絶大なるHELPを受けて出来ているのですが情けないことに全く応用が利きません。 Sub File() Application.Dialogs(xlDialogSaveAs).Show Arg1:=Range("D10") End Sub 尚、このコードはSheet1にしか適用されないようなので任意のActiveページで使いたいのですが。

専門家に質問してみよう