Dùng macro4 ngoài macro sheet

Liên hệ QC

kelvin

Thành viên thường trực
Tham gia
24/6/06
Bài viết
202
Được thích
184
Nghề nghiệp
Tư vấn xây dựng, kinh doanh in ấn
Thông thường ta dùng macro4 trong macro sheet, nhưng thực ra còn có thể dùng nó trong hộp thoại Name, trong VBE,...?
Thread mong muốn sưu tập các cách xử dụng nầy.
 
ActiveCell = ExecuteExcel4Macro(Evaluate("4*5"))
Đã dùng thử hàm tính giá trị của biểu thức dạng text, biểu thức có thể là reference. Dùng VBE để gọi thẳng 1 hàm macro4, xem file đính kèm.
 

File đính kèm

  • Evaluate_RunFromVBEmacro4.xls
    27 KB · Đọc: 474
Lần chỉnh sửa cuối:
HYen đã viết:
Vô menu Insert -> Name -> Define ; Trong ngăn Names in Workbook ta nhập : GiaiPhapExcel; Trong ngăn Refers to: ta nhập chuỗi: "Khai trương ngày 02 tháng 07 năm 2006." & Add! Sau khi OK trở về bảng tính ta tìm vùng trống & nhập =GiaiPhapExcel & Enter xem việc gì sẽ đến đã đến!
Không biết HYen có hiểu ý của bác Kelvin không? Vì anh Kelvin đang bàn về Macro4 mà.
 
Cái món này hay đấy
ActiveCell = ExecuteExcel4Macro(Evaluate("4*5"))
 
Gửi các bạn xem thử 1 cách gọi SheetMacro chạy, từ 1 Workbbook khác, rồi close Source macro4 lại
Trong wb:ReturnWbName_M4.xls có 1 SheetMacro4 ẩn, làm sao thấy được đây, đố các bạn ?
 

File đính kèm

  • ChayMacro4 o ngoai.zip
    13.5 KB · Đọc: 208
Gửi các bạn xem thử 1 cách gọi SheetMacro chạy, từ 1 Workbbook khác, rồi close Source macro4 lại
Trong wb:ReturnWbName_M4.xls có 1 SheetMacro4 ẩn, làm sao thấy được đây, đố các bạn ?
Dùng bình thường thì em không biết, chứ dùng VBA để hiển thị lại thì được ạ :
PHP:
Sub UnhideSheet()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim Sh As Worksheet
    For Each Sh In ActiveWorkbook.Sheets
        If Not Sh.Visible = xlSheetVisible Then Sh.Visible = xlSheetVisible
    Next
    Application.ScreenUpdating = True
End Sub

Thân!
 
uhm,cũng hay đấy.Vấn dề ở chỗ mình thấy sao trong VBA Editor, không thấy có liệt kê MacroSheet trong cửa sổ Project Explorer -> nếu không nói có Sheet ẩn trước, ít ai nghĩ ra là nó nằm ở đâu
 
uhm,cũng hay đấy.Vấn dề ở chỗ mình thấy sao trong VBA Editor, không thấy có liệt kê MacroSheet trong cửa sổ Project Explorer -> nếu không nói có Sheet ẩn trước, ít ai nghĩ ra là nó nằm ở đâu
Bạn kelvin có thể chỉ cho cách phát hiện sheet ẩn này ko? Tất nhiên là ngoài cách dùng VBA như Bắp vừa làm ở trên!
(vụ này hơi bị hay)
ANH TUẤN
 
cung đơn giản thôi, lúc rảnh tôi lò mò ba cái macro4 cũ:
=WORKBOOK.HIDE("Macro1";TRUE)
=RETURN()
NGUYÊN văn trong Help:
WORKBOOK.HIDE(sheet_text, very_hidden)

Sheet_text is the name of the sheet to hide. If omitted, the currently selected sheet(s) are hidden.
Very_hidden specifies how the sheet is hidden. If TRUE, then the sheet name does not appear in the Unhide dialog box. After using this argument, use WORKBOOK.UNHIDE to unhide the sheet. If FALSE or omitted, hides the sheet but does not prevent the sheet's name from appearing in the Unhide dialog box.

Remarks

If the structure of the workbook is protected, you cannot hide any sheets in the workbook.
You cannot hide the last visible sheet in a workbook.
To hide Sheet1:Sheet10, select them first with the WORKBOOK.SELECT function. You can also place the sheets in an array first, as in {"Sheet1", "Sheet2", "Sheet3",...}.
 
Oh... ho... sao mình quên các hàm macro 4 nhỉ?
Tôi dùng:
Mã:
 Sh =GET.WORKBOOK(1)
cũng phát hiện ra dc có 1 sheet đang ẩn đấy!
 
Dùng bình thường thì em không biết, chứ dùng VBA để hiển thị lại thì được ạ :
PHP:
Sub UnhideSheet()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim Sh As Worksheet
    For Each Sh In ActiveWorkbook.Sheets
        If Not Sh.Visible = xlSheetVisible Then Sh.Visible = xlSheetVisible
    Next
    Application.ScreenUpdating = True
End Sub
Thân!

Để hiện ra cả các Sheet Macro các bạn chú ý :
PHP:
ActiveWorkbook.Sheets

Chứ không phải là :
PHP:
ActiveWorkbook.Worksheets

Thân!
 
