Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Tóm tắt

Khi tự động hóa sản phẩm Office từ Visual Basic, việc di chuyển một phần mã sang mô-đun Microsoft Visual Basic for Applications (VBA) có thể chạy bên trong không gian quy trình của máy chủ có thể sẽ hữu ích. Điều này có thể tăng tốc độ thực thi tổng thể cho ứng dụng của bạn và giúp giảm bớt các vấn đề nếu máy chủ chỉ thực hiện một hành động khi một cuộc gọi được thực hiện trong tiến trình.

Bài viết này giải thích cách tự động thêm một mô-đun VBA vào một ứng dụng Office đang chạy từ Visual Basic, rồi gọi macro để điền một trang tính đang thực hiện.

Thông tin Bổ sung

Mẫu sau đây minh họa cách chèn mô-đun mã vào Microsoft Excel nhưng bạn có thể sử dụng cùng một kỹ thuật đó cho Word và PowerPoint vì cả hai đều kết hợp cùng một công cụ VBA.

Mẫu sử dụng một tệp văn bản tĩnh cho mô-đun mã được chèn vào Excel. Bạn có thể muốn xem xét việc di chuyển mã vào một tệp tài nguyên mà bạn có thể biên soạn vào ứng dụng của mình, rồi trích xuất vào một tệp tạm thời khi cần tại thời điểm chạy. Điều này giúp dự án dễ quản lý hơn để phân phối lại.

Bắt đầu với Microsoft Office XP, người dùng phải cấp quyền truy nhập vào mô hình đối tượng VBA trước khi bất kỳ mã Tự động hóa nào được viết để thao tác với VBA sẽ hoạt động. Đây là tính năng bảo mật mới với Office XP. Để biết thêm thông tin, vui lòng xem bài viết cơ sở Kiến thức sau đây:

282830 Programmatic Access to Office XP VBA Project Denied

Các bước xây dựng mẫu

  1. Trước tiên, hãy tạo một tệp văn bản mới có tên là KbTest.bas (không có phần mở .txt mới). Đây là mô-đun mã mà chúng tôi sẽ chèn vào Excel thời gian chạy.

  2. Trong tệp văn bản, hãy thêm các dòng mã sau đây:

       Attribute VB_Name = "KbTest"

    ' Your Microsoft Visual Basic for Applications macro function takes 1
    ' parameter, the sheet object that you are going to fill.

    Public Sub DoKbTest(oSheetToFill As Object)
    Dim i As Integer, j As Integer
    Dim sMsg As String
    For i = 1 To 100
    For j = 1 To 10

    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheetToFill.Cells(i, j).Value = sMsg
    Next j
    Next i
    End Sub
  3. Lưu tệp văn bản vào thư mục C:\KbTest.bas, rồi đóng tệp.

  4. Bắt Visual Basic và tạo dự án chuẩn. Form1 được tạo theo mặc định.

  5. Trên menu Project, bấm vào Tham vấn, rồi chọn phiên bản thư viện loại phù hợp, cho phép bạn sử dụng gắn kết sớm với thư viện Excel.

    Ví dụ: chọn một trong các mục sau:

    • Ví Microsoft Office Excel 2007, chọn thư viện 12.0.

    • Ví Microsoft Office Excel 2003, chọn thư viện 11.0.

    • Ví Microsoft Excel 2002, chọn thư viện 10.0.

    • Ví Microsoft Excel 2000, hãy chọn thư viện 9.0.

    • Ví Microsoft Excel 97, chọn thư viện 8.0.

  6. Thêm một nút vào Form1 và đặt mã sau đây trong bộ xử lý cho sự kiện Click của nút:

       Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim i As Integer, j As Integer
    Dim sMsg As String

    ' Create a new instance of Excel and make it visible.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Add a new workbook and set a reference to Sheet1.
    Set oBook = oXL.Workbooks.Add
    Set oSheet = oBook.Sheets(1)

    ' Demo standard Automation from out-of-process,
    ' this routine simply fills in values of cells.
    sMsg = "Fill the sheet from out-of-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    For i = 1 To 100
    For j = 1 To 10
    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheet.Cells(i, j).Value = sMsg
    Next j
    Next i

    ' You're done with the first test, now switch sheets
    ' and run the same routine via an inserted Microsoft Visual Basic
    ' for Applications macro.
    MsgBox "Done.", vbMsgBoxSetForeground
    Set oSheet = oBook.Sheets.Add
    oSheet.Activate

    sMsg = "Fill the sheet from in-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    ' The Import method lets you add modules to VBA at
    ' run time. Change the file path to match the location
    ' of the text file you created in step 3.
    oXL.VBE.ActiveVBProject.VBComponents.Import "C:\KbTest.bas"

    ' Now run the macro, passing oSheet as the first parameter
    oXL.Run "DoKbTest", oSheet

    ' You're done with the second test
    MsgBox "Done.", vbMsgBoxSetForeground

    ' Turn instance of Excel over to end user and release
    ' any outstanding object references.
    oXL.UserControl = True
    Set oSheet = Nothing
    Set oBook = Nothing
    Set oXL = Nothing

    End Sub
  7. Đối Excel 2002 và đối với các phiên bản mới hơn của Excel, bạn phải bật truy nhập vào dự án VBA. Để thực hiện việc này, hãy sử dụng một trong các phương pháp sau:

    • Trong Excel 2007, bấm vào nút Microsoft Office, rồi bấm vào tùy Excel chọn. Bấm Trung tâm Tin cậy, rồi bấm Trung tâm Tin cậy Cài đặt. Bấm Macro Cài đặt, bấm để chọn hộp kiểm Tin cậy Access vào mô hình đối tượng dự án VBA, rồi bấm OK hai lần.

    • Trong Excel 2003 và trong các phiên bản Excel cũ hơn, trỏ tới Macrotrên menu Công cụ, rồi bấm vào Bảo mật. Trong hộp thoại Bảo mật, hãy bấm tab Nguồn Tin cậy, rồi bấm để chọn hộp kiểm Truy nhập tin Visual Basic Project Tin cậy.

  8. Chạy dự Visual Basic án mới.

Tham khảo

Để biết thêm thông tin về Tự động Office Tự động hóa từ Visual Basic, vui lòng xem site Hỗ trợ Phát triển Office chính tại địa chỉ sau đây:

http://support.microsoft.com/ofd

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×