2016-04-12 39 views
0

Yani bu WinServer 2012 R2 64 bit ayarlanmıştır.Sonraki modülVBA kodu çalışmaz

Bu .vbs dosyasını çift tıklattığımda arka planda çalışır, ancak görev zamanlayıcısı aracılığıyla .vbs'yi tetiklediğimde excel açılır, ancak dosyayı yüklemez veya alt dosyayı çalıştırmaz (hangisinin). Görev, makinede yönetim hakları olan bir etki alanı kullanıcısı altında çalışır.

Görev zamanlayıcı başlatır: i Vbs üzerinde çalıştırılıyor

Kod tıklayarak çalıştığımda sırayla, aynı kullanıcı kullanın

C: \ WINDOWS \ system32 \ cscript .exe "D: \ xyz \ trigger.vbs"

.vbs kapsamaz:

Option Explicit 

Dim xlApp, xlBook, xlsheets, xlcopy 
Set xlApp = CreateObject("Excel.Application") 
xlapp.Interactive = False 
xlapp.DisplayAlerts = False 
xlapp.AskToUpdateLinks = False 
xlapp.AlertBeforeOverwriting = False 
Set xlBook = xlApp.Workbooks.Open("D:\xyz\excelfile.xlsm") 

On Error Resume Next 
Call xlBook.Application.Run("Main.Extrnal_Trigger") 

xlbook.Saved = True 
xlBook.Close 
xlApp.Quit 

Set xlBook = Nothing 
Set xlcopy = Nothing 
Set xlApp = Nothing 

WScript.Quit(1) 

Excel kodu:

Sub Extrnal_Trigger() 

Application.EnableEvents = False 
Application.AskToUpdateLinks = False 
Application.DisplayAlerts = False 
Application.AlertBeforeOverwriting = False 

Call update_button 
Call MainProgram 
Call ReportSave 

End Sub 

nasıl öğrenebilirim nerede .vbs veya excel askıda kalıyor ve neden? Başka bir makinede çok benzer bir kurulum sorunsuz çalışıyor. Burada alıntılanan kod ile neredeyse aynı.

Bazı kötü uygulamalar olduğunu (xlapp ayarlarının temizlenmemesi gibi) farkettim, ancak temizleme işleminden önce işlemin devam etmesini istiyorum.


/düzenle: Vbs dan

On Error Resume Next 

çıkarılması hataya göstermez./Edit2


: Ben kadar geriye mümkün olduğunca geri alma denedik.

Option Explicit 
Dim fso, f, s, log 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set log = fso.CreateTextFile("D:\xyz\TESTlog.txt") 
log.WriteLine "before fso" 

Set f = fso.GetFile("D:\xyz\excel.xlsm") 
s = f.Path & " " 
s = s & "Created: " & f.DateCreated & " " 
s = s & "Last Accessed: " & f.DateLastAccessed & " " 
s = s & "Last Modified: " & f.DateLastModified 

log.WriteLine "after fso" 
log.writeline "fso content" 
log.writeline s 

Cscript.exe yoluyla görev zamanlayıcısı tarafından tetiklenen bu çalışır. Excel dosyasına yapılan çağrıda olup bitenleri günlüğe kaydetmeye çalışacağım.


/Edit3: Hata ayıklama bu

Set xlBook = xlApp.Workbooks.Open("D:\xyz\excel.xlsm") 

asla olmuyor gösterdi. Hata numaralarını yazdım ve bu çağrı için 1004 hatası aldım. Hala sorun nedir, ama en azından şimdi bir hata numarası var.


/edit4:

hata 1004 zamanlanmış görevler olarak bu çalıştırmak çalışıyor devam etmektedir..vbs'yi çift tıklatarak çalıştırdığımda, her şey çalışır.

+0

* D: * bir ağ sürücüsüne herhangi bir şansla atanmış mı? Dosya hakkında bilgi sorgulayıp sorgulayamayacağınızı görmek için dosya hakkında (ör. Dosya boyutu) günlük bilgilerini denediniz mi? Özel kurulumunuzda erişilebilir olup olmadığını görmek için dosya sistemi nesnesini kullanarak dosyayı açmayı denediniz mi? – IInspectable

+0

Sadece MsgBox "Hello World" yazan bir örnek deneyin. Bu çalışırsa, kod ekleyin. –

+0

hangi kullanıcının hangi programlayıcının altında çalıştığından emin değilim (muhtemelen Bill Gates dunno'nun amcası altında), ama eğer bu uyarıcı uyarı yoksa, makroları devre dışı bırakmışsanız ve bunu etkinleştirmeniz gerektiğini kontrol edeceğim. (kendiniz için değil, zamanlayıcı için) –

cevap

1

anahtar hem bu klasörler yaratmaktı:

C: \ Windows \ System32 \ config \ SystemProfile \ Desktop

ve

C: \ Windows \ SysWOW64 \ config \ SystemProfile \ Desktop

Bu klasörler yoksa Excel'in görünüşte, etkileşimli olmayan modda çalışırken sıkıntıları vardır (neden olmasın). Çalışma kitabını vbs ile açarken, bunları oluşturmak 1004 hatadan kurtuldu.