Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32409 / 76734 ←次へ | 前へ→

【49561】ファイルの更新日時を更新したくない
質問  とよだ  - 07/6/11(月) 11:10 -

引用なし
パスワード
   すみません。お世話になります。

計画書を作成するプログラムがあります(アドインで作成しました)
プログラム内で雛形をコピーし計画書を作成しています。

作成された計画書の中には少しだけThisWorkbookにプログラムを記述してます。
今回その箇所に不具合が見つかり記述し直す事になりました。

しかし、ここで問題があります。
コーディングを変更し保存しますと
当然、ファイルの更新日時が変更となってしまします。
シート内にある数値や文章は既にユーザのモノです。
ユーザによっては日付管理をしている方もいらっしゃいます。

ので、更新日時が変更することはマズイとなりました。
そこで、

’パーソナルコントロールボタンに設定したマクロ
Public Sub SetLastDate()
Dim FileName As String
Dim FilePath As String
Dim LastUpdateDate As Date
’初期値セット
FileName = ActiveWorkbook.FullName
FilePath = ActiveWorkbook.Path

If FilePath <> vbNullString Then
  ’前回の更新日時取得
  LastUpdateDate = FileDateTime(FileName)
  ’シートを閉じる
  ActiveWorkbook.Close
  ’ファイルの最終更新日の変更
  Call LsSetFileTime(FilePath, LastUpdateDate)
End If
End Sub


’ファイルの最終更新日の変更の関数(APIを使用しています)
Sub LsSetFileTime(TempFile As String, wDateTime As Date)
  Dim RtnCd As Long, hFile As Long
  Dim lpCreationTime As FILETIME
  Dim lpLastAccessTime As FILETIME
  Dim lpLastWriteTime As FILETIME
  Dim lpLocalFileTime As FILETIME
  Dim lpSystemTime As SYSTEMTIME
  
  '設定する日時をセット
  With lpSystemTime
    .wYear = Year(wDateTime)
    .wMonth = Month(wDateTime)
    .wDay = Day(wDateTime)
    .wHour = Hour(wDateTime)
    .wMinute = Minute(wDateTime)
    .wSecond = Second(wDateTime)
  End With
  'システム時刻をファイル時刻に変換する
  RtnCd = SystemTimeToFileTime(lpSystemTime, lpLocalFileTime)
  'ローカル時間を UTC に変換する
  RtnCd = LocalFileTimeToFileTime(lpLocalFileTime, lpLastWriteTime)
  'ファイルハンドルを得る
  hFile = CreateFileLong(TempFile, GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0)
  'ファイルの時刻を設定
  RtnCd = SetFileTimeLong(hFile, 0, 0, lpLastWriteTime)
  'ファイルハンドルを開放
  RtnCd = CloseHandle(hFile)
End Sub


を記述しましたが、前回の更新日時取得方法が悪いのか?
閉じるタイミングが悪いのか?
更新日時が通常通りのシステム日付となってしまいます。
すみませんがアドバイスをお願い致します。

3 hits

【49561】ファイルの更新日時を更新したくない とよだ 07/6/11(月) 11:10 質問
【49568】Re:ファイルの更新日時を更新したくない neptune 07/6/11(月) 16:44 発言
【49570】Re:ファイルの更新日時を更新したくない とよだ 07/6/11(月) 16:55 発言
【49576】Re:ファイルの更新日時を更新したくない ハチ 07/6/11(月) 18:11 発言
【49577】Re:ファイルの更新日時を更新したくない とよだ 07/6/11(月) 19:34 発言
【49579】Re:ファイルの更新日時を更新したくない yuu1 07/6/11(月) 23:07 回答
【49580】Re:ファイルの更新日時を更新したくない neptune 07/6/11(月) 23:08 発言
【49585】Re:ファイルの更新日時を更新したくない とよだ 07/6/12(火) 9:27 お礼
【49590】Re:ファイルの更新日時を更新したくない とよだ 07/6/12(火) 10:59 お礼

32409 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free