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.
* 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
Sadece MsgBox "Hello World" yazan bir örnek deneyin. Bu çalışırsa, kod ekleyin. –
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) –