Làm Thế Nào để Tự động Thêm Và Chạy Macro VBA Từ Visual Basic
Có thể bạn quan tâm
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
-
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.
-
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 -
Lưu tệp văn bản vào thư mục C:\KbTest.bas, rồi đóng tệp.
-
Bắt Visual Basic và tạo dự án chuẩn. Form1 được tạo theo mặc định.
-
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.
-
-
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 -
Đố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.
-
-
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
Từ khóa » Cài Vba Cho Excel
-
Cách Cài đặt VBA Trong Excel
-
Cách Thêm Gói Cài đặt Visual Basic Application Trong Microsoft Office
-
Cách Chèn Và Chạy Mã VBA Trong Excel 2010 - 2016 Cho Người Mới
-
Cách Mở VBA Trong Excel - Thủ Thuật
-
HƯỚNG DẪN CÁCH MỞ VBA TRONG EXCEL VÀ CÁCH TÍNH SỐ ...
-
Cài đặt VBA Trong Excel - Khắc Phục Lỗi Không Chạy Macro
-
Cách Cài Vba Cho Excel 2010, Cách Chèn Và Chạy Mã Vba Trong ...
-
Lập Trình VBA Trong Excel Cho Người Mới Bắt đầu - YouTube
-
MS Excel 2016: Cách Mở VBA - Freetuts
-
Tìm Hiểu/ Giới Thiệu Về Macro Và Cách Lập Trình VBA Trong Excel
-
Hướng Dẫn Cài đặt VBA Trong Excel
-
VBA Là Gì? Những điều Cơ Bản Về VBA Trong Excel
-
Cách Mở VBA Trong Excel - Cẩm Nang Tiếng Anh
-
03 Nguyên Nhân Khiến Excel Không Chạy được Code VBA Và Cách ...