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

Liên hệ QC

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,699
Giới tính
Nam
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 EXE sau đó chọn nút Open

en1.jpg


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)

en2.jpg


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

en3.jpg


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

en4.jpg


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.

en4.jpg


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

en6.jpg


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.

ExcelEnableMacro.jpg



Lê Văn Duyệt
(Tôi post lại từ bài của CLB VEC)
 

File đính kèm

  • Excel_Enable_Macro.zip
    127.6 KB · Đọc: 1,163
Lần chỉnh sửa cuối:
2) Dùng AutoIt:

autoit1.jpg


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.

autoit2.jpg


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

autoit4.jpg


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)

autoit3.jpg


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

    autoit6.jpg


    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.

autoit5.jpg


Lê Văn Duyệt
 

File đính kèm

  • TestEnableExcelFile.zip
    468 bytes · Đọc: 699
Web KT
Back
Top Bottom