Year / Date / Time関数を用いたファイル名の自動作成

ファイル名の自動作成

 GetSaveAsFilenameメソッド等で指定できるファイル名を、自動作成するサンプルコードとメモです。

ポイント

 ・日付の取得
 ・時刻の取得
 ・書式の変換
 ・GetSaveAsFilenameメソッド

 ファイル名を自動作成するために、Year・Date・Time関数を使用する。それらの書式を変換し、繋げることで一意の文字列にする。


サンプルコード

ファイル名を自動作成し、「名前をつけて保存」のダイアログを表示

Sub AutoMake_FileName_Sample()
    Dim strFileName As String
    Dim strFilePath As String
    Const conFileFilter As String = "PNG,*.png,JPG,*.jpg,GIF,*.gif,BMP,*.bmp,TIFF,*.tif"
    With Excel.Application
        strFileName = Make_FileName()
        MsgBox "作成されたファイル名は:" & strFileName
        strFilePath = .GetSaveAsFilename(InitialFileName:=strFileName, FileFilter:=conFileFilter)
        If UCase$(strFilePath) = "FALSE" Then Exit Sub
        If Dir(strFilePath) <> "" Then
            If MsgBox("上書きしますか?", vbQuestion + vbYesNo, "確認") = vbNo Then Exit Sub
        End If
        MsgBox "パス&ファイル名:" & strFilePath
    End With
End Sub
'-------------------------------------------------------------------------------------------------------

Function Make_FileName() As String
    Dim datToday As Date
    Dim datTime As Date
    Dim strFileName(0 To 7) As String
    datToday = Date
    datTime = Time
    strFileName(0) = Year(datToday) '西暦の取得
    strFileName(1) = "_" '
    strFileName(2) = Format$(datToday, "mm") '月を2桁に変換
    strFileName(3) = Format$(datToday, "dd") '日を2桁に変換
    strFileName(4) = "_" '
    strFileName(5) = Format$(datTime, "hh") '時を2桁に変換
    strFileName(6) = Format$(datTime, "nn") '分を2桁に変換
    strFileName(7) = Format$(datTime, "ss") '秒を2桁に変換
    Make_FileName = Join$(strFileName, vbNullString)
End Function

メモ

◆Year関数
 年を表す値を返す。

 構文:Year(date)

 [date]
  必ず指定。日付を表すバリアント型 (Variant) の値、数式、文字列式、またはこれらを組み
 合わせた値を指定する。有効な値を含まない場合は、Null値を返す。

◆Date関数
 現在のシステムの日付を含むバリアント型 (内部処理形式 Date の Variant) の値を返す。

◆Time関数
 現在のシステムの時刻を含むバリアント型 (内部処理形式 Date の Variant) の値を返す。

◆Format関数
 式(データ)を指定した書式に変換し、その文字列を返す。

 構文:Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

 [expression]   必ず任意の式を指定。指定したデータは、引数[format]の書式に従って変換。
 [format]   省略可能。定義済み書式または表示書式指定文字を指定。
 [firstdayofweek]
  省略可能。週の 1 日目を指定する定数を指定。
  【定数 / 値 / 内容】
   vbUseSystem / 0 / NLS API の設定値を使用します。
   vbSunday / 1 / (既定値) 日曜
   vbMonday / 2 / 月曜
   vbTuesday / 3 / 火曜
   vbWednesday / 4 / 水曜
   vbThursday / 5 / 木曜
   vbFriday / 6 / 金曜
   vbSaturday / 7 / 土曜
 [firstweekofyear]
  省略可能。年の第 1 週を指定する定数を指定。
  【定数 / 値 / 内容】
   vbUseSystem / 0 / NLS API の設定値を使用。
   vbFirstJan1 / 1 / (既定値) 1 月 1 日を含む週から始まる。
   vbFirstFourDays / 2 / 年の 4 日以上が含まれる最初の週から始まる。
   vbFirstFullWeek / 3 / 年のうち、7 日が含まれる最初の週から始まる。

 【備考:日付/時刻表示書式指定文字(抜粋)】
  y  1 年のうちで何日目に当たるかを返す (1 ~ 366)。
  yy  西暦の年を下 2 桁の数値で返す (00 ~ 99)。
  yyyy 西暦の年を返す (100 ~ 9999)。

  m  月を表す数値を返す。1 桁の場合、先頭に 0 が付かない (1 ~ 12)。
  mm  月を表す数値を返す。1 桁の場合、先頭に 0 が付く (01 ~ 12)。
  mmm 月の名前を英語 (省略形) の文字列に変換して返す (Jan ~ Dec)。
  mmmm 月の名前を英語で返す (January ~ December)。

  d  日付を返す。1 桁の場合、先頭に 0 が付かない (1 ~ 31)。
  dd  日付を返す。1 桁の場合、先頭に 0 が付く (01 ~ 31)。
  ddd 曜日を英語 (省略形) で返す (Sun ~ Sat)。

  h  時間を返す。1 桁の場合、先頭に 0 が付かない (0 ~ 23)。
  hh  時間を返す。1 桁の場合、先頭に 0 が付く (00 ~ 23)。
  n  分を返す。1 桁の場合、先頭に 0 が付かない (0 ~ 59)。
  nn  分を返す。1 桁の場合、先頭に 0 が付く (00 ~ 59)。
  s  秒を返す。1 桁の場合、先頭に 0 が付かない (0 ~ 59)。
  ss  秒を返す。1 桁の場合、先頭に 0 が付く (00 ~ 59)。

◆Join関数
 配列の各要素を結合して作成される文字列を返す。

 構文:Join(sourcearray [, delimiter])

 [sourcearray]
  必ず指定。結合する文字列を含む 1 次元配列を指定。
 [delimiter]
  省略可能。戻り値となる文字列を区切るのに使用する文字を指定。
  省略すると半角スペース (" ") が使用。

◆GetSaveAsFilenameメソッド
 ファイル名を取得するために、[名前をつけて保存] ダイアログ ボックスを表示。ダイアログボックスで指定したファイルは、実際には保存されず、返り値にファイルのパスが格納される。ダイアログボックスでキャンセル等、入力が取り消された場合は「False」が返る。

 構文:GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

 [InitialFilename]
  既定値として表示するファイル名を指定。省略すると、作業中のブックの名前が使われる。
 [FileFilter]
  省略可能。ファイルの候補を指定する文字列(ファイルフィルター文字列)を指定。
  省略した場合は"すべてのファイル (*.*)"になる。
 [FilterIndex]
  省略可能。引数[FileFilter]で指定したファイルフィルターの中で、何番目を既定値にするかを指定。
  この引数すると、最初のファイルフィルター文字列が既定値となる。
 [Title]
  ダイアログボックスのタイトル。この引数を省略すると "名前をつけて保存" になる。
 [ButtonText]
  省略可能。Macintosh用の引数。Windowsでは使用しない。


【備考】
 [FileFilter]の指定例
  ・1つのフィルター:"テキスト ファイル (*.txt)"
  ・1つのフィルターに複数種類のファイル:"Visual Basic ファイル (*.bas;*.txt),*.bas;*.txt"
  ・2つのフィルター:"テキスト ファイル (*.txt),*.txt,アドイン ファイル (*.xla),*.xla"
  ・(省略):"すべてのファイル (*.*)"

◆「$」の付く関数
 参照


◆Dir関数
 参照


◆UCase関数
 参照


Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.