Làm th? nào đ? b? qua h?p tho?i hi?n th? b?i m?t ?ng d?ng văn ph?ng v?i Visual Basic

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 259971 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

Khi b?n t? đ?ng hoá m?t ?ng d?ng văn ph?ng t? tr?c quan Cơ b?n (VB), ?ng d?ng văn ph?ng có th? hi?n th? m?t h?p tho?i. H?p tho?i gây ra các ?ng d?ng Visual Basic dư?ng như ng?ng đáp ?ng (ho?c treo) b?i v? VB ch? đ?i cho h?p tho?i đ? đư?c mi?n nhi?m. H?p tho?i ph?i đư?c mi?n nhi?m trư?c khi áp d?ng Visual Basic có th? ti?p t?c.

Đi?u này bài th?o lu?n v? cách b?n có th? s? d?ng các mô h?nh đ?i tư?ng cho các ?ng d?ng văn ph?ng đ? tránh các h?p tho?i trong khi t? đ?ng hóa. Nó c?ng cung c?p m?t ví d?-by-step làm th? nào đ? mô ph?ng đ?u vào ngư?i s? d?ng đ? l?p tr?nh b? m?t dialog h?p mà không th? tránh đư?c b?ng cách s? d?ng thu?c tính thông thư?ng và các phương pháp ti?p xúc ? các các mô h?nh đ?i tư?ng.

THÔNG TIN THÊM

Đôi khi, b?n có th? mu?n t? đ?ng hoá m?t ?ng d?ng văn ph?ng nhưng không yêu c?u b?t k? s? tương tác ngư?i dùng v?i các ?ng d?ng văn ph?ng. Trong trư?ng h?p này, N?u ?ng d?ng văn ph?ng s? hi?n th? m?t h?p tho?i, ?ng d?ng c?a b?n dư?ng như ng?ng đáp ?ng cho đ?n khi m?t ngư?i dùng có th? b? qua h?p tho?i. Tuy nhiên, có th? không là m?t ngư?i s? d?ng ng?i ? phía trư?c c?a máy tính nh?ng ngư?i có th? b? qua h?p tho?i h?p.

Các ?ng d?ng văn ph?ng không đư?c thi?t k? đ? th?c hi?n không giám sát. V? v?y, m?t ?ng d?ng t? đ?ng hóa văn ph?ng có th? đôi khi g?p m?t h?p tho?i hi?n th? b?i các ?ng d?ng văn ph?ng. T? th? nghi?m b?nh thư?ng c?a các ?ng d?ng, b?n thư?ng có th? xác đ?nh h?p tho?i h?p x?y ra và vi?t c?a b?n M? s? đ? tránh nh?ng ngư?i c? th? dialogs h?p.

