Postup zrušení dialogové okno se zobrazí pomocí aplikace sady Office pomocí jazyka Visual Basic

Překlady článku Překlady článku
ID článku: 259971 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Při aplikaci sady Office z aplikace Visual Basic (VB), jsou automatizace, může aplikace systému Office zobrazí dialogové okno. Dialogovém okně způsobuje, že aplikace Visual Basic přestane reagovat (zablokuje se), protože VB čeká dialogového okna a být zamítnuta. Před pokračováním v aplikaci Visual Basic musí být zamítnuta dialogového okna.

Tento článek popisuje, jak využít objektových modelů pro aplikace sady Office, aby dialogových oken během automatizace. Poskytuje také podrobný příklad, jak simulovat vstup uživatele programově zavřete dialogové okno, které není možné zabránit pomocí obvyklých vlastnosti a metody, které jsou vystaveny v objektových modelů.

Další informace

V době můžete automatizovat aplikace systému Office, ale nevyžaduje žádné interakce uživatele s aplikaci sady Office. V takovém případě aplikace systému Office se zobrazí dialogové okno, aplikace zdánlivě přestat reagovat, dokud se uživatel může zrušit dialogového okna. Však není možná uživatel sedící u počítače, kteří dialogové okno lze skrýt.

Aplikace sady Office není určen pro bezobslužné spuštění. Proto někdy aplikace, která automatizuje Office setkat dialogovým oknem zobrazeným aplikací sady Office. Z normální testování aplikace, můžete určit obvykle které dialogové okno polí dojít a zápis kódu, aby těchto polí zejména dialogová okna.

Následující některé doporučují strategie pro zamezení dialogových oknech při automatizaci sady Office aplikace:
  • Zjistit, zda vlastnost nebo metoda používáte (ten, který způsobuje dialogového okna) obsahuje volitelné argumenty, které lze předat ji. V některých případech předáním všechny argumenty vlastnost nebo metodu, můžete se vyhnout dialogové okno. Například používáte metodu Otevřít otevření sešitu aplikace Excel a tento sešit je chráněn heslem, aplikace Excel zobrazí dialogové okno s dotazem uživateli zadat heslo, pokud nezadáte argument hesla, při volání metody Otevřít. Chcete-li se vyhnout dialogovému oknu, zadejte hodnotu pro argument heslo při volání metody Open. Podobně při použití metody Zavřít zavřete dokument, často přispívá k zadání argumentu SaveChanges, aby se zabránilo dialogové okno s dotazem uživatele k uložení změn. Další informace, jak určit, jaké argumenty, které jsou k dispozici pro vlastnost nebo metodu, kterou voláte získáte následujícím článku báze Microsoft Knowledge Base:
    222101Jak Najít a použít dokumentaci modelu objektu sady Office
  • Studie objektový model aplikace systému Office, pokud může být vlastnost, která zabraňuje některých dialogových oknech. Například objekt aplikace Excel má vlastnosti AskToUpdateLinks a AlertBeforeOverwriting.
  • Vlastnost Application.DisplayAlerts (Excel, Project, Word) nebo použijte Application.DoCmd.SetWarnings False (pouze přístup) Chcete-li vypnout zobrazení výstražné zprávy. Většina, ale ne všechny, dialogových oknech se lze vyhnout použití tohoto nastavení.
  • Vlastnost Application.FeatureInstall (Office 2000 a novější) na zpracování možná "Tato funkce není nainstalována..." dialogová při přístupu k komponentu, která nemusejí být nainstalovány v systému uživatele.
  • Použití příkazu On Error run-time chybové zprávy, které může nastat například při, aby došlo k pokusu o nastavení Application.ActivePrinter, je-li nainstalován žádný ovladač tiskárny v systému uživatele.
  • Testovat aplikace důkladně pomoci předvídat, kdy může dojít, dialogových oknech. Předpokládejme například, že voláte metodu SaveAs aplikace sady Office uložit do souboru. Pokud tento soubor již existuje, může zobrazí dialogové okno s dotazem, potvrzení, chcete-li nahradit existující soubor. Pokud upravíte kód ke kontrole před voláním metody Uložit jako soubor, se můžete vyhnout možnost dialogového okna zobrazení. Například pokud soubor již existuje, odstraňte jej pomocí příkazu Kill před voláním metody Uložit jako.
Poznámka: I, pokud používáte tyto techniky a pečlivě navrhněte aplikaci chcete-li se vyhnout dialogových oknech, vám může stále být natřené situace, dialogové okno, které není možné zabránit s metodami a vlastnostmi, které jsou vystaveny v objektovém modelu aplikace systému Office. V takových případech bude pravděpodobně nutné programově zavřete dialogové okno napodobením vstup uživatele. Následující ukázkové ilustruje, jak to lze provést s klientem automatizace jazyka Visual Basic.

Vzorek

Kroky v této části ukazují automatizace Microsoft Word vytisknout dokument. Automatizace klient volá metodu vytisknout pro objekt dokument aplikace Word. Pokud výchozí tiskárnu uživatele je nakonfigurován tak, aby tisknout na portu FILE, vytváří volání vytisknout dialogové okno s výzvou k zadání názvu souboru. Chcete-li zjistit, pokud metoda vytisknout způsobí tomto dialogovém okně se zobrazí, klienta automatizace jazyka Visual Basic používá ovládací prvek Timer rozpoznání nečinnosti po volání metody vytisknout. Před voláním vytisknout, Timer je povolena a nastavte na oheň v pěti sekund. Po dokončení vytisknoutTimer je zakázána. Proto je-li vytisknout Metoda dokončení během pěti sekund, nikdy nastane událost Timer a žádná další akce. Dokument je vytištěn a spuštění kódu pokračuje mimo metodě vytisknout. Však pokud dojde k události Timer v pěti druhé intervalu, předpokládá se vytisknout metoda nebyla dokončena a zpoždění je způsobeno dialogové okno čekání na vstup uživatele. Jakmile dojde k události Timer, klienta automatizace vybrán do aplikace Word a používá PředatKlávesovéÚhozy k dialogovým oknem zrušit.

