Memorandum

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

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

ポイント

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

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


サンプルコード

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

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

参照

ページトップへ戻る
Copyright(C) 2009- 坂江保 All Rights Reserved.