Загрузка данных


Sub MinimalParseNetworkManual()
    Dim wd As Object, doc As Object
    Dim sh As Worksheet
    Dim networkPath As String, f As String
    Dim r As Long
    Dim driveLetter As String
    Dim fd As Object
    
    ' ===== ВЫБОР ПАПКИ =====
    Set fd = CreateObject("Shell.Application").BrowseForFolder(0, "Выберите папку на \\mipcnet.org\vdi", 0, 0)
    If fd Is Nothing Then Exit Sub
    networkPath = fd.Items.Item.path & "\"
    
    ' Проверяем что путь начинается с \\mipcnet.org
    If Left(networkPath, 14) <> "\\mipcnet.org\" Then
        MsgBox "Выберите папку на \\mipcnet.org\vdi", vbCritical
        Exit Sub
    End If
    
    driveLetter = "Z:"
    
    ' ===== ПОДКЛЮЧАЕМ =====
    On Error Resume Next
    Shell "net use " & driveLetter & " /delete /yes", 0
    On Error GoTo 0
    
    Shell "net use " & driveLetter & " """ & networkPath & """ /persistent:no", 0
    Application.Wait (Now + TimeValue("0:00:03"))
    
    If Dir(driveLetter & "\", vbDirectory) = "" Then
        MsgBox "Не удалось подключить " & driveLetter, vbCritical
        Exit Sub
    End If
    
    ' ===== РАБОТА =====
    Set sh = ThisWorkbook.Sheets(1)
    sh.Cells.Clear
    r = 2
    
    Set wd = CreateObject("Word.Application")
    wd.Visible = False
    
    f = Dir(driveLetter & "\*.doc*")
    
    If f = "" Then
        MsgBox "Нет Word файлов!", vbCritical
        Shell "net use " & driveLetter & " /delete /yes", 0
        Exit Sub
    End If
    
    Do While f <> "" And r <= 51
        On Error Resume Next
        Set doc = wd.Documents.Open(driveLetter & "\" & f)
        
        If Err.Number = 0 Then
            sh.Cells(r, 1) = f
            sh.Cells(r, 2) = Left(doc.Range.Text, 500)
            sh.Cells(r, 3) = doc.Tables.Count
            doc.Close False
            r = r + 1
        Else
            sh.Cells(r, 1) = f
            sh.Cells(r, 2) = "Ошибка: " & Err.Description
            r = r + 1
        End If
        
        f = Dir()
    Loop
    
    Shell "net use " & driveLetter & " /delete /yes", 0
    wd.Quit False
    
    MsgBox "Готово! Обработано " & r - 2 & " файлов", vbInformation
End Sub