Excel VBA質問箱 IV

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

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


4121 / 13646 ツリー ←次へ | 前へ→

【58317】ファイルの更新日付を取得して開く あんどーなつ 08/10/18(土) 18:08 質問[未読]
【58321】Re:ファイルの更新日付を取得して開く りん 08/10/18(土) 19:51 回答[未読]
【58328】Re:ファイルの更新日付を取得して開く あんどーなつ 08/10/19(日) 17:35 質問[未読]
【58329】Re:ファイルの更新日付を取得して開く neptune 08/10/19(日) 19:23 発言[未読]
【58353】Re:ファイルの更新日付を取得して開く あんどーなつ 08/10/20(月) 22:27 お礼[未読]

【58317】ファイルの更新日付を取得して開く
質問  あんどーなつ  - 08/10/18(土) 18:08 -

引用なし
パスワード
   こんなことを考えてます

Application.Dialogs(xlDialogOpen).Show

でダイアログからファイルを選択

ファイルを開くとき(開く前に)ファイルの更新日付を取得。
ここでの更新日付とはファイルのプロパティに表示される「更新日時:.....」のこと

Dim koushin As Date
koushin = ThisWorkbook.BuiltinDocumentProperties("Last save time").Value


ここで,更新日付が今日(当日)でない場合は確認メッセージを表示
当日なら処理続行

If koushin = TODAY() then ←この構文?
Else
Msg = MsgBox( "更新日付は " & Format(koushin, "YYYY/MM/DD")_
"処理続けるか?",vbYesNo + vbQuestion, "確認")


Yesなら処理続行 Noなら処理中止

If Msg = vbYes Then
End If

If Msg = vbNo Then
Exit sub
End If

End If

可能でしょうか
可能であればどう修正しどうつなげばうまく動きますか

【58321】Re:ファイルの更新日付を取得して開く
回答  りん E-MAIL  - 08/10/18(土) 19:51 -

引用なし
パスワード
   あんどーなつ さん、こんばんわ。

>ファイルを開くとき(開く前に)ファイルの更新日付を取得。
>ここでの更新日付とはファイルのプロパティに表示される「更新日時:.....」のこと
>Dim koushin As Date
>koushin = ThisWorkbook.BuiltinDocumentProperties("Last save time").Value
>
>
>ここで,更新日付が今日(当日)でない場合は確認メッセージを表示
>当日なら処理続行

取得した更新日時から時刻(小数)を切り捨てたものと、Date関数で取得したものが一致するかどうかを比較し分岐します。

Sub test()
  Dim koushin As Date
  Application.Dialogs(xlDialogOpen).Show
  If ActiveWorkbook.Name <> ThisWorkbook.Name Then
   '何かファイルを開いた
   koushin = ActiveWorkbook.BuiltinDocumentProperties("Last save time").Value
   If Int(koushin) = Date Then
     MsgBox "今日", vbInformation
   Else
     MsgBox Format(koushin, "ge/m/d作成"), vbExclamation
   End If
  End If
End Sub

こんな感じです。

【58328】Re:ファイルの更新日付を取得して開く
質問  あんどーなつ  - 08/10/19(日) 17:35 -

引用なし
パスワード
   次のような現象が発生する場合があります。

[現象1]EXCELファイル
ファイルのプロパティでは
作成   9/13
更新   9/18
アクセス 10/19
にもかかわらず
メッセージボックスでは H20/9/15 と表示される

[現象2]CSVファイル
実行時エラー
(−2147467259180004005)':
’Valueメソッドは失敗しました:
'Document Property'オブジェクト
が表示され
koushin = ActiveWorkbook.BuiltinDocumentProperties("Last save time").Value
のところで停止する

[現象3]CSVファイル
ファイルのプロパティでは
作成   9/19
更新   9/19
アクセス 10/19
にもかかわらず
メッセージボックスでは M32/12/30 とありえない日付が表示される

CSVファイルでは現象2か3が発生します
試しにファイルを今日一度更新(上書き保存)して再度試してみましたが現象2のエラーとなります

原因・回避策ご存知の方お願いします

【58329】Re:ファイルの更新日付を取得して開く
発言  neptune  - 08/10/19(日) 19:23 -

引用なし
パスワード
   ▼あんどーなつ さん:
こんにちは

現象1はわかりません。
ActiveWorkbookの属性を取得しているので、マクロを実行する時のActiveWorkbookで
変わってきますが、その辺りは大丈夫でしょうか?

>[現象2]CSVファイル
>>[現象3]CSVファイル
>ファイルのプロパティでは
>作成   9/19
>更新   9/19
>アクセス 10/19
>にもかかわらず
>メッセージボックスでは M32/12/30 とありえない日付が表示される
どのような取得の仕方をしているのでしょうか?

>原因・回避策ご存知の方お願いします
原因・回避策は何とかなるかもしれませんが、これまでの情報では
詳細がわからないので原因・回避策もはっきりした事は言えません。

以下事実を、
そもそも論になりますが、CSVファイルってのはtextファイルです。
従って、ExcelBookのファイル形式は持ってないのでExcelのプロパティは通用しません。

例えばtextファイルの更新日は以下で取得します。
Sub t2()
  Dim sFilePath As String
  
  sFilePath = "E:\hoge\Book1.csv"
  'ファイルの更新日時を取得する
  MsgBox FileDateTime(sFilePath)
End Sub

【58353】Re:ファイルの更新日付を取得して開く
お礼  あんどーなつ  - 08/10/20(月) 22:27 -

引用なし
パスワード
   ありがとうございました

現象1はよくわかりませんが
現象2・3は FileDateTime を使うことで解決しました

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