Açık için gitmeden önce: Application.DisplayAlerts = False
benim sorunumu çözmedi.Excel, bir OLE eylemi tamamlamak için başka bir uygulama için bekliyor
Farklı Excel dosyaları içeren bir dizinin etrafında dolaşan bir VBA yordamı (Excel 2010'da başlatılan) yazdım. Döngü dosyayı açar, verileri yeniler, dizideki her öğe için dosyayı kaydeder ve kapatır. Bir hata yakalama alt rutinini yazdım, bu yüzden hangi excel dosyaları açmayı/yenilemeyi/kaydetmeyi başaramadığımı, böylece kullanıcının bunları manuel olarak kontrol edebildiğini kaydediyorum. Bazı dosyalar oldukça büyüktür ve ağda büyük miktarda veri taşımayı içerir; bazen bir iletişim kutusu: Excel, başka bir uygulama bir OLE eylemi tamamlamak için bekliyor.
İletiyi devre dışı bırakmak için Application.DisplayAlerts = False
kullanabilirdim, ancak bu hataları tümüyle engelleyebilmem için tüm uyarıları devre dışı bırakabilir miyim? Ayrıca, satırı kullanarak test ettim ve iletişim kutusu açılmasını durdurmuyor. Eğer enter tuşuna basarsam, devam eder ama muhtemelen birkaç dakika sonra tekrar açılır.
Diğer uyarıları durdurmadan özellikle durmanın bir yolu var mı?
NB. Sürecim, VBA'yı çalıştıran ve ayrı bir örnekte yenilenecek çalışma kitaplarını açan Excel'in bir denetim örneğine sahip. Yardımlarınız
benim kod bir özü için
Teşekkür
Sub Refresh_BoardPivots_Standard()
' On Error GoTo Errorhandler
Dim i
Dim errorText As String
Dim x
Dim objXL As Excel.Application
Set objXL = CreateObject("Excel.Application")
GetPivotsToRefresh ' populate array from SQL
For Each i In StandardBoardPiv
DoEvents
'If File_Exists(i) Then
If isFileOpen(i) = True Then
errorText = i
Failed(failedIndex) = errorText
failedIndex = failedIndex + 1
Else
objXL.Visible = True 'False
objXL.Workbooks.Open FileName:=i
If objXL.ActiveWorkbook.ReadOnly = False Then
BackgroundQuery = False
Application.DisplayAlerts = False
objXL.ActiveWorkbook.RefreshAll
objXL.Application.CalculateFull
objXL.Application.DisplayAlerts = False
objXL.ActiveWorkbook.Save
objXL.Application.DisplayAlerts = True
objXL.Quit
Else
errorText = i
Failed(failedIndex) = errorText
failedIndex = failedIndex + 1
objXL.Application.DisplayAlerts = False
objXL.Quit
Application.DisplayAlerts = True
End If
End If
' Else
' errorText = i
' Failed(failedIndex) = errorText
' failedIndex = failedIndex + 1
' End If
DoEvents
If Ref = False Then
Exit For
End If
Next i
Exit Sub
'Errorhandler:
'
'errorText = i
'Failed(failedIndex) = errorText
'failedIndex = failedIndex + 1
'Resume Next
End Sub
downvote, neyin var ki? Eğer bir sorun varsa onu çözebilirim – SliderSteve
Size bir +1 verdim çünkü sorununla ilgili yanlış bir şey göremiyorum. : P Soru sizin için: Neden başka bir Excel örneği oluşturuyorsunuz? Bu gereksiz bir komplikasyon değil mi? –
Teşekkürler n8. Evet, benim ikinci alt rutinimle ilgili bir sorunu çözmek için ikinci örneği eklemeliydim. Kullanıcının işlemi güvenli bir şekilde durdurması gerektiğinde bir düğmeye basması gerekti, ancak düğmeye basılmaması için odaklama çalışma kitabında kalıyordu, dolayısıyla ayrı bir örnek oluşturuyordu. – SliderSteve