Sau đây là m?t s? chi?n lư?c đư?c đ? ngh? đ? tránh h?p tho?i trong khi t? đ?ng hoá m?t văn ph?ng ?ng d?ng:
  • Xác đ?nh n?u tài s?n, ho?c phương pháp b?n đang s? d?ng (m?t đó gây ra h?p tho?i) đ? l?p lu?n tùy ch?n mà b?n có th? vư?t qua nó. Đôi khi, b?ng cách g?i đ?i s? t?t c? các tài s?n ho?c phương pháp, b?n có th? tránh m?t h?p tho?i. Ví d?, n?u b?n đang s? d?ng các M? phương pháp đ? m? m?t b?ng tính Excel và b?ng tính đó là m?t kh?u b?o v?, Excel s? hi?n th? m?t h?p tho?i yêu c?u ngư?i dùng ph?i nh?p m?t kh?u n?u b?n không cung c?p cho các đ?i s? m?t kh?u khi g?i các M? phương pháp. Đ? tránh h?p tho?i, cung c?p m?t giá tr? cho các M?t kh?u đ?i s? khi g?i các M? phương pháp. Tương t? như v?y, khi s? d?ng các Đóng phương pháp đ? đóng m?t tài li?u, nó thư?ng giúp đ? xác đ?nh các SaveChanges đ?i s? đ? tránh m?t h?p tho?i yêu c?u ngư?i s? d?ng đ? ti?t ki?m thay đ?i. Đ? có thêm thông tin v? làm th? nào đ? xác đ?nh nh?ng g? đ?i s? có s?n cho các tài s?n ho?c các phương pháp mà b?n đang g?i đi?n tho?i, b?m s? bài vi?t sau đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
    222101Làm th? nào đ? t?m và s? d?ng văn ph?ng đ?i tư?ng m?u tài li?u
  • Nghiên c?u mô h?nh đ?i tư?ng c?a các ?ng d?ng văn ph?ng đ? xem n?u có th? có m?t tài s?n có th? ngăn ch?n m?t s? h?p tho?i. Ví d?, các Excel ?ng d?ng đ?i tư?ng đ? AskToUpdateLinksAlertBeforeOverwriting b?t đ?ng s?n.
  • Đ?t các Application.DisplayAlerts b?t đ?ng s?n (Excel, d? án, Word) ho?c s? d?ng Application.DoCmd.SetWarnings sai (Truy c?p ch?) đ? t?t hi?n th? các thông đi?p c?nh báo. H?u h?t, nhưng không ph?i t?t c?, h?p có th? tránh s? d?ng này thi?t l?p.
  • Đ?t các Application.FeatureInstall b?t đ?ng s?n (Office 2000 và sau này) đ? x? l? t?t "chöùc naêng không đư?c cài đ?t..."h?p tho?i h?p khi truy c?p vào m?t thành ph?n có th? không cài đ?t trên h? th?ng c?a ngư?i dùng.
  • S? d?ng các Ngày l?i tuyên b? đ? tránh thông báo th?i gian ch?y l?i có th? x?y ra, như v?y như khi c? g?ng đ? thi?t l?p các Application.ActivePrinter khi có tr?nh đi?u khi?n máy in đư?c cài đ?t trên h? th?ng c?a ngư?i dùng.
  • Ki?m tra c?a b?n ?ng d?ng tri?t đ? nh?m lư?ng trư?c khi h?p tho?i có th? x?y ra. Ví d?, gi? s? b?n g?i các SaveAs phương pháp c?a m?t ?ng d?ng văn ph?ng đ? lưu vào m?t t?p. N?u mà t?p tin đ? t?n t?i, m?t h?p tho?i có th? xu?t hi?n yêu c?u xác nh?n đ? thay th? các t?p đ? có. N?u b?n s?a đ?i m? c?a b?n đ? ki?m tra các t?p tin trư?c khi g?i cácSaveAs phương pháp, b?n có th? tránh kh? năng c?a h?p tho?i xu?t hi?n. Ví d?, n?u t?p đ? t?n t?i, xóa nó b?ng cách s? d?ng các Gi?t ch?t tuyên b? trư?c khi g?i các SaveAs phương pháp.
Chú ý Th?m chí n?u b?n s? d?ng các k? thu?t và thi?t k? c?n th?n c?a b?n ?ng d?ng đ? tránh h?p, b?n v?n có th? ph?i đ?i m?t v?i m?t t?nh hu?ng nơi m?t h?p tho?i không th? tránh kh?i v?i các phương pháp và tính ch?t ti?p xúc ? mô h?nh đ?i tư?ng c?a ?ng d?ng văn ph?ng. Trong t?nh hu?ng như v?y, nó có th? là c?n thi?t đ? l?p tr?nh b? qua h?p tho?i b?ng cách mô ph?ng đ?u vào ngư?i s? d?ng. Các cu?c bi?u t?nh sau minh ho? cách này có th? đư?c th?c hi?n v?i m?t Khách hàng t? đ?ng hóa Visual Basic.

M?u

