Я создал макрос, который должен обновлять все источники данных. Источниками данных являются серверы sql, и по мере необходимости автоматически подтягивает окно пароля. Если вы уже вводили пароль на сервер с момента последнего открытия Excel, он не запрашивает пароль.Обновление книги и сохранение с помощью VBA
мне удалось получить следующий фрагмент кода вместе, но это не ведет себя, как я ожидал бы
Sub BSR_Refresher()
'Refreshes the spreadsheet and copies it with today's date
'Clears all filters
On Error Resume Next
ActiveWorkbook.ShowAllData
'Refreshes Spreadsheet
For Each objConnection In ThisWorkbook.Connections
'Get current background-refresh value
bBackground = objConnection.OLEDBConnection.BackgroundQuery
'Temporarily disable background-refresh
objConnection.OLEDBConnection.BackgroundQuery = False
'Refresh this connection
objConnection.Refresh
'Set background-refresh value back to original value
objConnection.OLEDBConnection.BackgroundQuery = bBackground
Next
'Saves Spreadsheet
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\\Company.local\AnyDrive\Company\Projects\Project001\Reporting\Report Updates" & Format(Date, ddmmyyyy) & ".xls"
End Sub
Из моего знания VBA этого необходимо сделать следующее:
1) Очистить все фильтры из таблиц
2) запустить обновление данных (списаны из Here)
3) Сохранить в \\Company.local\AnyDrive\Company\Projects\Project001\Reporting\Report Updates
(подделка имена, фактическая структура) с именем файла как FileName
08/07/2015 (где FileName
- текущее имя файла)
Любые подсказки относительно того, почему это так?
EDIT:
Согласно комментариям, его не сохранения документов, как я требую.
==================
Я изменил код, и это до сих пор не работает. Я перемещал ситуацию, поскольку цикл приводил к повторному удалению одного из листов из-за добавления шага «удалить лист».
Sub BSR_Refresher()
'Refreshes the spreadsheet and copies it with today's date
' Gets name to save new workbook as
Dim StrSaveName As String
Dim StrFolderPath As String
StrSaveName = "Report" & Format(Date, ddmmyyyy) & ".xlsx"
StrFolderPath = "\\Company.local\anyDrive\Company\Projects\Project-001\Reporting\Status Report Updates\"
StrSaveAs = StrFolderPath & StrSaveName
'Deletes Sheet1, Clears all filters
Application.DisplayAlerts = False
Sheets("Sheet1").Select
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
'Refreshes Spreadsheet
On Error Resume Next
ActiveWorkbook.ShowAllData
For Each objConnection In ThisWorkbook.Connections
'Get current background-refresh value
bBackground = objConnection.OLEDBConnection.BackgroundQuery
'Temporarily disable background-refresh
objConnection.OLEDBConnection.BackgroundQuery = False
'Refresh this connection
objConnection.Refresh
'Set background-refresh value back to original value
objConnection.OLEDBConnection.BackgroundQuery = bBackground
Next
'Saves Spreadsheet
ActiveWorkbook.SaveAs Filename:=StrSaveAs
End Sub
Моя проблема заключается в том, что он, кажется, не экономить, где оно должно быть: S
Почему именно? Что происходит не так, как ожидалось? – eirikdaude
Вы упомянули, что он должен делать, но не то, что ему не удалось. Мне лично нравится переключать все свойства «Backgroundquery» на «False», а затем запускать метод «RefreshAll». Я хочу, чтобы мои таблицы также задавались в запросах. – user3819867
'ActiveWorkbook.SaveAs Имя файла: = ActiveWorkbook.Path &" \\ Company.local \ AnyDrive \ Company \ Projects \ Project001 \ Отчетность \ Отчетные обновления "& Формат (Date, ddmmyyyy) &" .xls "' 'ActiveWorkbook. «Путь» вернет путь к файлам книг, а затем добавит еще один путь к файлу? Таким образом, похоже, что он будет отлаживать этот шаг. –