Ặc ặc, sao tình hình này giống như đang rờ voi quá...
Đã nói là không tick vào Trust Access mà... đang muốn cho nó tick tự động. Cho nên mới cần là bỏ tick ra trước rồi mới test code xem coi có báo true được hay không mà.
Các anh em dành tí thời gian test giúp theo trình tự sau xem coi tình trạng có giống như mình bị hay không
- Mở file của bài 7 lên. Lúc này tình trạng có thể là True hoặc False.
- Vào cửa sổ VBE, chọn Tools, Reference và bỏ chọn 3 mục (nếu có): Microsoft Visual Basic for Applications Extensibility, Microsoft Scripting Runtime, Microsoft AtiveX Data >>>Ok
- Vào Excel Options, Trust Center > Trust Center Setting > Macro Settings, bỏ chọn Trust Access >>> Ok
- Bây giờ vào lại VBE và thử kích hoạt Sub Aut
pen. Theo mong đợi thì sẽ xuất hiện thông báo True nhưng luôn xuất hiện thông báo False và khi kiểm tra các mục Reference (tại 2) thì các mục này chưa được đánh dấu chọn.
- Nhưng nếu bây giờ ta vào Excel Option để kiểm tra thì thấy mục Trust Access đã được đánh dấu chọn rồi. Nếu ta chọn Ok để thoát thì lúc này Sub Auto sẽ chạy ào ào, nhưng nếu ta thoát của sổ này bằng phím Cancel thì Sub Auto vẫn tình trạng cũ.
Sub Yes_Trust_Access()
Dim regKey As String
regKey = "HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\OFFICE\" & Application.Version & "\Excel\Security\AccessVBOM"
With CreateObject("WScript.Shell")
If .regRead(regKey) = 0 Then .RegWrite regKey, 1, "REG_DWORD"
End With
End Sub
Sub No_Trust_Access()
Dim regKey As String
regKey = "HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\OFFICE\" & Application.Version & "\Excel\Security\AccessVBOM"
With CreateObject("WScript.Shell")
If .regRead(regKey) = 1 Then .RegWrite regKey, 0, "REG_DWORD"
End With
End Sub
nếu Anh chỉ check hay ko check thì em sử code bài 5 ok mà
Check
Không CheckPHP:Sub Yes_Trust_Access() Dim regKey As String regKey = "HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\OFFICE\" & Application.Version & "\Excel\Security\AccessVBOM" With CreateObject("WScript.Shell") If .regRead(regKey) = 0 Then .RegWrite regKey, 1, "REG_DWORD" End With End Sub
PHP:Sub No_Trust_Access() Dim regKey As String regKey = "HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\OFFICE\" & Application.Version & "\Excel\Security\AccessVBOM" With CreateObject("WScript.Shell") If .regRead(regKey) = 1 Then .RegWrite regKey, 0, "REG_DWORD" End With End Sub
Mình đang dùng Office 2010. Để mình kiểm tra thử trên máy khác xem sao. Cũng hơi tức tức.Lạ nhỉ, mình làm theo cách của mình Ok mà không cần tắt Ex đi mở lại, tức là có tác dụng tức thì, chạy được Sub Reference cuar Hải luôn (do sử dụng key trong HKEY_LOCAL_MACHINE)
Hải dùng mấy Office trong máy vậy? Có khi nào nó chạy Office này mà đăng ký cho Office khác không?
Thử chạy dòng lệnh Msgbox Excel.Application.Version hoặc Msgbox Application.Version xem.
Mình đang dùng Office 2010. Để mình kiểm tra thử trên máy khác xem sao. Cũng hơi tức tức.
Sub Auto_Open()
Dim bChk As Boolean
bChk = IsVBATrusted
If bChk = False Then ChangeVBOM
CheckReference
[COLOR=#ff0000]MsgBox IsVBATrusted[/COLOR]
End Sub
Đã kiểm tra trên máy tính của kieumanh, (có kieumanh chứng thực) các code trên đều bị giống nhau. Dù có chạy code đăng ký trong registry nhưng nếu không mở cửa số của Excel Option lên thì code nó cốc chịu hiểu. ---> đã thỏa mản vì ít nhất cũng biết có 1 máy giống như mình.
Chính là hắn rồi, phải kéo xuống mức thấp thì ok.Có khi nào liên quan đến UAC không? Kiểm tra lại xem. Nếu nó không được đặt ở mức thấp nhất thì hãy kéo thanh trượt xuống thấp, khởi động máy tính và thử lại code
Sub GetTrustAccess()
SendKeys "{ENTER}", 1 / 10000
Application.CommandBars.ExecuteMso ("MacroSecurity")
End Sub
Chính là hắn rồi, phải kéo xuống mức thấp thì ok.
........
Tuy nhiên em đã tìm ra cách không thay đổi UAC nhưng code vẫn có thể hoạt động như ý bằng cách sử dụng SendKeys
Nó đây
PHP:Sub GetTrustAccess() SendKeys "{ENTER}", 1 / 10000 Application.CommandBars.ExecuteMso ("MacroSecurity") End Sub