2014-09-29 5 views
7

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

+0

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

+0

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

+0

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

Odpowiedz

1

Prawdopodobnie odpowiedź na this question może pomóc. Skrypt perla jest również dostępny jako skompilowany plik exe.

+0

Tak, chciałbym mieć SSIS !!! Ułatwi to życie! – KathyBlue

-1

Podejdę do tego problemu, używając Excel VBA, i utworzę plik Excel do pliku .xlsm.

Następnie zaktualizuj polecenia w pliku Excel VBA i funkcje, aby odświeżyć swoje połączenie odbc, a następnie zapisz jako nowy plik do dystrybucji.

http://www.vbforums.com/showthread.php?675977-Auto-Open-Refresh-Pivots-Save-Close-Excel-files-using-VB

+1

Ta odpowiedź powinna zostać rozszerzona, ponieważ nie jest jasne, w jaki sposób odpowiedzieć na wymóg OP odświeżenia danych bez otwierania plików. – Beniaminus

Powiązane problemy