Office uygulaması tarafından görüntülenen bir iletişim kutusu Visual Basic ile yoksayma (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)

Makale çevirileri Makale çevirileri
Makale numarası: 259971 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Office uygulaması, bir Office uygulaması tarafından Visual Basic (VB) otomatikleştirme, bir iletişim kutusu görüntülenebilir. Iletişim kutusu yanıt (veya asılı kalabilir) iletişim kutusunun atlamamış için bir VB beklediği durdurmaya görünmesini Visual Basic uygulaması neden olur. Visual Basic uygulamasını devam etmeden önce iletişim kutusunun atlamamış gerekir.

Bu makalede, Otomasyon işlemi sırasında iletişim kutuları önlemek için Office uygulamaları için nesne modellerini nasıl kullanabileceğiniz anlatılır. Ayrıca, programlı olarak genel özellikleri ve nesne modeli kullandığı yöntemleri kullanarak kaçınılması edemiyor bir iletişim kutusunu kapatmak için kullanıcı girişini benzetimini yapmak için adım adım yol gösteren bir örneği sağlar.

Daha fazla bilgi

Bazen, bir Office uygulamasını otomatikleştirmek ancak herhangi bir Office uygulaması ile kullanıcı etkileşimi gerektiren isteyebilirsiniz. Office uygulamasının bir iletişim kutusu görüntülenirse, bu durumda, uygulamanızın bir kullanıcı iletişim kutusunu kapatmak kadar yanıt vermiyor gibi görünüyor. Ancak, olmayabilir kullanıcı iletişim kutusunu kapatmak bilgisayar başında oturan.

Office uygulamaları, katılımsız yürütme için tasarlanmamıştır. Bu nedenle, Office otomatikleştiren bir uygulama bir Office uygulaması tarafından görüntülenen bir iletişim kutusu bazen karşılaşabilir. Normal uygulama sınama arasında hangi iletişim kutuları oluşur ve bu özel iletişim kutuları önlemek için kodunuzu yazın genellikle belirleyebilirsiniz.

Aşağıda bazı iletişim kutularını Office otomatikleştirme sırasında kaçınma stratejileri önerilen uygulama:
  • Özellik veya yöntem (iletişim kutusu neden olan bir) kullanıyorsanız, kendisine iletmek isteğe bağlı bağımsız değişkenlerini olup olmadığını belirleyin. Bazı durumlarda, tüm bağımsız değişkenlerinin belirli bir özellik veya yöntemi ileterek, bir iletişim kutusu kurtulabilirsiniz. Örneğin, bir Excel çalışma kitabı ve bu çalışma kitabını açmak için yöntemini kullanıyorsanız, parola korumalı, Excel'in görüntüler yöntemi çağrılırken parola bağımsız değişkenini belirtmezseniz, parola girmesini isteyen bir iletişim kutusu olur. Iletişim kutusu önlemek için <a0></a0>, bir değer için parola bağımsız değişkenini Open yöntemini çağırırken sağlar. Benzer şekilde, bir belgeyi kapatmak için Kapat yöntemi kullanırken, genellikle kullanıcı, değişiklikleri kaydetmek için soran bir iletişim kutusu önlemek için SaveChanges bağımsız değişken olarak belirlemek için yardımcı. Hangi bağımsız değişken, özellik veya yöntem aradığınız için olduğunun nasıl belirleneceği hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    222101Nasıl Bul ve Office nesne modeli belgelerine kullanın.
  • Olabilir, bazı iletişim kutularını engelleyen bir özellik görmek için Office uygulamasının nesne modeli üzerinde çalışın. Örneğin, Excel Uygulama nesnesini AskToUpdateLinks ve AlertBeforeOverwriting özellikleri vardır.
  • (Proje, Excel, Word) <a0>Application.DisplayAlerts özelliğini ayarlayın veya Application.DoCmd.SetWarnings False (yalnızca Access) kullanın, uyarı iletilerinin görüntülenmesini devre dışı bırakmak için. Bu ayarı kullanarak iletişim kutularının çoğu, ancak tüm, engellenmesi.
  • Application.FeatureInstall özelliği (Office 2000 ve sonraki sürümleri) olası işlemek için ayarlanan kullanıcı sistemde yüklü olan bir bileşen erişirken "Bu özellik yüklü değil..." iletişim kutuları.
  • Yazıcı sürücüsü yok, kullanıcının sistemine yüklendiğinde Application.ActivePrinter ayarlamak, zaman gibi gerçekleşebilir çalışma zamanı hata iletilerini engellemek için Açık hata deyimi kullanır çalışıyor.
  • Uygulama kapsamlı iletişim kutuları ortaya çıkabilecek öngörmeye yardımcı olmak için sınayın. Örneğin, bir dosyaya kaydetmek için Office uygulaması SaveAs yöntemini çağırmak varsayalım. Bu dosya zaten varsa, varolan dosyayı değiştirmek için onay isteyen bir iletişim kutusu görüntülenebilir. SaveAs yöntemi çağırmadan önce dosyasını denetlemek için kodunuz değiştirirseniz, olasılığı iletişim kutusunun görüntülenmesini önleyebilirsiniz. Örneğin, dosya zaten varsa, SaveAs yöntemini çağırmadan önce kill deyimi kullanarak silin.
