- 締切済み
エクセルVBAでBOOKのダウンロード日時を取得したいのです。
社内のイントラネットに貼り付けたエクセルのBOOKを、社員が各自の端末にダウンロードした日時を、そのダウンロードされたBOOKのマクロで取得したいのです。 ためしに、以下のようにしてみました。 Sub test01() MsgBox "FileDateTime:" & FileDateTime(ThisWorkbook.FullName) End Sub これでは、常にそのBOOKを起動した日時が取得されるだけでした。 Sub test02() MsgBox "作成者は:" & ActiveWorkbook.BuiltinDocumentProperties(3).Value _ & vbCrLf & "最終更新者は:" & ActiveWorkbook.BuiltinDocumentProperties(7).Value _ & vbCrLf & "作成日時は:" & ActiveWorkbook.BuiltinDocumentProperties(11).Value _ & vbCrLf & "更新日時は:" & ActiveWorkbook.BuiltinDocumentProperties(12).Value End Sub これは、イントラに貼り付けたオリジナルのBOOKの作成日時、更新日時等のデータでした。 ダウンロード日時を取得することはできないのでしょうか? やりたいことは、改定等があった場合、いつまでも古いバージョンを使いつづけられないようにダウンロード日から例えば30日間を使用期限に設定するというようなことです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- popesyu
- ベストアンサー率36% (1782/4883)
30日間の間に大改編がされても気付くのは最長で30日後ですから、どちらにせよ問題がある方法かと。ウィルスソフトや使用期限のあるソフトのように、通信してバージョン番号を常に対比させるようにしておけば済むかと思いますが。 どこかにバージョン情報をあげとくだけで、IEを使っても文字列を取得するだけでもよいですし、もっとおしゃれにやるならWSHやBASP21を使って比較するとか。
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 > そのダウンロードされたBOOKのマクロで取得したいのです。 どうやってダウンロードしたのでしょうか? Web サーバがあるんですか? という疑問はありますが、ご質問文にあるコードで取得できると思いますよ。 ただし、Web サーバーのブックを直接開いているのだとすれば、ご質問のマクロを 実行しているのはイントラのものです。したがって、 > イントラに貼り付けたオリジナルのBOOKの作成日時、更新日時等のデータでした。 という結果になるでしょう。 一度ローカルに保存したものを、ローカルで開けば求めている結果になると思います。 対策としては、イントラ上で直接開かれたものか、ローカル上なのかを判別してやれば 良いのですが、ThiwWorkbook.Path が使えると思います。 イントラ上(Webサーバ上と仮定)ならば、http:// などのアドレスが返りますので、 これで分岐処理できませんか? 以下、余談。 > いつまでも古いバージョンを使いつづけられないようにダウンロード日 > から例えば30日間を使用期限に設定するというようなことです。 ロジックそのものですが、、 会社で使用するファイルの場合、この手の問題は「ダウンロード日」ではなく、 「作成日」が使用期限の基点になるのでは? ならば、Workbook.Open イベント等で今日の日付けと使用期限を比較すれば良い のではないかと思います。
お礼
早速ありがとうございます。 > 一度ローカルに保存したものを、ローカルで開けば求めている結果になると思います。 Web上で開くのではなく、端末に右クリックで「対象をファイルに保存」させています。そのBOOKに Sub test02() を走らせてもオリジナルの作成・更新日時が表示されます。(今もやってみましたが) > 会社で使用するファイルの場合、この手の問題は「ダウンロード日」ではなく、「作成日」が使用期限の基点になるのでは? 現在はそうしていますが、そうだと改定がない場合でも30日ごとに、つねに新しい作成日のものに交換しなくてはなりません。 ダウンロード日から30日にしておけば、BOOKの改定の情報が最低でも30日前にはわかるので、改定がわかったときにダウンロードできなくしてしまえば一度で済みます。(その際、新版も使用開始日制限をつけてアップロードしますが) 本当はダウンロードさせずイントラ上で直接開かせて使うようにすれば、変更時に差し換えれば済むことなので、使用期限など関係なくなるのですが、 http://odn.okwave.jp/qa3279314.html Web上のエクセルのVBA操作について で、質問したようなことが解決できずにいますのでそれも出来ません。
補足
不思議なことに気づきました。 ダウンロードしたファイルを開き、メニューからファイル、プロパティでファイルの情報タブを見ると、作成日時はどうやらダウンロード日時のようです。 詳細情報タブで見るとオリジナルの作成日時になっています。 ファイルの情報タブの作成日時を取得したいです。
お礼
有難うございます。 わたしにそのような技術があればそうしたいのは山々なのですが・・・・。 いかんせん、初心者に毛の生えた程度のエクセルVBAしか出来ないものですからなんとかVBAでやりたかったのです。 > 30日間の間に大改編がされても気付くのは最長で30日後ですから いえいえ、改定の三十日以上前にはわたしのところに必ず連絡がありますから、(というか改定作業するのはわたしです)改定ときまれば、改定三十日前以降にダウンロードされたものはダウンロード日にかかわらず改定日で作動しないように細工できます。 ダウンロード日時を特定できれば問題は解決できるんです。
補足
Sub test03() Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox "DL日時:" & FSO.GetFile(ThisWorkbook.FullName).DateCreated End Sub で取得できました。 解決です。