RaoVat24h
Excel Office

Mở tập tin Excel có macro mà không cần phải Enable

Advertisement
Khi tạo một ứng dụng Excel, đôi lúc bạn muốn người dùng khi mở tập tin ra không cần phải nhấn vào nút Enable Macro.

Tôi xin giới thiệu các cách sau:

1) Dùng Visual Basic 6.0

Kỹ thuật Tạo một Front Loader cho ứng dụng Excel của bạn bằng Visual Basic 6.0

Đầu tiên bạn mở VB 6.0 ra, chọn Standard EXEsau đó chọn nút Open



Bạn thêm vào một module, và đặt tên module là MTestSC (hoặc tên gì thì tùy bạn)

 

Sau đó các bạn thêm vào đọan mã như sau:

Mã:
Public Sub Main() 
Dim xlApp As Excel.Application
Dim wkbNeedOpen As Excel.Workbook
Set xlApp = New Excel.Application
On Error Resume Next
With xlApp
.Visible = True
.UserControl = True
Set wkbNeedOpen = [COLOR="Blue"].Workbooks.Open(App.Path & "TapTinCanMo.xls")[/COLOR] 'Bạn phải điều chỉnh đoạn mã này cho phù hợp
wkbNeedOpen.RunAutoMacros xlAutoOpen
End With
If Err.Number <> 0 Then
MsgBox "Tập tin không tìm thấy."), vbInformation + vbOKOnly, "Thông báo"
End If
Set wkbNeedOpen = Nothing
Set xlApp = Nothing
End Sub

Trong đọan mã trên chúng ta cần chú ý:
_ Cách mà thủ tục Sub Main thao tác với Excel: đầu tiên mở Excel ra với câu lệnh

Mã:
Set xlApp = New Excel.Application

Sau đó làm cho nó Visible

Mã:
.Visible = True

Vậy còn đọan code

Mã:
.UserControl = True

thì sao? Nó sẽ làm cho Excel mà chúng ta mở theo cách này cũng giống như cách mở thông thường.
_ Mở Workbook chúng ta cần

Mã:
Set wkbNeedOpen = .Workbooks.Open(App.Path & "TapTinCanMo.xls")

Khi chúng ta mở theo cách này Excel sẽ không thực thi thủ tục Auto_Open mà chúng ta phải dùng

Mã:
wkbNeedOpen.RunAutoMacros xlAutoOpen

để thực thi thủ tục trên.
_ Trong trường hợp trong file Excel của chúng ta cần thêm các Add-In khác thì chúng ta cũng phải mở tương tự như trên.
Và các lệnh cuối cùng trong thủ tục trên là giải phóng bộ nhớ.

Thông thường mở một Standard EXE, sau khi biên dịch và thực thi thì một form sẽ được hiện đầu tiên. Chúng ta cần phải chỉnh lại thủ tục Sub Main phải được thực hiện đầu tiên.

Bạn vào Properties của project 

 

Trong Tab General, trong hộp thọai Startup Object: bạn chọn thủ tục Sub Main
Xong thì chọn OK



Sau đó bạn biên dịch thành file *.exe
Đặt file thực thi này vào cùng thư mục với file Excel 
Bạn muốn mở mà không cần phải chọn Enable Macro.



Ngòai ra bạn chú ý ở Tab Make, chọn cho phù hợp.



Ví dụ: xin xem tập tin đính kèm.

Chú ý: Bạn phải tham chiếu đến Excel như hình sau để tránh lỗi User-defined type not defined.



(Tôi post lại từ bài của CLB VEC)

File đính kèm

2) Dùng AutoIt:

 

Phiên bản AutoIt hiện tại là phiên bản 3.3.6.1.
Phiên bản này được đưa ra ngày 16/04/2010.



Các bạn xem thêm ở đây.

Các bạn hãy mở tập tin đính kèm TestEnableExcelFile.au3 sau khi các bạn đã tải về AutoIt và cài đặt trên máy của mình.
Hoặc các bạn chỉ cần Click phải chuột khi chọn tập tin này và chọn Edit Script


Mã:
#include <Excel.au3>
#region Excel - Enable Macro
;[COLOR="Red"]Đường dẫn tập tin[/COLOR]
$FileName = "[COLOR="Blue"]D:ReportsDaily_Delivery_Report.xlsm[/COLOR]"
;[COLOR="Red"]Tên macro để thực thi sau khi mở[/COLOR]
$Cont="Auto_Open"
;[COLOR="Red"]Tạo đối tượng Excel[/COLOR]
$oExcelDoc = ObjCreate("Excel.Application")
$oExcelDoc.AutomationSecurity = 1 ; [COLOR="Red"]Thiết lập mức macro security để Enable các Macro[/COLOR]
$oExcelDoc.Visible = 1 ; [COLOR="Red"]Cho ứng dụng hiện[/COLOR]
$oExcelDoc.WorkBooks.Open($FileName) ; [COLOR="Red"]Mở tập tin Excel[/COLOR]
;[COLOR="Red"]Thực thi macro[/COLOR]
$oExcelDoc.Run($Cont)



Sau đó bạn có thể:

  • Menu Tools > Build: để biên dịch thành tập tin thực thi.
  • Menu Tools > Compile: để biên dịch



    Hoặc bạn có thể click phải chuột vào tập tin TestEnableExcelFile.au3 rồi chọn Compile cũng được.



Lê Văn Duyệt

File đính kèm

?DienDan.Edu.Vn cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn. https://diendan.edu.vn/
?Thanks

Rate this post

DienDan.Edu.Vn

DienDan.Edu.Vn Cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn.
DienDan.Edu.Vn! là một website với tiêu chí chia sẻ thông tin,... Bạn có thể nhận xét, bổ sung hay yêu cầu hướng dẫn liên quan đến bài viết. Vậy nên đề nghị các bạn cũng không quảng cáo trong comment này ngoại trừ trong chính phần tên của bạn.
Cám ơn.

Đăng bình luận

(+84) (901) 369.468