Not Bu teknikleri kullanan ve dikkatli bir şekilde iletişim kutuları önlemek için uygulamanızın tasarım bile, yine de bulunduğu bir iletişim kutusu yöntemleri ve özellikleri Office uygulama nesne modelindeki kullandığı kaçınılması edemiyor durumla kitap. Bu gibi durumlarda, programlı olarak kullanıcı girişi taklit tarafından bir iletişim kutusunu kapatmak gerekli olabilir. Aşağıdaki örnek, nasıl bu bir Visual Basic Automation istemcisiyle gerçekleştirilebilir göstermektedir.

ÖRNEK

Bu bölümdeki adımları otomasyonu, bir belge yazdırmak için Microsoft Word'Ü gösterir. Otomasyon istemci, Word belge nesnesi için Yazdır yöntemini çağırır. Kullanıcının varsayılan yazıcısını FILE bağlantı noktasına yazdırmak için yapılandırılırsa, sonra bir ça?r? Yazdır, bir dosya adı girmesini isteyen bir iletişim kutusu oluşturur. Yazdır yöntemini bu iletişim kutusunun görünmesine neden olur, belirlemek için <a0></a0>, Yazdır yöntemi çağrıldıktan sonra boşta kalma süresi algılamak için bir süreölçer denetimini Visual Basic Automation istemci kullanır. Yazdır ' ı çağırmadan önce süreölçer etkinleştirilmiş ve beş saniye ba?latmak için ayarlayın. Yazdır tamamladığında, süreölçeri devre dışı bırakılır. Bu nedenle, Yazdır yöntemini beş saniye içinde tamamlarsa, hiçbir zaman, Timer olayı oluşur ve başka eylem yapılmaz. Belge yazdırıldığı ve kod yürütülmesine devam eder, <a2>Yazdır</a2> yöntemi. Beş ikinci aralığında Timer olayı oluşur, ancak bunu Yazdır yöntemini değil tamamladı ve bu gecikme, kullanıcı girişi beklemesi bir iletişim kutusu tarafından neden olduğunu kabul edilir. Timer olayı oluştuğunda, otomasyon istemci Odağı Word'e verir ve iletişim kutusunu kapatmak için TuşGönder kullanır.

Not Bu örnek, göndermeler, yazıcı kümesi FILE bağlantı noktasına yazdırdığında, bir iletişim kutusu kasıtlı olarak görüntülendiğini şekilde Yazdır yöntemini kullanır. Yazdır yöntemini OutputfileName ve bu iletişim kutusunu önlemek için sağladığınız PrintToFile, iki bağımsız olduğunu unutmayın.

Ayrıca, bu "süreölçeri" yaklaşımın kullanırken, büyük olması için bekleme süresi veya daha az beş saniye özelleştirme, yan? s?ra iletişim kutusuna göndermek tuş vuruşlarının özelleştirme.

Bu gösteri, iki Visual Basic projesinin oluşur:
  1. Bir ActiveX gecikme algılamak için kullanılan bir süreölçer sınıf sağlayan EXE. Ayrı bir işlemde ve ayrı bir iş parçacığı, bu nedenle, nedeni bir ActiveX EXE süreölçer sınıfı süreölçeri'ni çalıştırmak için kullanılacak kodu. Bu süreölçer sınıfı, bir askıya alınmış Otomasyon çağrısı sırasında bir olay yükseltmenizi sağlar.
  2. Bir standart Otomasyon Word'e kullanır ve bir belgeyi yazdırmak için Yazdır yöntemini EXE. ActiveX EXE Yazdır yöntemi çağrılırken bir gecikme algılamak için kullanır.