Các bư?c trong ph?n này ch?ng minh t? đ?ng hóa c?a Microsoft Word đ? in m?t tài li?u. Các cu?c g?i khách hàng t? đ?ng hóa các PrintOut phương pháp c?a t? Tài li?u đ?i tư?ng. N?u máy in m?c đ?nh c?a ngư?i dùng chu?n đư?c c?u h?nh đ? in ra c?ng t?p tin, sau đó m?t cu?c g?i đ?n PrintOut t?o m?t h?p tho?i nh?c ngư?i dùng ph?i nh?p tên t?p. Đ? xác đ?nh xem các PrintOut phương pháp nguyên nhân này h?p tho?i xu?t hi?n, Visual Basic T? đ?ng hóa khách hàng s? d?ng m?t B? đ?m th?i gian ki?m soát đ? phát hi?n th?i gian nhàn r?i sau khi g?i các PrintOut phương pháp. Trư?c khi đ?n đi?n tho?i PrintOut, các B? đ?m th?i gian là ng?n l?a đư?c kích ho?t và thi?t l?p đ? trong năm giây. Khi PrintOut hoàn thành, các B? đ?m th?i gian b? vô hi?u hóa. V? v?y, n?u các PrintOut phương pháp hoàn thành trong năm giây, các B? đ?m th?i gian s? ki?n không bao gi? x?y ra và không có thêm hành đ?ng đư?c l?y. Tài li?u đư?c in và ti?p t?c th?c hi?n m? vư?t ra ngoài các PrintOut phương pháp. Tuy nhiên, n?u các B? đ?m th?i gian s? ki?n x?y ra trong năm kho?ng th?i gian th? hai, ngư?i ta cho r?ng các PrintOut phương pháp này đ? không hoàn thành và s? ch?m tr? là do m?t h?p tho?i h?p ch? đ?i cho ngư?i s? d?ng đ?u vào. Khi các B? đ?m th?i gian s? ki?n x?y ra, khách hàng t? đ?ng hóa cho t?p trung vào Word và s? d?ng SendKeys đ? b? qua h?p tho?i.

Chú ý M?c đích cu?c bi?u t?nh, m?u này s? d?ng các PrintOut phương pháp như v?y mà nó s? hi?n th? m?t h?p tho?i c? ? khi nó in đ? máy in đ?t m?t t?p tin c?ng. Xin lưu ? r?ng các PrintOut phương pháp có hai đ?i s?, OutputfileNamePrintToFile, b?n có th? cung c?p đ? tránh h?p tho?i này.

Ngoài ra, khi s? d?ng "h?n gi?" cách ti?p c?n này, b?n có th? tùy ch?nh th?i gian ch? đ?i đư?c nhi?u hơn ho?c ít hơn năm giây, c?ng như tùy ch?nh các t? h?p phím b?n g?i đ?n h?p tho?i.

Cu?c bi?u t?nh này bao g?m hai Visual Các d? án cơ b?n:
  1. M?t EXE ActiveX mà cung c?p m?t b? đ?m th?i gian l?p đư?c s? d?ng đ? phát hi?n m?t s? ch?m tr?. L? do đ? s? d?ng m?t EXE ActiveX cho b? đ?m th?i gian l?p là ch?y b? đ?m th?i gian M? trong m?t quá tr?nh riêng bi?t, và do đó, m?t ch? đ? riêng bi?t. Đi?u này làm cho nó nh?t có th? cho b? đ?m th?i gian l?p đ? nâng cao m?t s? ki?n trong m?t t? đ?ng hóa b? đ?nh ch? cu?c g?i.
  2. M?t EXE tiêu chu?n mà s? d?ng t? đ?ng hóa t? và các cu?c g?i các PrintOut phương pháp đ? in m?t tài li?u. Nó s? d?ng ActiveX EXE đ? phát hi?n m?t ch?m tr? khi g?i các PrintOut phương pháp.
T?o d? án ActiveX EXE
  1. B?t đ?u Visual Basic và t?o ra m?t d? án ActiveX EXE. Class1 đư?c t?o ra theo m?c đ?nh.
  2. Trên các Dự án tr?nh đơn, nh?n vào đây đ? ch?n Thu?c tính, và sau đó thay đ?i tên d? án MyTimer.
  3. Sao chép và dán đo?n m? sau vào các Class1 mô-đun:
    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. Trên các Dự án tr?nh đơn, ch?n Thêm h?nh th?c đ? thêm m?t h?nh th?c m?i cho d? án.
  5. Thêm m?t B? đ?m th?i gian ki?m soát m?u.
  6. Sao chép và dán đo?n m? sau vào các mô-đun m? cho Form1:
    Option Explicit
    
    Public oClass1 As Class1
    
    Private Sub Timer1_Timer()
        oClass1.TimerEvent
    End Sub
    					
  7. Lưu d? án này trong m?t thư m?c con m?i đ?t tên Máy chủ.
  8. Trên các Tệp tr?nh đơn, ch?n Làm cho MyTimer.Exe đ? xây d?ng và đăng k? các thành ph?n.
