重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

EXCEL VBA初心者です。
「Excelでファイル階層表作成」(http://www.vector.co.jp/soft/winnt/util/se499921 …)というフリーソフトで指定フォルダの階層を取得していていましたが、さらに最終更新日時の行も作成したいです。
色々試してはみたのですが、エラーばかりで…。
申し訳ございませんが、お知恵をお貸し頂けたらと思います。

会社で使用したく、セキュリティ上レジストリに書き込んだりするexeのインストールはできず、なんとかこのEXCELに追加したいのです。

できましたら、サイズを表示する列の右隣に表示させたいです。
コードを記載したいのですが、文字数とそもそも記載して良いのか不明のため、大変申し訳ございませんが、教えて頂けたらと思います。

どうぞよろしくお願いいたします。

A 回答 (1件)

以下の5か所に追加・変更してみてください。


「**追加**」とコメントしてある部分です。


'---- 結果表の列位置
Private Enum ColumnPosEnum
  ObjectName = 0 '名称(フォルダまたはファイルの)
  FullPath = 1 'フルパス
  ObjectTypeName = 2 '形式(フォルダ/ファイル)
  TotalSize = 3 'サイズ (フォルダは内容のサイズ)
'
  LastModified = 4 ' **追加**(以降の数字を+1すること)
'
  CountOfFolder = 5 '下位フォルダ(サブフォルダ含む)の個数。
  CountOfFile = 6 '下位ファイル(サブフォルダ内を含む)の個数。
  HierarchyLevel = 7 '開始フォルダを0とした階層レベル
  HierarchyInfo = 8 '階層形式の表示
End Enum


-----
  '列見出し
  csListBaseCell.Offset(-1, ColumnPosEnum.ObjectName).Value = "名称"
  csListBaseCell.Offset(-1, ColumnPosEnum.FullPath).Value = "フルパス"
  csListBaseCell.Offset(-1, ColumnPosEnum.ObjectTypeName).Value = "形式"
  csListBaseCell.Offset(-1, ColumnPosEnum.TotalSize).Value = "サイズ"
'
  csListBaseCell.Offset(-1, ColumnPosEnum.LastModified).Value = "最終更新日時" ' **追加**
'
  csListBaseCell.Offset(-1, ColumnPosEnum.CountOfFolder).Value = "フォルダ数"
  csListBaseCell.Offset(-1, ColumnPosEnum.CountOfFile).Value = "ファイル数"
  csListBaseCell.Offset(-1, ColumnPosEnum.HierarchyLevel).Value = "階層番号"


-----
  '(*) ファイルのとき、個数欄は空のセルにする
  '(*) フォルダのとき、全個数集計時 … 後で集計値を上書きするので仮に0をセルに記入
  '(*) フォルダのとき、直下個数のみ表示 … 直下個数を表示、サイズは省略
  Select Case pObjectTypeName
    Case csObjectTypeName_Folder
      Set wDir = pObject
      If mIsFullScan Then
        csListBaseCell.Offset(Y, ColumnPosEnum.TotalSize).Value = 0
        csListBaseCell.Offset(Y, ColumnPosEnum.CountOfFolder).Value = 0
        csListBaseCell.Offset(Y, ColumnPosEnum.CountOfFile).Value = 0
'
        csListBaseCell.Offset(Y, ColumnPosEnum.LastModified).Value = 0 ' **追加**
'
      Else
        csListBaseCell.Offset(Y, ColumnPosEnum.TotalSize).Value = ""
        csListBaseCell.Offset(Y, ColumnPosEnum.CountOfFolder).Value = wDir.SubFolders.Count
        csListBaseCell.Offset(Y, ColumnPosEnum.CountOfFile).Value = wDir.Files.Count
'
        csListBaseCell.Offset(Y, ColumnPosEnum.LastModified).Value = wDir.DateLastModified ' **追加**
'

   End If

    Case csObjectTypeName_File
      Set wFile = pObject
      csListBaseCell.Offset(Y, ColumnPosEnum.TotalSize).Value = wFile.Size
'
      csListBaseCell.Offset(Y, ColumnPosEnum.LastModified).Value = wFile.DateLastModified' **追加**
'
      csListBaseCell.Offset(Y, ColumnPosEnum.CountOfFolder).Value = ""
      csListBaseCell.Offset(Y, ColumnPosEnum.CountOfFile).Value = ""

  End Select
    • good
    • 0
この回答へのお礼

思った通りの表示になりました!!!
丸投げしてしまったにも係わらず、教えて頂きありがとうございました。

お礼日時:2016/08/13 20:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!