ActiveX EXE Proje oluşturma
  1. Visual Basic'ı başlatın ve bir ActiveX EXE projesi oluşturun. Class1, varsayılan olarak oluşturulur.
  2. Proje menüsünde Özellikler ' i tıklatıp seçin ve sonra da MyTimer için proje adını değiştirin.
  3. Class1 modüle aşağıdaki kodu yapıştırın:
    Option Explicit
    
    Public Event Timer()
    Private oForm1 As Form1
    
    Private Sub Class_Initialize()
        Set oForm1 = New Form1
        oForm1.Timer1.Enabled = False
    End Sub
    
    Private Sub Class_Terminate()
        Me.Enabled = False
        Unload oForm1
        Set oForm1 = Nothing
    End Sub
    
    Public Property Get Enabled() As Boolean
        Enabled = oForm1.Timer1.Enabled
    End Property
    
    Public Property Let Enabled(ByVal vNewValue As Boolean)
        oForm1.Timer1.Enabled = vNewValue
        If vNewValue = True Then
            Set oForm1.oClass1 = Me
        Else
            Set oForm1.oClass1 = Nothing
        End If
    End Property
    
    Public Property Get Interval() As Integer
        Interval = oForm1.Timer1.Interval
    End Property
    
    Public Property Let Interval(ByVal vNewValue As Integer)
        oForm1.Timer1.Interval = vNewValue
    End Property
    
    Friend Sub TimerEvent()
        RaiseEvent Timer
    End Sub
    					
  4. Proje menüsünde Proje için yeni bir form eklemek için Add Form'u seçin.
  5. Bir süreölçer denetimi forma ekleyin.
  6. Aşağıdaki kodu için Form1 kodu modüle yapıştırın:
    Option Explicit
    
    Public oClass1 As Class1
    
    Private Sub Timer1_Timer()
        oClass1.TimerEvent
    End Sub
    					
  7. Bu proje Server adlı yeni bir alt klasöre kaydedin.
  8. Dosya menüsünde Yap MyTimer.Exe oluşturmak ve bu bileşen kaydetmek için seçin.
