ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] word vba ·j´MÀɮצWºÙµLªk°õ¦æ

±N¥H¤U¥N½X¦s¦¨¼Ò²Õ¡A¥Îªk½Ð¦Û¦æ´ú¸Õ¡I§Ú¤£ª¾¹D¾A¤£¾A¦X¡I

Option Explicit
Option Base 1

Public Àɮ׸ê°T°}¦C() As String

Public Sub ·j´MÀÉ®×(ByVal ¸ê®Æ§¨¸ô®| As String, ByVal ¿z¿ïÀɦW As String, ByVal ¥]§t¤l¸ê®Æ§¨ As Boolean, Optional ByVal ¤l¸ê®Æ§¨¶¥¼h¼Æ As Long = 255)

    On Error Resume Next
   
    Dim ¶¥¼h§Ç As Long
    Dim ¶¥¼h¼Æ As Long
    Dim ¥Ø«e¶¥¼h¸ê®Æ§¨§Ç As Long
    Dim ¥Ø«e¶¥¼h¸ê®Æ§¨¼Æ As Long
    Dim ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ As Long
    Dim ÀÉ®×¼Æ As Long
   
    Dim ¸ê®Æ§¨¸ô®|°}¦C() As String
    Dim ¸ê®Æ§¨¸ô®|°}¦C¼Æ As Long
    Dim Àɮ׸ê°T°}¦C¼Æ As Long
    Dim ¸ê®Æ§¨©ÎÀɦW As String
   
    Erase Àɮ׸ê°T°}¦C
   
    If ¥]§t¤l¸ê®Æ§¨ = True Then
        If ¤l¸ê®Æ§¨¶¥¼h¼Æ < 1 Then
            ¤l¸ê®Æ§¨¶¥¼h¼Æ = 1
        ElseIf ¤l¸ê®Æ§¨¶¥¼h¼Æ > 255 Then
            ¤l¸ê®Æ§¨¶¥¼h¼Æ = 255
        End If
        
        ¶¥¼h¼Æ = 1 + ¤l¸ê®Æ§¨¶¥¼h¼Æ
    Else
        ¶¥¼h¼Æ = 1
    End If
   
    ReDim ¸ê®Æ§¨¸ô®|°}¦C(¶¥¼h¼Æ, 1) As String
   
    ¸ê®Æ§¨¸ô®|°}¦C(1, 1) = ¸ê®Æ§¨¸ô®| '¸ê®Æ§¨¸ô®|¥²¶·¸g¹L­×¥¿¡Aµ²§À±a\
   
    ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ = 1
    ¸ê®Æ§¨¸ô®|°}¦C¼Æ = 1
    ÀÉ®×¼Æ = 0
    Àɮ׸ê°T°}¦C¼Æ = 0
    For ¶¥¼h§Ç = 1 To ¶¥¼h¼Æ
        If Not ¸ê®Æ§¨¸ô®|°}¦C(¶¥¼h§Ç, 1) = "" Then
            ¥Ø«e¶¥¼h¸ê®Æ§¨¼Æ = ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ
            ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ = 0
            For ¥Ø«e¶¥¼h¸ê®Æ§¨§Ç = 1 To ¥Ø«e¶¥¼h¸ê®Æ§¨¼Æ
                ¸ê®Æ§¨©ÎÀɦW = Dir(¸ê®Æ§¨¸ô®|°}¦C(¶¥¼h§Ç, ¥Ø«e¶¥¼h¸ê®Æ§¨§Ç) & "*", 31)
               
                Do Until ¸ê®Æ§¨©ÎÀɦW = ""
                    If Not ¸ê®Æ§¨©ÎÀɦW = "." And Not ¸ê®Æ§¨©ÎÀɦW = ".." Then
                        If (GetAttr(¸ê®Æ§¨¸ô®|°}¦C(¶¥¼h§Ç, ¥Ø«e¶¥¼h¸ê®Æ§¨§Ç) & ¸ê®Æ§¨©ÎÀɦW) And vbDirectory) = vbDirectory Then
                            If ¶¥¼h§Ç < ¶¥¼h¼Æ Then
                                ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ = ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ + 1
                                
                                If ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ > ¸ê®Æ§¨¸ô®|°}¦C¼Æ Then
                                    ¸ê®Æ§¨¸ô®|°}¦C¼Æ = ¸ê®Æ§¨¸ô®|°}¦C¼Æ + 99
                                    ReDim Preserve ¸ê®Æ§¨¸ô®|°}¦C(¶¥¼h¼Æ, ¸ê®Æ§¨¸ô®|°}¦C¼Æ) As String
                                End If
                                
                                ¸ê®Æ§¨¸ô®|°}¦C(¶¥¼h§Ç + 1, ¤U¤@¶¥¼h¸ê®Æ§¨¼Æ) = ¸ê®Æ§¨¸ô®|°}¦C(¶¥¼h§Ç, ¥Ø«e¶¥¼h¸ê®Æ§¨§Ç) & ¸ê®Æ§¨©ÎÀɦW & "\"
                            End If
                        Else
                            If ¸ê®Æ§¨©ÎÀɦW Like ¿z¿ïÀɦW Then
                                ÀÉ®×¼Æ = ÀÉ®×¼Æ + 1
                                
                                If ÀÉ®×¼Æ > Àɮ׸ê°T°}¦C¼Æ Then
                                    Àɮ׸ê°T°}¦C¼Æ = Àɮ׸ê°T°}¦C¼Æ + 999
                                    ReDim Preserve Àɮ׸ê°T°}¦C(1, Àɮ׸ê°T°}¦C¼Æ) As String
                                End If
                                
                                Àɮ׸ê°T°}¦C(1, ÀÉ®×¼Æ) = ¸ê®Æ§¨©ÎÀɦW
                            End If
                        End If
                    End If
                    
                    ¸ê®Æ§¨©ÎÀɦW = Dir
                Loop
            Next ¥Ø«e¶¥¼h¸ê®Æ§¨§Ç
        Else
            Exit For
        End If
    Next ¶¥¼h§Ç
   
    ReDim Preserve Àɮ׸ê°T°}¦C(1, ÀÉ®×¼Æ) As String

End Sub

TOP

        ÀR«ä¦Û¦b : ¥¬¬I¦p¼½ºØ¡A¥HÅw³ß¤ß´þ¼íºØ¤l¡A¤~·|µoªÞ¡C
ªð¦^¦Cªí ¤W¤@¥DÃD