3

У меня есть файл Excel, который нужно обновлять и сохранять автоматически, без необходимости открывать его или взаимодействовать вручную. Вручную я открываю файл и нажимаю обновление данных, которое выполняет и выполняет SQL-запрос, а затем нажимаю клавишу F9, чтобы обновить формулы, а затем просто закрываю / сохраняю.

(Затем я отправляю файл людям, использующим Perl-скрипт или использую SAS JMP для запуска некоторых чисел / диаграмм, а также для их отправки по почте. В основном мне нужно написать некоторые вещи, которые требуют обновления файла XLS.)

3 ответа3

3

Мой обходной путь - записать макрос в файле Excel (поэтому вам нужно использовать расширение файла .xlsm) (сначала вам нужно будет перейти в «Программы»> «Windows Powershell» и ввести в командной строке Set-ExecutionPolicy RemoteSigned чтобы разрешить запуск сценария) :

Sub AutoUpdate()
'
' AutoUpdate Macro
' data refresh from MSQuery connection

'
    Sheets("Feuill1").Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub

Затем я использую скрипт Powershell, который делает свое дело: открывает файл Excel, вызывает макрос, сохраняет и закрывает файл. В этом примере я делаю копию исходного файла в целях безопасности / резервного копирования, но, конечно, вы можете сохранить сам исходный файл.

$objectExcel = new-object -c excel.application
$objectExcel.displayAlerts = $false # don't prompt the user
#$objectExcel.visible = $True;
$Classeur = $objectExcel.workbooks.open("source_filepath", $null, $true)
$objectExcel.run("AutoUpdate")
# $objectExcel.run("RemoveODBC") # another custom macro for removing data connexion
$Classeur.saveas("destination_filepath")
$Classeur.close($false)
#$objectExcel.visible = $False;
$objectExcel.quit()
spps -n excel

Поэтому мой отчет Excel обновляется ежедневно, без какого-либо ручного вмешательства, с помощью задачи Windows Planified, которая вызвала вышеуказанный сценарий.

2

В итоге я нашел Win32::Excel::Refresh и он отвечает всем требованиям. Это мод Perl, но он также поставляется с исполняемым файлом Windows, который можно запустить, если вы не знаете / не хотите иметь дело с Perl.

1

Вы можете манипулировать файлами Excel с помощью AutoIt, здесь есть библиотека для этого. Возможно, вы даже сможете использовать AutoIt для автоматизации SQL-запроса и передачи данных в файл Excel (в зависимости от используемого вами механизма базы данных). AutoIt может даже сделать электронную почту также.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .