2014-09-29 7 views
7

Birkaç 20+ MB Excel dosyasına sahibim ve iş başlamadan önce her hafta yenilenmeleri gerekiyor (Pazartesi 8:00).
Bu dosyalar bir Veri sayfası içerir ve veriler bir SQL Server görünümünden harici bağlantıyla (ODC dosyası) gelir.
Ayrıca, Veri sayfası yenilendikten sonra yenilenmesi gereken bir pivot sayfası da var.

Veri ve Pivot sayfalarının yenilenmesini, dosyalara gerek kalmadan otomatikleştirmek için bir çözüm (Windows PowerShell) bulmaya çalışıyorum. "Açılışta yenileyin" ve diğer Excel seçenekleri geçerli değildir, çünkü tüm bağlantıları yenilemek 20 dakika kadar sürebilir.

Ayrıca, TÜM sayfaları yenilemek istemiyorum çünkü dosyada grafikler için özel renklendirme var ve "Yenile", Excel'i varsayılan olarak sıfırlayabiliyor.
Excel ODC bağlantılarını otomatik olarak yenileyin ve dosyayı açmadan pivotları açın PowerShell

Bunu denedim, ancak ODC bağlantısıyla çalışmıyor gibi görünüyor mu?

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

Herhangi fikirleri: En azından bir şey .:

Windows PowerShell yapmıyor?

Büro sürümü: 2010

+0

Dont var Office'in hangi sürümünü biliyorum ama belki 'BackroundRefresh' o bağlantı için kapalıdır. Nasıl ayarlanacağına dair bir göz atın [here] (http://office.microsoft.com/en-ca/excel-help/refresh-an-external-data-connection-HA102840049.aspx#_Run_a_query). '.RefreshAll' yönteminde yalnızca [Background] öğesi için" BackgroundQuery özelliği true olarak ayarlandığında "yöntemi yenilenir (http://msdn.microsoft.com/en-us/library/office/ff838648 (v = office.15) .aspx – Matt

+0

Merhaba Matt, arka plan yenileme işlemi, bir kullanıcı dosyayı her açışında hala yeniliyor ve yeni veriler elde etmek için 20+ dakika beklemek zorunda kalacak. Win7'de Excel 2010 kullanıyorum. Özgün sorumu bu bilgi ile güncelledik, işaretlediğiniz için teşekkürler. – KathyBlue

+0

Her Pazartesi sabahı .bat dosyasını çalıştırmak için Windows Görev Zamanlayıcısı'nı kullanarak bir cron işi kurardım. .bat dosyasında, "hey, bir cron işinden koşuyorum" diyerek bir argüman tanımlayıcısını geçecektim, sonra ThisWorkbook Workbooks.Open işlevinde argümanı kontrol edip gerekli yenilemeyi çalıştırdım ve kapattım. excel kitabı gerektiği gibi. Aşağıdaki bağlantı (arkadan gelen makineden) CLI kullanarak Excel'in açılmasını ve bir argümandan geçmeyi anlatıyor http://www.mrexcel.com/archive/VBA/15657.html – Michael

cevap

1

Windows 7 üzerinde Muhtemelen this question üzerine cevap yardımcı olabilir. Perl betiği önceden derlenmiş bir exe dosyası olarak da mevcuttur.

+0

Evet, SSIS'e sahip olmak isterdim !!! Hayatı kolaylaştıracak! – KathyBlue

-1

Bu soruna Excel VBA kullanarak yaklaşıyor ve Excel dosyanızı .xlsm biçiminde oluşturuyordum. Daha sonra odbc bağlantınızı yenilemek için w/Excel VBA komutlarını ve işlevlerini güncelleyin ve ardından dağıtım için yeni bir dosya olarak kaydedin.

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

+1

Bu yanıt genişletilmeli, çünkü OP'nin verileri açmadan verileri yenileme gereksinimini nasıl karşıladığınız net değil. – Beniaminus

İlgili konular