Mam kilka ponad 20 MB plików Excel i muszą być odświeżane co tydzień przed rozpoczęciem działalności (poniedziałek 8 rano).
Te pliki zawierają jedną kartę danych, a dane pochodzą z połączenia zewnętrznego (plik ODC) z widoku serwera SQL.
Mają również jeden arkusz przestawny, który należy odświeżyć również po odświeżeniu arkusza danych.
Próbuję znaleźć rozwiązanie (Windows PowerShell), aby zautomatyzować odświeżanie danych i arkuszy przestawnych bez konieczności dotykania plików. "Odświeżanie przy otwieraniu" i inne opcje programu Excel nie są możliwe, ponieważ odświeżenie wszystkich połączeń zajmuje nawet 20 minut.
Nie chcę również odświeżać WSZYSTKICH arkuszy, ponieważ plik ma niestandardowe kolory dla wykresów, a "Odśwież" resetuje go do domyślnego programu Excel, co nie może się zdarzyć.
Automatyczne odświeżanie połączeń i osi ODC programu Excel bez otwierania pliku PowerShell
Próbowałem tego, ale wygląda na to, że nie działa z połączeniem ODC?
$ExcelApp = new-object -ComObject Excel.Application
$ExcelApp.Visible = $false
$ExcelApp.DisplayAlerts = $false
$Workbook = $ExcelApp.Workbooks.Open("c:\test\ref_test.xlsx", 3, $false, 5, $null, $null, $true)
Start-Sleep -s 30
$Workbook.RefreshAll()
$Workbook|Get-Member *Save*
$Workbook.Save()
$ExcelApp.Quit()
pomysłów: co najmniej, to nic nie .:
Windows PowerShell zrobić?
wersja pakietu Office: 2010, Windows 7
nie wiem co wersja Office masz ale może 'BackroundRefresh' jest wyłączony dla tego połączenia. Zajrzyj [tutaj] (http://office.microsoft.com/en-ca/excel-help/refresh-anternal-data-connection-HA102840049.aspx#_Run_a_query), jak to ustawić. Metoda '.RefreshAll' odświeża się tylko wtedy, gdy" Właściwość BackgroundQuery ma wartość True "zgodnie z [MSDN] (http://msdn.microsoft.com/en-us/library/office/ff838648 (v = office.15) .aspx) – Matt
Cześć Matt, odświeżanie w tle wciąż odświeża się za każdym razem, gdy użytkownik otworzy plik i będzie musiał poczekać ponad 20 minut, aby uzyskać nowe dane. Korzystam z programu Excel 2010 na Win7. Zaktualizowano oryginalne pytanie z tymi informacjami, dzięki za wskazanie. – KathyBlue
Chciałbym skonfigurować zadanie cron przy użyciu Harmonogramu zadań systemu Windows, aby uruchomić plik .bat w każdy poniedziałek rano. W pliku .bat przekazałbym identyfikator argumentu mówiąc "hej, uruchamiam z zadania cron", następnie w funkcji ThisWorkbook Workbooks.Open, chciałbym sprawdzić argument i uruchomić wymagane odświeżenie i zamknąć w razie potrzeby przeprowadź księgowanie. Poniższy link (z maszyny powrotnej) mówi o otwieraniu Excela przy użyciu CLI i przekazywaniu argumentu http://www.mrexcel.com/archive/VBA/15657.html – Michael