Otomasyon istemci oluşturmak için
  1. Yeni bir proje standart exe DOSYASı, Visual Basic'te oluşturun. Varsayılan olarak, Form1 oluşturulur.
  2. KomutDüğmesi denetimi forma ekleyin.
  3. Proje menüsünde başvuru ' ı seçin. Başvurular, Microsoft Word 8.0 (9.0 veya 10.0) nesne kitaplığı ve MyTimer ekleyin.
  4. Form modüle aşağıdaki kodu yapıştırın:
    Option Explicit
    
    Private oWord As Word.Application
    Private strWordCaption As String
    Private WithEvents oMyTimer As MyTimer.Class1
    
    Private Sub Form_Load()
        'Create MyTimer object, and then disable it by default:
        Set oMyTimer = New MyTimer.Class1
        oMyTimer.Enabled = False
    End Sub
    
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        'Terminate MyTimer object when the form is closed:
        oMyTimer.Enabled = False
        Set oMyTimer = Nothing
    End Sub
    
    Private Sub Command1_Click()
        On Error GoTo ErrorHandler
        
        'Create a new Word instance and put text in the new document:
        Set oWord = CreateObject("Word.Application")
        oWord.Visible = True
        oWord.Documents.Add
        oWord.Selection.TypeText "Hello World!"
        
        'Prepare Timer to "watch out" for a delay in calling PrintOut:
        strWordCaption = GetWordCaption 'for use with AppActivate
        oMyTimer.Interval = 5000 'allow 5 second wait time
        oMyTimer.Enabled = True
            
        'Call the PrintOut method, which may prompt the user to select
        'an output file name if the default printer is set to FILE:
        oWord.PrintOut Background:=False
    
    Done:
        On Error Resume Next
        'Turn off Timer:
        oMyTimer.Enabled = False
        
        'Close document and quit the Word instance:
        oWord.ActiveDocument.Close SaveChanges:=False
        oWord.Quit
        Set oWord = Nothing
        Exit Sub
    ErrorHandler:
        Resume Done
    End Sub
    
    Private Sub oMyTimer_Timer()
    'If this event occurs, there was a delay in calling PrintOut.
    'You can assume that the delay is caused by a dialog box prompting
    'for an output file name because the user has the printer
    'configured to print to FILE. SendKeys is used to provide the
    'output file name and dismiss the dialog box.
        Dim strKeys As String
        
        On Error Resume Next
        
        'Make sure that Word has the focus before using SendKeys to it:
    
        AppActivate strWordCaption 'Set focus to Word.
        
        'Send keystrokes to enter the output file name:
        If Right$(App.Path, 1) = "\" Then
            strKeys = App.Path & "MyOutput.prn"
        Else
            strKeys = App.Path & "\MyOutput.prn"
        End If
        Kill strKeys 'make sure file does not already exist
        strKeys = strKeys & "~" '~ represents the OK button to dismiss dialog
        SendKeys strKeys, True
           
        'Disable MyTimer:
        oMyTimer.Enabled = False
    End Sub
    
    Private Function GetWordCaption() As String
    'Returns the Word Caption. For use with the AppActivate statement
        Dim s As String
        On Error Resume Next
        If Left$(oWord.Version, 1) = "8" Then
            'Word 97 logic:
            s = oWord.Caption
        Else
            'Word 2000 or 2002 logic:
            Err.Clear
            s = oWord.ActiveWindow.Caption
            If Err.Number = 0 Then 'no error
                s = s & " - " & oWord.Caption
            Else
                s = oWord.Caption
            End If
        End If
        GetWordCaption = s
    End Function
    					
  5. Bu proje için istemci adlı yeni bir alt klasörde kaydedin.
  6. Proje çalıştırmak için F5 tuşuna basın. Form1 görüntülenir.
  7. Command1 tıklatın. Bu Word otomatikleştirir, bazı metin yeni belgeye ekler ve sonra Yazdır yöntemini kullanarak yazıcıya gönderir. Yazıcınız bir yazıcı için yapılandırılırsa, bir iletişim kutusu görmezsiniz.
  8. FILE bağlantı noktasına yazdırmak için yapılandırılmasını sağlamak amacıyla Windows Denetim Masasında Varsayılan yazıcınızı değiştirin.
  9. Command1 yeniden tıklatın ve bir iletişim kutusu Word'de göründüğünü unutmayın. Iletişim kutusunu kapatın, beş saniye bekleyin ve sonra da Timer olayı oluştuğunda iletişim kutusu programsal olarak atlamamış. MyOutput.prn adlı bir çıktı dosyası istemci alt klasöründe oluşturulur.
Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; satılabilirlik ve/veya belirli bir amaca uygunluk da dahil, ancak bununla sınırlı olmamak kaydıyla, örtülü veya açık garanti vermez. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek uzmanları, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.
Programlama deneyiminiz kısıtlıysa, bir Microsoft Sertifikalı İş Ortağı'na veya Microsoft Danışmanlık Hizmetleri'ne başvurabilirsiniz. Daha fazla bilgi için şu Microsoft Web sitelerini ziyaret edin:

Microsoft Partner - https://partner.microsoft.com/global/30000104 Onaylandı

Microsoft danışma belgesi Hizmetleri - http://support.microsoft.com/gp/advisoryservice

Kullanılabilir destek seçenekleri ve Microsoft'a başvurma konusunda daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
257757BILGI: İlgili konular için Office'in sunucu tarafında otomasyonu
226118OFF2000: kaynaklar Visual Basic for Applications programlama
253235Dosya: Offautmn.exe Office 97 ve 2000 Otomasyon anlatılır ve örnek kodu sağlar.
Office Otomasyonu ile ilgili ek bilgi için aşağıdaki Microsoft Web sitesindeki Office geliştirme Destek Merkezi'ni ziyaret edin:
http://support.microsoft.com/ofd

Özellikler

Makale numarası: 259971 - Last Review: 17 Ocak 2007 Çarşamba - Gözden geçirme: 6.7
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Anahtar Kelimeler: 
kbmt kbautomation kbhowto kbprogramming KB259971 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:259971

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com