2014-09-29 14 views
7

Ich habe mehrere 20 MB Excel-Dateien, und sie müssen jede Woche vor Geschäftsbeginn (Montag 8 Uhr) aktualisiert werden.
Diese Dateien enthalten ein Datenblatt und die Daten werden über eine externe Verbindung (ODC-Datei) von einer SQL Server-Ansicht abgerufen.
Sie haben auch ein Pivot-Blatt, das auch aktualisiert werden muss, nachdem das Datenblatt aktualisiert wurde.

Ich versuche eine Lösung (Windows PowerShell) zu finden, um die Aktualisierung von Daten- und Pivot-Blättern zu automatisieren, ohne die Dateien zu berühren. "Aktualisieren beim Öffnen" und andere Excel-Optionen sind nicht praktikabel, da es bis zu 20 Minuten dauert, alle Verbindungen zu aktualisieren.

Ich möchte auch nicht alle Blätter aktualisieren, da die Datei benutzerdefinierte Färbung für Diagramme hat und "Aktualisieren" setzt es auf Excel-Standard, die nicht passieren kann.
Excel ODC-Verbindungen und Pivots automatisch aktualisieren, ohne die Datei PowerShell zu öffnen

Ich habe das versucht, aber es scheint nicht mit ODC-Verbindung zu arbeiten? Zumindest macht es nichts .:

Windows Powershell:

$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() 

Irgendwelche Ideen?

Office-Version: 2010, auf Windows 7

+0

Dont wissen, welche Version von Office Sie haben aber vielleicht 'BackroundRefresh' ist für diese Verbindung aus. Schauen Sie sich [hier] (http://office.microsoft.com/en-ca/excel-help/refresh-an-external-data-connection-HA102840049.aspx#_Run_a_query) an, wie Sie es einrichten können. Die Methode '.RefreshAll' wird nur aktualisiert, wenn die Eigenschaft 'BackgroundQuery' auf 'True' gesetzt ist, wie in [MSDN] (http://msdn.microsoft.com/en-us/library/office/ff838648 (v = office.15) .aspx) beschrieben) – Matt

+0

Hallo Matt, aktualisiert Hintergrund aktualisiert jedes Mal, wenn ein Benutzer die Datei öffnet und muss mehr als 20 Minuten warten, um neue Daten zu erhalten. Ich verwende Excel 2010 auf Win7. Aktualisierte die ursprüngliche Frage mit dieser Info, danke für das Hervorheben. – KathyBlue

+0

Ich würde einen Cron-Job mit dem Windows-Taskplaner einrichten, um eine .bat-Datei jeden Montagmorgen auszuführen. In der .bat-Datei würde ich eine Argument-ID übergeben, die sagt "Hey, ich laufe von einem Cron-Job", dann würde ich in der ThisWorkbook Workbooks.Open-Funktion nach dem Argument suchen und die erforderliche Aktualisierung ausführen und die Datei schließen Excel Buch wie nötig. Der folgende Link (von der Weg zurück Maschine) spricht über das Öffnen von Excel mit CLI und die Weitergabe eines Arguments http://www.mrexcel.com/archive/VBA/15657.html – Michael

Antwort

1

Möglicherweise ist die Antwort auf this question kann helfen. Das Perl-Skript ist auch als vorkompilierte EXE-Datei verfügbar.

+0

Ja, ich wünschte, ich hätte SSIS !!! Es würde das Leben leichter machen! – KathyBlue

-1

Ich würde dieses Problem umgehen, indem Sie Excel VBA verwenden und Ihre Excel-Datei in ein .xlsm erstellen.

Dann aktualisieren Sie die Datei mit Excel VBA-Befehle und Funktionen, um Ihre ODBC-Verbindung zu aktualisieren, und speichern Sie dann als neue Datei für die Verteilung.

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

+1

Diese Antwort sollte erweitert werden, da nicht klar ist, wie Sie die Anforderung des OP beantworten, die Daten zu aktualisieren, ohne die Dateien zu öffnen. – Beniaminus

Verwandte Themen