• 締切済み

自動で、名前をつけて保存

エクセルブックの名前をつけて保存について質問です。 マクロを使用して、ブック名を「A1セル内の文字列+作成日(today関数セル)」という事は可能でしょうか?ご教授お願いします。

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。 > A1セル内の文字列+作成日(today関数セル) MsgBox Range("A1").Text & Format$(Date,"yymmdd") & ".xls" とか。Format 関数を使うと楽ですよ。 例1 は組み込みダイアログを利用します。保存形式は自由に選べ、保存 処理まで Excel が自動で行ってくれるお手軽方法ですが、残念ながら初期 ファイル名は指定できません。  # 引数として指定できないという意味で そこで SendKeys で初期ファイル名をダイアログに無理やり送ってやります。 なお SendKeys はタイミングによって失敗する可能性が若干あります。 ' // 例1 SendKeys を使ったお手軽案 Sub SampleProc1()      Dim sFilename As String      sFilename = Range("A1").Text   If Len(sFilename) > 0 Then     sFilename = sFilename & Format$(Date, "yymmdd")     SendKeys sFilename     Application.Dialogs(xlDialogSaveAs).Show   Else     MsgBox "A1 セルが空", vbCritical   End If End Sub 例2 は保存ファイル名取得専用のダイアログを利用します。これはファイル 名を取得するのみで、実際に保存処理まではしてくれません。 したがって、自分で保存処理を書かなければなりませんが、引数で初期ファイル 名を確実に指定可能です。 ' // 例2 GetSaveAsFilename を使った堅実案 Sub SampleProc2()      Dim sFilename As String      sFilename = Range("A1").Text   If Len(sFilename) > 0 Then     sFilename = sFilename & Format$(Date, "yymmdd")     sFilename = CStr(Application.GetSaveAsFilename(sFilename, "Excel 形式(*.xls),*.xls"))     If UCase$(sFilename) <> "FALSE" Then       ActiveWorkbook.SaveAs sFilename     End If   Else     MsgBox "A1 セルが空", vbCritical   End If End Sub

回答No.1

可能です。 とだけ書こうと思いましたが。。。 ファイル名の一部にする日付部分のフォーマットをどうしたいのか分かりませんが、yyyymmdd 形式にするのであれば VBA の Year関数、Month関数、Day関数を使えば良いと思います。 これらの関数は "日付と判断できる情報" から "年"、"月"、"日" の値を取り出してくれます。これらを合体させれば日付の区切り文字無しの書式が作れます。 以下は yyyymmdd の文字列を作成する例です。 月や日が一桁の場合は十の位に "0" を加えています。 Dim today As Date dotay = Date() Dim y As Integer y = Year(today) Dim m As Integer m = Month(today) Dim d As Integer d = Day(today) Dim formated As String formated = y & Left("0" & m, 2) & Left("0" & d, 2)

関連するQ&A

専門家に質問してみよう