「まめ録」に過去のデータが取り込めるよう、「ファイルの作成日時をカレンダーの日付にしよう」と思い、get作成日時 という関数を作った。更新日時だと変わる可能性があるからだ。
Public Function get作成日時(argFullPath) As Date On Error GoTo Err_get作成日時 Dim mbTitle As String Dim FSO Dim fullPath As String mbTitle = MYObjName & "/get作成日時" Set FSO = CreateObject("Scripting.FileSystemObject") STRAns = FSO.GetFile(argFullPath).DateCreated If IsDate(STRAns) Then DATAns = CDate(STRAns) get作成日時 = DateSerial(Year(DATAns), Month(DATAns), Day(DATAns)) Else get作成日時 = 0 End If Exit_get作成日時: Exit Function Err_get作成日時: MsgBox Err.Number & "/" & Err.Description, vbCritical, mbTitle Resume Exit_get作成日時 End Function
失敗したばかり。コピーを作り、動作検証して気が付いた。更新日時 < 作成日時 なのである。
WindowsXP の言い分も理解できるが、困ったなぁ〜
Excel VBA のヘルプを調べたら、
“FSO 更新日時” でググる。
■ Office TANAKA - Excel VBA FileSystemObject [Fileオブジェクト]
プロパティ | Attributes | ファイルの属性を設定します |
DateCreated | ファイルが作成された日付と時刻を返します | |
DateLastAccessed | ファイルが最後にアクセスされたときの日付と時刻を返します | |
DateLastModified | ファイルが最後に更新されたときの日付と時刻を返します | |
Drive | ファイルが存在するドライブの名前を返します | |
Name | ファイルの名前を返します | |
ParentFolder | ファイルが存在するフォルダを返します | |
Path | ファイルのパスを返します | |
ShortName | ファイルの8.3形式の名前を返します | |
ShortPath | ファイルの8.3形式のパスを返します | |
Size | ファイルのサイズを返します | |
Type | ファイルの種類を返します | |
メソッド | Copy | ファイルをコピーします |
Delete | ファイルを削除します | |
Move | ファイルを移動します |
■ 結果
Excel VBA のヘルプにあった LastUpdate は間違いッ!
DateLastModified に変更し、関数を完成させた。
Public Function get作成日時(argFullPath) As Date On Error GoTo Err_get作成日時 Dim mbTitle As String Dim FSO Dim datCreate As Date, datUpdate As Date Dim strCreate As String, strUpdate As String mbTitle = MYObjName & "/get作成日時" Set FSO = CreateObject("Scripting.FileSystemObject") strCreate = FSO.GetFile(argFullPath).DateCreated If IsDate(strCreate) Then datCreate = CDate(strCreate) datCreate = DateSerial(Year(datCreate), Month(datCreate), Day(datCreate)) End If strUpdate = FSO.GetFile(argFullPath).DateLastModified If IsDate(strUpdate) Then datUpdate = CDate(strUpdate) datUpdate = DateSerial(Year(datUpdate), Month(datUpdate), Day(datUpdate)) End If If datCreate > datUpdate Then get作成日時 = datUpdate Else get作成日時 = datCreate End If Exit_get作成日時: Set FSO = Nothing Exit Function Err_get作成日時: MsgBox Err.Number & "/" & Err.Description, vbCritical, mbTitle Resume Exit_get作成日時 End Function