Oh... ho... sao mình quên các hàm macro 4 nhỉ?
Tôi dùng:
Mã:
 Sh =GET.WORKBOOK(1)
cũng phát hiện ra dc có 1 sheet đang ẩn đấy!
=GET.WORKBOOK(1)
=RETURN()
The names of all sheets in the workbook, as a horizontal array of text values.
Trả về dãy ngang chứa tên của tất cả các bảng tính trong Workbook
Viết code làm sao để nó hiện tất cả các tên đây?(bằng macro4).Viết như trên thì nó chỉ trả vè có 1 Sheet
Trích sách :Thường ta dùng hàm SET.NAME để gán 1tên cho dãy trả về, muốn thực hiện một hành động nào đó dùng INDEX;p 311
 
Lần chỉnh sửa cuối:
Bác kelvin rất giỏi về macro4, không hiểu bác có biết cơ chế lây virus macro4 không ạ?
 
Bác kelvin rất giỏi về macro4, không hiểu bác có biết cơ chế lây virus macro4 không ạ?

Ví dụ về viết virus macro mức đơn giản thế này

B1) Lấy một file Excel hấp dẫn, tạo một sheet loại Macro4.0 gọi là "KissMe"
B2) Soạn lệnh và hàm trong sheet "KissMe". Nội dung của nó như sau
+ Tạo thủ tục Auto_Open(), Auto_Close(), Auto_Active(),...
+ Viết các lệnh trong các thủ tục trên, nội dung copy, paste lung tung cả váo các workbook đang mở, thâm độc hơn làm lệnh copy sheet "KissMe" cho các workbook đang mở (và như thế con virus "KissMe" được nhân bản...)
+ Tạo thuộc tính ẩn cho sheet "KissMe", ẩn code, ẩn dòng, cột​

Người ta viết virus bằng macro4.0 vì dễ giấu, dễ sao chép còn những cái khác thua hẳn VBA.

Mà đơn giản cực kỳ là viết một vòng lặp tìm và xóa tất cả các file trong C:\WINDOWS\System32\ thì bà con khóc luôn. Kiểu viết này thì khỏi cần nhân bản mà cài lại máy.:-=
 
Lần chỉnh sửa cuối:
=GET.WORKBOOK(1)
=RETURN()
The names of all sheets in the workbook, as a horizontal array of text values.
Trả về dãy ngang chứa tên của tất cả các bảng tính trong Workbook
Viết code làm sao để nó hiện tất cả các tên đây?(bằng macro4).Viết như trên thì nó chỉ trả vè có 1 Sheet
Làm sao cho sheet ẩn hiện lên thì tôi không biết nhưng ít ra với code đơn giản này tôi có thể phát hiện thực chất trong Workbook có tồn tại sheet ẩn hay không!
Tôi chỉ cần làm như sau:
1> Đặt name
Mã:
Sh =GET.WORKBOOK(1)
2> Trong bảng tính tôi gõ vào 1 cell nào đó công thức:
=Sh
3> Quét chọn công thức trên thanh Formula rồi bấm F9 sẽ thấy liền
 
Bác kelvin rất giỏi về macro4, không hiểu bác có biết cơ chế lây virus macro4 không ạ?
Cám ơn bạn, mình chỉ biết sơ qua thôi,và cũng đúng như Tuân nói,công nghệ lập trình ngày càng mạnh và dể dùng hơn, giờ thì .net, web 2,3.0,,mobile chứ ai mà đi lui lại
 
Nghe nói TuHuong có về Quế Sơn-Đà Nẳng công tác, tiêc là biết trể quá, mình vốn sinh ra ở đó, nhưng từ 1961 đến nay chưa có dịp về lại, hic hic
 
nhân tiẹn bạn nào thích thì đọc thêm:
---Because some Excel add-ins were created using XLM, you may need to add the following registry entry to each user's computer to allow the macros to run. The same is true for add-ins created from XLM macros you want to run as exceptions under High macro security in Excel. To add this entry, you can use a transform, configuration maintenance file (CMW file), or REG file.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Excel\Security

Value name: XLM

Value type: DWORD (integer)

Value data: [ 0 | 1 ]

...
Xem đầy đủ tại:
http://office.microsoft.com/search/redir.aspx?assetid=HA101494521033&CTT=96&Origin=CL100750261033
search topic: Understanding Macro Security Levels in Office
 
để MS Excel 2003 luôn để securiry ở Low (ng dùng không chỉnh sửa lại được) bạn thử import vào reg dòng sau: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Excel\Security]
"Level"=dword:00000001
-khi cài 1 số phần mềm antivirus ( như Norton Antivirus,..), nếu các bạn chú ý có chọn option đại loại cho phép check virus khi Excel khởi động, nó sẽ kiểm tra virus trước tất cả: dir xlstart, even wb_ open....Dùng các phần mềm theo dỏi cài đặt/thay đổi reg, sử dụng dll....bạn sẽ biết thêm nhiều thông tin cũng hay hay đấy
 
để MS Excel 2003 luôn để securiry ở Low (ng dùng không chỉnh sửa lại được) bạn thử import vào reg dòng sau: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Excel\Security]
"Level"=dword:00000001
Thế nếu tôi chỉnh Level = 2 trước, sau đó khóa key Security lại thì làm sao mà phần mềm của bạn có thể Import thông tin vào đây?
 
Web KT
Back
Top Bottom