Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Уровень безопасности макроса
 
 автор: alexkn   (06.04.2009 в 22:28)   личное сообщение
 
 

Можно ли при открытии базы программно сразу указать низкий Уровень безопасности макроса, чтобы не было ненужных вопросов? (А2003, А2007)

  Ответить  
 
 автор: Ми   (07.04.2009 в 00:07)   личное сообщение
8 Кб.
 
 

Только с помощью сторонней программы, например этой;

  Ответить  
 
 автор: АлексейЕ   (07.04.2009 в 09:44)   личное сообщение
 
 

Этим кодом я запускаю калькулятор лизинговых платежей разработанный для наших клиентов

Option Explicit


Const strSecurity2003             =         "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\security\Level"
Const strSecurityEXCEL2003         =         "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\Level"

Const strSecurity                 =         "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\security\VBAWarnings"
Const strSecurityJet             =         "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SandBoxMode"
Const strSecurityEXCEL             =         "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\VBAWarnings"


Const strAccessPathRegKey2003     =         "HKLM\Software\Microsoft\Office\11.0\Access\InstallRoot\Path" 
Const strAccessPathRegKey         =         "HKLM\Software\Microsoft\Office\12.0\Access\InstallRoot\Path"


DIM strVersionAccessSetup
DIM AccessShell, strPathToAccess
DIM strCurrentPath, strNameFile

DIM WshShell, FSO 

On Error Resume Next

Set WshShell = CreateObject("WScript.Shell")

' ========== Получим путь к MSACCESS.EXE ===========

Set FSO = CreateObject("Scripting.FileSystemObject")

strVersionAccessSetup = ""

'2003
strPathToAccess = WshShell.RegRead(strAccessPathRegKey2003)
if err.number = 0 then 
    IF (FSO.FileExists(strPathToAccess  & "MSACCESS.exe" )) = TRUE Then
        strVersionAccessSetup = "2003"
    End If
End If
Err.Clear

'2007
If Len(strVersionAccessSetup) = 0 then
    strPathToAccess = WshShell.RegRead(strAccessPathRegKey)
    if err.number = 0 then 
        IF (FSO.FileExists(strPathToAccess  & "MSACCESS.exe" )) = TRUE Then
            strVersionAccessSetup = "2007"
        End If
    End If
End If
Err.Clear


' ========== Настроим безопасность в зависимости от версии Access ===========
If Len(strVersionAccessSetup) = 0 then
    MsgBox "MS Access на машине не найден."
Else
    strCurrentPath = Replace(WScript.ScriptFullName, WScript.ScriptName,"")
    
    IF (FSO.FileExists(strCurrentPath  & "Offer.accde" )) = TRUE Then
            strNameFile = strCurrentPath  & "Offer.accde"
        ElseIf (FSO.FileExists(strCurrentPath  & "Offer.mde" )) = TRUE Then
            strNameFile = strCurrentPath  & "Offer.mde"
    End If

    If WSHShell.RegRead(strSecurityJet) <> 2 Then
       WSHShell.RegWrite strSecurityJet, 2, "REG_DWORD"
    End If
        
    '2007
    If strVersionAccessSetup = "2007" then
        'Понижаем безопасность
        If WSHShell.RegRead(strSecurity) <> 1 Then
           WSHShell.RegWrite strSecurity, 1, "REG_DWORD"
        End If

        If WSHShell.RegRead(strSecurityEXCEL) <> 1 Then
           WSHShell.RegWrite strSecurityEXCEL, 1, "REG_DWORD"
        End If
        If Err.Number <> 0 Then  
            Err.Clear    
            WSHShell.RegWrite strSecurityEXCEL, "", "REG_DWORD"
            WSHShell.RegWrite strSecurityEXCEL, 1, "REG_DWORD"
        End If
        
        If WSHShell.RegRead(strSecurityEXCEL2003) <> 1 Then
           WSHShell.RegWrite strSecurityEXCEL2003, 1, "REG_DWORD"
        End If
        If Err.Number <> 0 Then  
            Err.Clear    
            WSHShell.RegWrite strSecurityEXCEL2003, "", "REG_DWORD"
            WSHShell.RegWrite strSecurityEXCEL2003, 1, "REG_DWORD"
        End If

    End if
    
    '2003
    If strVersionAccessSetup = "2003" then
        'Понижаем безопасность
        If WSHShell.RegRead(strSecurity2003) <> 1 Then
           WSHShell.RegWrite strSecurity2003, 1, "REG_DWORD"
        End If

        If WSHShell.RegRead(strSecurityEXCEL2003) <> 1 Then
           WSHShell.RegWrite strSecurityEXCEL2003, 1, "REG_DWORD"
        End If
        If Err.Number <> 0 Then  
            Err.Clear    
            WSHShell.RegWrite strSecurityEXCEL2003, "", "REG_DWORD"
            WSHShell.RegWrite strSecurityEXCEL2003, 1, "REG_DWORD"
        End If
    End if

    '=========== Запустим калькулятор ================
    Set AccessShell = WshShell.Exec(strPathToAccess & "MSACCESS.exe """ &  strNameFile & """" & " /cmd ""Salon""")
    
    Err.Clear

    AccessShell.visible = true
    WshShell.AppActivate("Предварительный расчет")

End if
Set AccessShell = nothing
Set WshShell = Nothing
Set FSO = Nothing

Код на VBS но без проблем должен перенестись на Access

  Ответить  
 
 автор: П.Полиграфович   (07.04.2009 в 21:38)   личное сообщение
 
 

Вот почитайте и всё встанет на свои места
http://am.rusimport.ru/MsAccess/topic.aspx?ID=646

  Ответить  
 
 автор: alexkn   (09.04.2009 в 00:44)   личное сообщение
 
 

Всем спасибо!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList