• ベストアンサー

VBAでエクスプローラに表示されるデータ取得

エクセルVBAでエクスプローラに表示されるデータ取得するコードを教えてください。 例えば、 C:\Documents and Settings\USER\デスクトップ\TEST004.xlsが、エクスプローラに表示される「サイズ」と「更新日時」を取得するにはどのよなコードになるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

No.2回答者です。 >エクセルファイルのイントラネットからのダウンロード日時を取得したいのです。 なるほど、状況が把握できました。 WinodwsXP IE6 Excel2000で検証してみました。 19:30:00 ダウンロード開始(時間のみ抜粋) 19:30:15 ファイルに保存 エクスプローラ上の表示 作成日付 19:30:15 更新日付 19:30:02 VBA(FileDateTime) 更新日付 ブックを開いた時間 FSO(DateCreated、DateLastModified) 作成日付 19:30:15 更新日付 ブックを開いた時間 と言う結果で、作成日付は一致しましたが、 更新日付は一致しませんでした。 推測ですが、Ecxelには自動修復機能などがあり、 自動的にバックアップを作ったりしている為だと思います。 ちなみに、閉じているブックを調べた場合、 更新日付もエクスプローラの表示と一致しました。 (VBAを実行しているファイルと、調べる対象が異なる場合) ダウンロードしたファイル自身のVBAで、 自分自身のダウンロード日付を調べるには、 FSOで作成日付を調べるのが妥当だと思います。 つまり、test03の方法でですね。 >test03がたいていの場合、ただしくDL日時を返してくれるのですが、どういうわけか返さない場合もありましたので、常にDL日時を表示している(と思われる)「エクスプローラ上に表示されているデータ」という質問になったわけです。 test03で表示しているのは作成日付です。 エクスプローラにデフォルトで表示されているのは更新日付です。 ([表示]→[詳細表示の設定]で、作成日付を表示することが出来ます。) ダウンロードしたファイルの作成日付と、更新日付は多少のずれがあります。 (しかも、順番が前後していますね(^^;) 具体的にどれくらい差がありました? 大幅に狂うようなら問題ですが、多少の誤差は仕方ないと思います。

merlionXX
質問者

お礼

ありがとうございます。 会社でないとイントラにアクセスできないので試せませんでした。 > ダウンロードしたファイルの作成日付と、更新日付は多少のずれがあります。 >(しかも、順番が前後していますね(^^;) > 具体的にどれくらい差がありました? ひょっとしたらわたしの勘違いだったのかも知れません。 いまやるとtest03でDL日時を表示しました。 先週やったら1か月も前の日付が出た(と思った)ので質問しました。 有難うございました。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

これもFSOで取得可能です Set FSO = CreateObject("Scripting.FileSystemObject") FSO.GetFile("C:\Documents and Settings\USER\デスクトップ\TEST004.xls").DateLastModified '最終更新日 FSO.GetFile("C:\Documents and Settings\USER\デスクトップ\TEST004.xls").Size 'サイズ

merlionXX
質問者

お礼

有難うございました。 ダウンロードしたファイル自身のVBAで、test5のように自分自身のダウンロード日付を調べるとき、DateLastModifiedでは、開いた日時になってしまうようです。 Sub test5() Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox FSO.GetFile(ThisWorkbook.FullName).DateLastModified Set FSO = Nothing End Sub

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

>エクスプローラに表示されるデータ取得する 字面通り厳密に解釈して、「エクスプローラ上に表示されているデータ」 と言う意味なら、非常に難しいです。(不可能かも(^^;) 拡大解釈して、「エクスプローラ上に表示されるデータと同様のデータ」 と言う意味なら、幾つかの情報は簡単に取得できます。 ファイルサイズに関しては、FileLen関数 更新日付に関しては、FileDateTime関数 例: MsgBox(FileLen("C:\Documents and Settings\USER\デスクトップ\TEST004.xls")) MsgBox(FileDateTime("C:\Documents and Settings\USER\デスクトップ\TEST004.xls")) あと、VBAで用意されている関数は、GetAttr関数と言う物があります。 これで、属性(システムファイル、読み取り専用ファイル等)を 調べることが出来ます。 No1の回答にもあります、FileSystemObjectを使えば、作成日付や、 アクセス日付も調べられます。 例えば・・・ではなく、具体的にどんな情報が欲しいのでしょうか? 補足して頂ければ、もっと具体的な回答が出ると思いますよ。

merlionXX
質問者

お礼

ありがとうございます。 エクセルファイルのイントラネットからのダウンロード日時を取得したいのです。ここでいろいろ質問して以下を試しました。 Sub test01() MsgBox "FileDateTime:" & FileDateTime(ThisWorkbook.FullName) End Sub Sub test02() MsgBox "作成者は:" & ActiveWorkbook.BuiltinDocumentProperties(3).Value _ & vbCrLf & "最終更新者は:" & ActiveWorkbook.BuiltinDocumentProperties(7).Value _ & vbCrLf & "作成日時は:" & ActiveWorkbook.BuiltinDocumentProperties(11).Value _ & vbCrLf & "更新日時は:" & ActiveWorkbook.BuiltinDocumentProperties(12).Value End Sub Sub test03() Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox "DL日時:" & FSO.GetFile(ThisWorkbook.FullName).DateCreated End Sub test03がたいていの場合、ただしくDL日時を返してくれるのですが、どういうわけか返さない場合もありましたので、常にDL日時を表示している(と思われる)「エクスプローラ上に表示されているデータ」という質問になったわけです。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

参考: FileSystemObjectの解説 http://officetanaka.net/excel/vba/filesystemobject/index.htm こちらが参考になるのでは?

merlionXX
質問者

お礼

有難うございます。勉強してみます。

関連するQ&A

  • エクスプローラの表示設定

    以前にWIN98カテゴリで同じような質問に答えましたが、WIN2Kではこのざまです。 詳細表示で名前タブや時間タブの幅を細かく設定しています。 それで、 フォルダオプション→現在のフォルダを適用 としても、一部のフォルダに設定が届きません。 届かないフォルダは、 別のドライブ:\*\* C:\Documents and Settings\*\* デスクトップ(をエクスプローラで開いたとき。"C:\WINDOWS\デスクトップ"や"C:\Documents and Settings\ユーザー\デスクトップ"ではなくて、エクスプローラのルート) などです。 なお、デスクトップはWIN98でも設定は届かないようです。 それぞれのフォルダの設定を保存するオプションなども効果がないようです。 なんか私はこんな質問ばっかしてます。

  • 統合マクロでパスの取得方法

    お世話になります。 集計ファイルでエリア・商品で集計をとっています。 一つのファイルにまとめたいのでエリアをシート名による串刺し 商品を統合を使って集計していますが 毎回統合ボタンを押すのが大変で マクロを使い下記のコードを使っていますがファイルのパスで固定されているので 人に渡すとファイル名の変更、ユーザーの違いによりエラーになってしまいます。 現在開いているファイルの名前とパスをマクロに取り込み統合させる事は可能でしょうか Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/9/29 ユーザー名 : user ' ' Sheets("一般A").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]××一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]●●一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]■■一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]▲▲一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]++一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]※※一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]%%一般A'!R6C2:R64C9"), _ Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False Sheets("一般B").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般B'!R6C2:R64C9", _ ・ ・ ・ ・ End Sub DIMとかActiveWorkbook.Pathとか組み込みましたが うまく行かないです。 どうぞ助けてください。

  • VBAでtxtを読み込みxlsで保存したい

    C:\Documents and Settings\All Users\デスクトップ\sample.txt は次のようなデータになっています。 A B C 1,234 567,890 23,333 1,234 567,890 23,333 このデータをVBAを使ってExcelに読み込み、C:\Documents and Settings\All Users\デスクトップ\sample.xls として保存にしたいのですが、どのようなコードを書けばよいものでしょうか? sub test() Dim fso, f, ts Dim sline As String Set fso = CreateObject("scripting.filesystemobject") Set f = fso.getfile("C:\Documents and Settings\All Users\デスクトップ\sample.txt") Set ts = f.openastextstream(1) Do While ts.atendofstream <> True sline = sline & ts.readline & vbCrLf Loop ts.Close ' MsgBox sline End Sub ここまでいったのですが、slineをexcelにだすことができません。 教えていただけると助かります・。

  • VBA フォルダ内にファイルが存在するか確認したい

    OS: WindowsXP Office: 2003 ExcelVBAについて教えてください。 VBAで特定のフォルダー内でファイルが存在するかの確認をしたいのです。 例えば、以下のようなフォルダーに営業日がファイル名に付いた複数のファイルがあります。  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120201.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120202.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120203.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120206.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120207.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120208.xls 処理は20120201(2012年2月1日)から順番に行うのですが、その際、 報告書20120203.xlsはファイルが存在しているので変数1を返す。 報告書20120204.xlsは休日のためファイルが存在しないので変数0を返す。 次の処理で変数1の場合は処理をし、変数0の場合は処理を飛ばすと言った内容のマクロを考えています。 要はフォルダー内にファイルが存在するかしないかの部分のマクロ記述を知りたいのです。 どなたか、よろしくお願いします。

  • エクスプローラ上の「デスクトップ」と言うフォルダについて

    エクスプローラを開き「Documents and Settings」→「Owner」の中に【デスクトップ】のフォルダがあります。 又、エクスプローラの最上段に【デスクトップ】と表示されたアイコンがあります。 これらを開いてみますと、中身も同一のようなのですがこの二つは同じものと考えてもよろしいのでしょうか。  

  • Appplication Data がエクスプローラで表示されないのは何故?

    通常、エクスプローラでC:\Documents and Settings → \<ユーザー名> の下に Application Data と言うフォルダが存在するはずですが、私のパソコンではApplication Dataのフォルダが存在しません。 何故でしょうか?

  • VBA 他のPCでも使いたい

    エクセルVBA初心者です。 Workbooks.Open Filename: についてですが 「C:\Documents and Settings\たぬき\デスクトップ\どんぐり.xls」 を開くプログラムは 「C:\Documents and Settings\きつね\デスクトップ\どんぐり.xls」 を開きません。 例えば どんぐりエクセルのセルA1にPC名を代入して、それを利用して ファイルを開く方法とか ファイルの場所をファイル名から返して開く方法があれば教えて下さい。 仕事柄必要となっております。 分かり易くよろしくお願い致します。

  • デスクトップに表示される画面の場所(パス)は?

    Windows XPのHOME何とかのマシンのことですが、 今までは、画面に表示されるアイコン等は C:\Documents and Settings\(ユーザー名)\デスクトップのフォルダにあるものが表示されていました。 しかし急にC:\Documents and Settings\(ユーザー名)\Desktopのフォルダの内容が表示されるようになってしまいました。そもそも何故、デスクトップフォルダとDesktopフォルダがあるのでしょうか? Desktopフォルダは使われていないようなので、実際に表示されるのは C:\Documents and Settings\All Users\デスクトップのフォルダしか表示されていません。 でも、(ユーザー名)\デスクトップのフォルダの内容は消えていないので、わざわざエクスプローラーを開かなければなりません。 例えば、デスクトップに保存してもデスクトップのフォルダに保存されるから、画面には出て来ません。元のように画面にデスクトップのフォルダの内容が表示されるようにするにはどうすればいいでしょうか? よろしくお願いいたします。

  • エクスプローラを、初期表示をデスクトップにして起動するには

    エクスプローラを起動するとき、初期表示するディレクトリを引数に指定できると思いますが、デスクトップを指定することは出来ないのでしょうか? 『C:\Documents and Settings\userid\デスクトップ』ではなく、フォルダ表示の最上位階層にある『デスクトップ』の方を指定したいのです。 よろしくおねがいします。

  • エクスプローラー上のデスクトップの内容が・・・

    『C:\Documents and Settings\ユーザー名\デスクトップ』内の内容が実際にデスクトップに表示されているものと異なるのですが・・・ 『C:\Documents and Settings\ユーザー名\デスクトップ』内の物を実際にデスクトップに表示させるように直す事は可能でしょうか? 思い当たる物としては、最初ユーザー名がひらがなだったために、正常にインストール出来ないソフトがあり、ユーザーアカウントでユーザー名を英文字に変えましたが、ユーザー名が変わっただけで、フォルダーのユーザー名はひらがなのままでしたので、他の管理者アカウントで強制的に英文字に変えたりしました。 しかし、不安になり元に戻してから元のアカウントに戻るといつもと違うデスクトップになっていました。 しくじったと思いつつも諦めて、どうせユーザープロファイルが初期に戻ってしまったなら新しく作った英文字のユーザーアカウントをメインにしようと、使用していましたが、何気に『C:\Documents and Settings\ユーザー名\デスクトップ』のフォルダを開いたらアレ?コレって前のデスクトップの内容じゃん?といった感じです。 『C:\Documents and Settings\ユーザー名\デスクトップ』を実際のデスクトップに関連付け直す事は出来ないでしょうか? アドバイス宜しくお願いします。

専門家に質問してみよう