Скопировать файл с подтверждением замены файла в обходной строке - PullRequest
0 голосов
/ 30 мая 2019

Это продолжение этого вопроса и отличный ответ:

Копирование файлов с индикатором выполнения

Итак, я добавил код из ответа Сиддхарта Раута, и он делает именно то, что я хочу, за небольшим исключением. Когда я копирую файлы, я перебираю каждый файл в каталоге и копирую его, пока он не является * List.xml. Поскольку я заменяю существующую библиотеку, 97% документов уже существуют, и мне каждый раз предлагается заменить существующие документы.

Есть ли способ заставить его выбрать замену для всех файлов? Нужно ли переформатировать / структурировать последовательность моего кода?

Function UploadToSharepoint(Folderpath As String, Foldername As String, Filenames() As String, SharepointLinks() As String) As Boolean

    'upload file to sharepoint library based on the folder name
    Dim SharePointLib As String
    Dim LocalAddress As String
    Dim DestinationAddress As String
    Dim xCounter As Long

    On Error GoTo loadFailed

Pickafolder:

    Folderpath = FolderPick

    Foldername = Left(Folderpath, Len(Folderpath) - 1)
    Foldername = RIght(Foldername, Len(Foldername) - InStrRev(Foldername, "\"))

    Select Case Foldername
        Case "OPSS", "SSP", "OPSD", "MTOD", "SSD"

            SharePointLib = "\\my.company.com\Subsite\" & Foldername & "\"

        Case "West", "Eastern", "Northeastern", "Northwestern", "Head Office"

            SharePointLib = "\\my.company.com\Subsite\NSP\" & Foldername & "\"

        Case "NSP", "NSSP"

            MsgBox "Pick the NSP regional sub folder:  West, Eastern, Northeastern, Northwestern, Head Office"
            GoTo Pickafolder

        Case Else

            MsgBox "Inappropriate directory to upload from. Please select one of the CPS download directories"
            GoTo Pickafolder

     End Select

    Filenames = GetFilesDir(Folderpath)
    ReDim SharepointLinks(LBound(Filenames) To UBound(Filenames))

    For xCounter = LBound(Filenames) To UBound(Filenames)

        LocalAddress = Folderpath & Filenames(xCounter)
        DestinationAddress = SharePointLib & Filenames(xCounter)
'**********************************************************    
        Call VBCopyFolder(LocalAddress, DestinationAddress)
'**********************************************************        
        SharepointLinks(xCounter) = "#http:" & Replace(DestinationAddress, "\", "/") & "#"

    Next xCounter

    UploadToSharepoint = True

    Exit Function

loadFailed:
    UploadToSharepoint = False

End Function

И, судя по всему, я не исключаю файл, на который я ссылался ранее ... должен делать это где-то еще.

Обновление

На основе комментариев, полученных по связанному вопросу, решение состоит в том, чтобы объявить открытую константу в начале:

Public Const FOF_NOCONFIRMATION As Long = &H10

и затем в процедуре копирования измените строку кода на:

.fFlags = FOF_SIMPLEPROGRESS Or FOF_NOCONFIRMATION

Теперь это решает проблему постоянного запроса на подтверждение замены. Я очень рад этому. Проблема теперь в том, что в окне прогресса отображается первый файл, который нужно скопировать, затем он исчезает, но не появляется снова для последующих файлов. Остальные файлы по-прежнему копируются, и prg продолжает, как и положено. Однако весь смысл индикатора прогресса заключается в том, чтобы люди знали, что «ВЕЩИ» все еще происходят в фоновом режиме, а теперь этого не происходит. Что-то мне нужно отрегулировать?

Обновление 2

После запуска моего кода и выбора исходного каталога на сетевом диске вместо локального компьютера появляется окно копирования для каждого отдельного файла, как я и ожидал. Я замечаю, что иногда индикатор выполнения закрывается до достижения 100%. Это наводит меня на мысль, что, поскольку размеры файлов настолько малы, что при копировании с моего локального диска на sharepoint операция завершается настолько быстро, что у нее нет времени рисовать и обновлять окно прогресса до того, как оно закроется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...