T?o ra các khách hàng t? đ?ng hóa
  1. T?o m?t d? án tiêu chu?n EXE m?i trong Visual Basic. Form1 là t?o b?i m?c đ?nh.
  2. Thêm m?t CommandButton ki?m soát m?u.
  3. Trên các Dự án tr?nh đơn, ch?n Tham khảo. Thêm tài li?u tham kh?o cho các Microsoft Word 8,0 (ho?c 9,0, ho?c 10,0) đ?i tư?ng thư vi?n, và đ?n MyTimer.
  4. Sao chép và dán đo?n m? sau vào m?u module:
    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. Lưu d? án này trong m?t thư m?c con m?i đ?t tên Máy khách.
  6. Phím F5 đ? ch?y các d? án. Form1 xu?t hi?n.
  7. Nh?p vào Command1 v? h?nh th?c. Đi?u này t? đ?ng t?, cho bi?t thêm m?t tài li?u m?i v?i m?t s? văn b?n, và sau đó g?i nó ra máy in b?ng cách s? d?ng các PrintOut phương pháp. B?n không nh?n th?y h?p tho?i n?u máy in c?a b?n đư?c c?u h?nh in ra máy in.
  8. Trong b?ng đi?u khi?n c?a s?, thay đ?i máy in m?c đ?nh c?a b?n do đó nó đư?c c?u h?nh đ? in FILE vào c?ng USB.
  9. Nh?p vào Command1 m?t l?n n?a, và lưu ? r?ng m?t h?p tho?i s? xu?t hi?n trong Word. Không b? qua h?p tho?i; ch? đ?i năm giây và h?p tho?i l?p tr?nh mi?n nhi?m khi các B? đ?m th?i gian s? ki?n x?y ra. M?t t?p tin đ?u ra có tên MyOutput.prn đư?c t?o ra trong các Thư m?c con c?a khách hàng.
Microsoft cung c?p l?p tr?nh ví d? đ? minh ho? ch?, không có b?o hành ho?c th? hi?n hay ng? ?, bao g?m nhưng không gi?i h?n, b?o đ?m ng? ? kh? năng bán hàng và/ho?c cho m?t m?c đích c? th?. Bài vi?t này gi? đ?nh r?ng b?n đ? quen thu?c v?i ngôn ng? l?p tr?nh đư?c ch?ng minh và các công c? đư?c s? d?ng đ? t?o ra và g? l?i th? t?c. Microsoft h? tr? các chuyên gia có th? giúp gi?i thích các ch?c năng c?a m?t th? t?c c? th?, nhưng h? s? không s?a đ?i các ví d? đ? cung c?p thêm ch?c năng ho?c xây d?ng quy tr?nh đ? đáp ?ng nhu c?u c? th? c?a b?n.
N?u b?n có h?n ch? kinh nghi?m l?p tr?nh, b?n có th? mu?n liên h? v?i m?t Microsoft Certified Partner ho?c d?ch v? tư v?n c?a Microsoft. Đ? bi?t thêm chi ti?t, truy c?p vào các trang Web Microsoft:

Microsoft Certified đ?i tác- https://Partner.Microsoft.com/Global/30000104

D?ch v? tư v?n c?a Microsoft- http://support.Microsoft.com/GP/advisoryservice

Đ? bi?t thêm v? các tùy ch?n h? tr? có s?n và v? làm th? nào đ? liên h? v?i Microsoft, ghé thăm Web site sau c?a Microsoft:http://support.Microsoft.com/Default.aspx?SCID=FH;EN-US;CNTACTMS

THAM KH?O

Đ? bi?t thêm chi ti?t, nh?p vào s? bài vi?t sau đ? xem các bài vi?t trong cơ s? ki?n th?c Microsoft:
257757Thông tin: Cân nh?c cho phía máy ch? t? đ?ng hóa c?a văn ph?ng
226118 OFF2000: L?p tr?nh tài nguyên cho Visual Basic cho các ?ng d?ng
253235 T?p tin: Offautmn.exe th?o lu?n v? văn ph?ng 97 và t? đ?ng hóa năm 2000 và cung c?p các m?u m?
Đ? bi?t thêm chi ti?t v? văn ph?ng t? đ?ng hóa, ghé thăm trung tâm h? tr? phát tri?n văn ph?ng lúc sau Web site c?a Microsoft:
http://support.Microsoft.com/ofd

Thu?c tính

ID c?a bài: 259971 - L?n xem xét sau cùng: 21 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • 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 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
T? khóa: 
kbautomation kbhowto kbprogramming kbmt KB259971 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:259971

Cung cấp Phản hồi

 

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