Poznámka: Pro účely demonstrace tento příklad používá metodu vytisknout takovým způsobem, že se zobrazí dialogové záměrně při tisku do sady tiskárny k portu FILE. Všimněte si, že metoda vytisknout má dva argumenty, OutputfileName a PrintToFile, poskytujících vyhnout se toto dialogové okno.

Navíc používáte-li tento přístup "časovače", je mohou přizpůsobit čekací dobu větší nebo menší než pět sekund, stejně jako stisknutí kláves, které odešlete do dialogového okna upravit.

Této názorné ukázky se skládá ze dvou projektům v jazyce Visual Basic:
  1. ActiveX EXE poskytující třídy Timer, slouží k detekci zpoždění. Důvod použití ActiveX EXE pro třídu Timer je spustit časovač kód v samostatném procesu a tedy samostatný podproces. To umožňuje třídy Timer ke zvýšení událost během volání pozastavené automatizace.
  2. Standardní EXE, který používá automatizace do aplikace Word a volá metodu vytisknout dokument vytisknout. Zjistit zpoždění při volání metody vytisknout pomocí ActiveX EXE.
Vytvoření projektu ActiveX EXE
  1. Spusťte aplikaci Visual Basic a vytvořit projekt ActiveX EXE. Ve výchozím nastavení je vytvořena Class1.
  2. V nabídce projekt klepněte vyberte příkaz Vlastnosti a poté změňte název projektu na MyTimer.
  3. Zkopírujte a vložte následující kód do modulu Class1:
    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. V nabídce projekt klepněte na příkaz Přidat formulář do projektu přidat nový formulář.
  5. Do formuláře přidat ovládací prvek Timer.
  6. Zkopírujte a vložte následující kód do modulu kódu pro Form1:
    Option Explicit
    
    Public oClass1 As Class1
    
    Private Sub Timer1_Timer()
        oClass1.TimerEvent
    End Sub
    					
  7. Tento projekt uložit do nové podsložky s názvem serveru.
  8. V nabídce soubor klepněte na příkaz Vytvořit MyTimer.Exe vytvořit a zaregistrovat komponenty.
Vytvořit klienta automatizace
  1. Vytvoření nového projektu standardní EXE v jazyce Visual Basic. Ve výchozím nastavení je vytvořena Form1.
  2. Do formuláře přidat ovládací prvek CommandButton.
  3. V nabídce projekt vyberte odkazy. Knihovna objektů Microsoft Word 8.0 nebo 9.0 (10.0) a na MyTimer přidat odkazy.
  4. Zkopírujte a vložte následující kód, který modul formuláře:
    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. Tento projekt uložit v podsložku s názvem klienta.
  6. Stisknutím klávesy F5 spuštění projektu. Zobrazí se Form1.
  7. Klepněte na Command1 ve formuláři. To automatizuje aplikace Word, přidá nový dokument s nějaký text a potom ji pošle do tiskárny pomocí metody vytisknout. Pokud tiskárna je nakonfigurován tak, aby tisk na tiskárně nezobrazí dialogové okno.
  8. V Ovládacích panelech systému Windows Změna výchozí tiskárny tak, aby byl nakonfigurován pro tisk na portu FILE.
  9. Klepněte znovu na tlačítko Command1 a Všimněte si, že se v aplikaci Word zobrazí dialogové okno. Není zavřete dialogové okno, počkejte pět sekund a dialogového okna je programově zamítnuta, jakmile dojde k události Timer. Výstupní soubor s názvem MyOutput.prn, bude vytvořena v podsložky klienta.
Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci bez žádné záruky nebo mlčky, včetně, ale nikoli výhradně, předpokládaných záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá obeznámeni s programovacím jazykem, je prokázána a nástroje, používané k vytváření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, ale jejich tyto příklady přidány funkce nebo vytvářet postupy specifické požadavky uspokojí není upravit.
Pokud zkušenými programátory, můžete chtít kontaktujte Microsoft Certified Partner nebo poradní služby společnosti Microsoft. Na Další informace naleznete těchto webech společnosti Microsoft:

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

Služba Microsoft poradní - http://support.microsoft.com/gp/advisoryservice

Další informace o možnostech podpory, které jsou k dispozici a o možnostech kontaktování společnosti Microsoft, navštivte následující web společnosti Microsoft: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Odkazy

Další informace získáte v následujících článcích v databázi Microsoft Knowledge Base:
257757INFORMACE: Doporučení pro automatizace na straně serveru sady Office
226118OFF2000: Programování prostředky pro jazyk Visual Basic for Applications
253235FILE: Offautmn.exe popisuje Office 97 a 2000 automatizace a poskytuje vzorový kód
Další informace o automatizaci Office navštivte centrum podpory vývoje Office na následujícím webu společnosti Microsoft:
http://support.microsoft.com/ofd

Vlastnosti

ID článku: 259971 - Poslední aktualizace: 17. ledna 2007 - Revize: 6.7
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbautomation kbhowto kbprogramming KB259971 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:259971

Dejte nám zpětnou vazbu

 

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