Страницы: 1
RSS
Автоматическое обновление связей / данных, файлов хронимых на sharepoint, vba, macro
 
Доброго дня,
Подскажиет пожалуйста. Как обновить связи без всплывающенго сообщения?
Что делаю не так?
Спасибо.
Код
Sub test_2()
Dim sFile As String
Dim wb As Workbook
Dim FileName As String
Dim wksSource As Worksheet

    Const scWkbSourceName As String = "test"
    Const sPath As String = "test"
    
    Set wkbSource = Workbooks(scWkbSourceName)
    Set wksSource = wkbSource.Sheets("Setup")

    SourceRow = 6 'start from this row
            Do While Cells(SourceRow, "B").Value <> ""
                FileName = wksSource.Range("B" & SourceRow).Value
                    sFile = sPath & FileName
                    Set wb = Workbooks.Open(sFile)
                        wb.LockServerFile
                        wb.Activate
                        wb.UpdateLink Name:=ActiveWorkbook.LinkSources 'тут появляется сообщение
                        wb.Save
                        wb.Close
    SourceRow = SourceRow + 1
            Loop
End Sub
Изменено: Alex D - 21.01.2020 15:32:18
 
Цитата
Alex D написал:

Application.DisplayAlerts = True
Application.ScreenUpdating = True
перенесите после Loop
Я не волшебник, я только учусь.
 
Цитата
Wiss написал:
перенесите после Loop
Вообще убрал
 
Application.DisplayAlerts = false в начале кода отключало диалоговые окна.
Application.DisplayAlerts = true в конце возвращало поведение программы к нормальному состоянию.
Проблема была в том, что диалоговые окна возвращались после закрытия первого файла в списке, а не после обработки всех файлов. Вы убрали оба Application.DisplayAlerts. В теории код, теперь должен выдавать на одно диалоговое окно больше, чем до правок (по крайней мере, после переоткрытия экселя).
Изменено: Wiss - 21.01.2020 15:53:49
Я не волшебник, я только учусь.
 
Убрал  Application.DisplayAlerts = false , Application.DisplayAlerts = false из кода. Сообщение все равно появляется.
Перенес после Loop - не помогло

Спасибо что направели... вот как выкрутился...
Код
Sub test_2()
Dim sFile As String
Dim wb As Workbook
Dim FileName As String
Dim wksSource As Worksheet

Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False

    Const scWkbSourceName As String = "Ваше имя файла"
    Const sPath As String = "Пусть к вашему файлу"
    
    Set wkbSource = Workbooks(scWkbSourceName)
    Set wksSource = wkbSource.Sheets("Имя листа где список файлов для обновления")
    SourceRow = 6
            Do While Cells(SourceRow, "B").Value <> ""
                FileName = wksSource.Range("B" & SourceRow).Value
                    sFile = sPath & FileName
                    Set wb = Workbooks.Open(sFile)
                        wb.LockServerFile
                        wb.Activate
                        wb.UpdateLink Name:=ActiveWorkbook.LinkSources
                        wb.Save 'save workbook
                        wb.Close 'close workbook
    SourceRow = SourceRow + 1 ' Move down 1 row for source sheet
            Loop
        
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
End Sub
Изменено: Alex D - 21.01.2020 16:16:05
 
Рад, что всё получилось.
P.S. ScreenUpdating в начале забыли.
Изменено: Wiss - 21.01.2020 16:17:27
Я не волшебник, я только учусь.
 
Цитата
Wiss написал:
Верните Application.DisplayAlerts = false
Спасибо большое
Страницы: 1
Наверх