脳内がNotes/Domino系からASP.NETに移行しつつあるIT系情報ブログなつもり。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Public kaikicnt As Integer
Private Sub CommandButton1_Click()
Dim objApl
Dim objFolder
Dim ActFlag
'カウンタ変数(フォルダの階層数)の初期化
kaikicnt = 0
'カーソルをA6に置く
Range("A6").Activate
'アクティブセルに値がはいっている場合
If ActiveCell.Value <> "" Then
'実行するかを確認
ActFlag = MsgBox("データを更新してよろしいですか?", vbYesNo + vbQuestion, "フォルダ書き出し")
If ActFlag = 7 Then
'「いいえ」を押された場合
Exit Sub '処理終了
Else
'「はい」を押された場合
'今のデータを全て消す。
Rows("6:65536").Delete Shift:=xlUp
'カーソルをA6に置く
Range("A6").Activate
End If
End If
'ファイル操作を行うクラスをインスタンス化
Set objFS = CreateObject("Scripting.FileSystemObject")
'D1に入力されたフォルダ名(フルパス)を変数へ
Set objFolder = objFS.GetFolder(Range("D1").Value)
Call prcFolderCHK(objFolder) 'サブルーチン呼び出し
'更新日をセット
Range("D4").Value = Now
MsgBox "書き出し完了。"
End Sub
Sub prcFolderCHK(objFolderA)
Dim motokaiki As Integer
Dim levelcnt As Integer
'カウンタ変数から値を受け取る(元のカウントと比較のため)
motokaiki = kaikicnt
'現在のアクティブセルのアドレスを取得
startadr = ActiveCell.Offset(0, 0).Address
'書き出し階層数を取得
levelcnt = Range("D2").Value
'変数として受け取ったフルパスのサブフォルダ全てをFor文で処理
For Each subf In objFolderA.SubFolders
'あるサブフォルダの名前を取得・・・①
valFolderName = subf.Name
'現在のセルに①で取得したサブフォルダ名をセット
ActiveCell.Value = valFolderName
'一行下のセルをアクティブに
ActiveCell.Offset(1, 0).Activate
'①のサブフォルダ内のサブフォルダ(集合)を取得・・・②
Set colFolders = subf.SubFolders
'②で取得したサブフォルダ数を取得
intFolderCnt = colFolders.Count
'③のサブフォルダ数が0より多い場合(①内にサブフォルダが存在する場合)
If intFolderCnt > 0 Then
'カウンタ変数をインクリメント
kaikicnt = kaikicnt + 1
'一列右のセルをアクティブに
ActiveCell.Offset(0, 1).Activate
'書き出し階層数が0(無限)かカウンタ変数が書き出し階層数-1を越えてない場合のみ
'①のフォルダを元に再呼び出し
If levelcnt - 1 >= kaikicnt Or levelcnt = 0 Then
Call prcFolderCHK(subf)
End If
End If
'このサブルーチンが呼びだされた時よりカウンタ変数が上がっている場合
'(呼び出し時より一列右に移動している場合)
If kaikicnt > motokaiki Then
'一列左に戻す
ActiveCell.Offset(0, -1).Activate
'カウンタ変数をデクリメント
kaikicnt = kaikicnt - 1
End If
Next
End Sub
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
COMMENT