2013-12-04 26 views
0

Итак, у меня есть весь код VBA, и это кажется правильным, но это просто не освежает книги. Единственное, что я могу придумать, это когда я открываю листы, которые мне нужно разрешить, так что мне нужно добавить что-то в свой код?Обновление соединений данных в Excel 2010 VBA

Edit: Я бегу это через VBScript

Public wb As Workbook 

Sub executeUpdate() 
    `some code 
    openBook path & testArray(i) & ext, True 
    saveBookAs path & testArray(i) 
End Sub 

Sub openBook(ByVal fileName As String, ByVal refresh As Boolean) 

    Set wb = Workbooks.Open(fileName, 0, False) 

    If refresh = True Then 
     wb.RefreshAll 
    End If 
End Sub 

Sub saveBookAs(ByVal fName As String) 
    wb.SaveAs fileName:=fName & "_posReport.xlsx" 
End Sub 
+0

Вы пытались открыть книгу вручную, включить редактирование, а затем запустить код «RefreshAll», чтобы проверить, работает ли он вообще? – Michael

+0

Ну, что я сделал, была открыта рабочая тетрадь, прежде чем включить редактирование, я начал запись макроса и прошел все шаги по обновлению таблицы. Посмотрел на код, и все, что он сказал, было «ActiveWorkbook.RefreshAll' – Adjit

+0

Хорошо, я понял, как вы записали код. Но чтобы проверить, работает ли 'RefreshAll' вообще, я предлагаю вам вручную открыть книгу, включить редактирование и запустить« RefreshAll ». – Michael

ответ

0

Я нашел этот код над here:

If Application.ProtectedViewWindows.Count > 0 Then 
    Application.ActiveProtectedViewWindow.Edit 
End If 

Не проверял, но, возможно, он работает для вас.

- Цитата:

код будет обходить необходимость для пользователя, чтобы выбрать кнопку «Включить редактирование» на панели сообщений ниже ленты. Еще одно примечание [...] код будет ошибочным, если книга не находится в «ProtectedView». Поэтому, чтобы избежать этого, следующий код будет разрешать редактирование только в том случае, если в рабочей книге включен «Защищенный вид».

+0

oooh, выглядит многообещающим. Знаете ли вы, нужно ли мне это делать каждый раз, когда я открываю новую книгу? потому что у меня есть цикл, который проходит через код, чтобы открывать и обновлять книги один за другим. – Adjit

+0

Думаю, вам нужно будет разрешить редактирование для каждой книги. Затем строка будет добавлена ​​в вашу процедуру * openBook *. – Michael

+0

Нет кубиков ... это экономит книгу так, как я ее хочу, но когда я ее открываю, и я вручную удаляю обновление новых данных (со вчерашнего дня) ... – Adjit

Смежные вопросы