Sunday, April 14, 2019

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


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

.com/proxy/


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)

.com/proxy/
  

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 Autdata:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///pen 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 

.com/proxy/
  

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

.com/proxy/


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.

.com/proxy/


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

.com/proxy/


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.

.com/proxy/


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

File đính kèm

2) Dùng AutoIt:

.com/proxy/
  

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.

.com/proxy/


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

.com/proxy/


Mã:
#include <Excel.au3>
#region Excel - Enable Macro
;[COLOR="Red"]Đường dẫn tập tin[/COLOR]
$FileName = "[COLOR="Blue"]D:\Reports\Daily_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)
.com/proxy/


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

    .com/proxy/


    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.

.com/proxy/

File đính kèm

No comments:

Post a Comment

Over 50 Ebooks Excel and VBA free Download

1. Statistics and Probability for Engineering Applications With Microsoft Excel by W.J. DeCoursey - PDF Free Download Download Siz...