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

Hỗ trợ dành cho Office 2003 đã kết thúc

Microsoft đã kết thúc hỗ trợ dành cho Office 2003 vào ngày 8 tháng 4 năm 2014. Thay đổi này đã ảnh hưởng đến các bản cập nhật phần mềm và các tùy chọn bảo mật của bạn. Tìm hiểu ý nghĩa của điều này với bạn và cách thực hiện để luôn được bảo vệ.

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
Bài viết này đã được lưu trữ. Bài viết được cung cấp "nguyên trạng" và sẽ không còn được cập nhật nữa.
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 ExplicitPublic Event Timer()Private oForm1 As Form1Private Sub Class_Initialize()    Set oForm1 = New Form1    oForm1.Timer1.Enabled = FalseEnd SubPrivate Sub Class_Terminate()    Me.Enabled = False    Unload oForm1    Set oForm1 = NothingEnd SubPublic Property Get Enabled() As Boolean    Enabled = oForm1.Timer1.EnabledEnd PropertyPublic 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 IfEnd PropertyPublic Property Get Interval() As Integer    Interval = oForm1.Timer1.IntervalEnd PropertyPublic Property Let Interval(ByVal vNewValue As Integer)    oForm1.Timer1.Interval = vNewValueEnd PropertyFriend Sub TimerEvent()    RaiseEvent TimerEnd 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 ExplicitPublic oClass1 As Class1Private Sub Timer1_Timer()    oClass1.TimerEventEnd 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 ExplicitPrivate oWord As Word.ApplicationPrivate strWordCaption As StringPrivate WithEvents oMyTimer As MyTimer.Class1Private Sub Form_Load()    'Create MyTimer object, and then disable it by default:    Set oMyTimer = New MyTimer.Class1    oMyTimer.Enabled = FalseEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)    'Terminate MyTimer object when the form is closed:    oMyTimer.Enabled = False    Set oMyTimer = NothingEnd SubPrivate 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:=FalseDone:    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 SubErrorHandler:    Resume DoneEnd SubPrivate 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 = FalseEnd SubPrivate 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 = sEnd 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:

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 259971 - Xem lại Lần cuối: 12/05/2015 19:47:04 - Bản sửa đổi: 2.0

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

  • kbnosurvey kbarchive kbautomation kbhowto kbprogramming kbmt KB259971 KbMtvi
Phản hồi