Làm Thế Nào để Tự động Thêm Và Chạy Macro VBA Từ Visual Basic

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. Applies ToMicrosoft Office Professional Edition 2003 Excel 2010

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

Facebook LinkedIn Email ĐĂNG KÝ NGUỒN CẤP DỮ LIỆU RSS

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ộng đồng

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.

Lợi ích đăng ký Microsoft 365

Nội dung đào tạo về Microsoft 365

Bảo mật Microsoft

Trung tâm trợ năng

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ú.

Hỏi Cộng đồng Microsoft

Cộng đồng Kỹ thuật Microsoft

Người dùng Nội bộ Windows

Người dùng nội bộ Microsoft 365

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

Có Không (Gửi ý kiến phản hồi cho Microsoft để chúng tôi có thể trợ giúp.) 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? Đã giải quyết vấn đề của tôi Hướng dẫn Rõ ràng Dễ theo dõi Không có thuật ngữ Hình ảnh có ích Chất lượng dịch thuật Không khớp với màn hình của tôi Hướng dẫn không chính xác Quá kỹ thuật Không đủ thông tin Không đủ hình ảnh Chất lượng dịch thuật Bất kỳ thông tin phản hồi bổ sung? (Không bắt buộc) Gửi phản hồi 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!

×

Từ khóa » Thư Viện Vba Excel