Офис Надежные местоположения - PullRequest
1 голос
/ 03 июня 2010

Мне интересно, как лучше всего подойти к этой ситуации. У меня есть старая рабочая тетрадь VBA, которая отлично работает как есть. К сожалению, благодаря новым мерам безопасности в Office 2007/2010 вы получаете сообщение «Предупреждение безопасности: некоторые активные материалы отключены». Я знаю, что могу нажать на сообщение и выбрать включить содержимое или добавить его в надежное расположение. К сожалению, делать это каждый раз - небольшая боль для конечных пользователей. Поэтому я создал проект установки в Visual Studio, который запускает консольное приложение, которое копирует файл в папку шаблонов, а затем помещает на него ярлык на рабочем столе. Поддержание этого является проблемой, потому что я не добавляю обновления в файл Excel, инженер делает. Поэтому я должен заново создать файл setup.exe для 32/64 бит.

Какое лучшее решение?

Он должен работать с 32-разрядной версией Windows Vista / 7 и 32-разрядной версией Office 2007/2010, и пользователи будут иметь разные навыки работы с компьютером.

Ответы [ 3 ]

0 голосов
/ 28 декабря 2013

У меня похожая ситуация, и я позаботился об этом с некоторыми записями реестра.

HKCU\Software\Microsoft\Office\12.0\Excel\Security\Trusted Locations\AllowNetworkLocations=1 [DWORD]
HKCU\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM=1 [DWORD]
KHCU\Software\Microsoft\Office\12.0\Excel\Security\VBAWarnings=1 [DWORD]
KHLM\Software\Microsoft\Office\Common\Security\UFIControls=1 [DWORD]

Возможно, вам поможет быстрый поиск в Google по записям реестра безопасности VBA.

0 голосов
/ 23 января 2015

Поздно здесь игра, но это обычное раздражение: вам нужно определить «Надежное местоположение».

Большинство разработчиков сталкиваются с проблемой, с которой вы сталкиваетесь, когда их код пытается открыть файл электронной таблицы, и они получают это бесполезное сообщение об ошибке:

"Office обнаружил проблему с этим файлом. Чтобы защитить компьютер, этот файл не может быть открыт."

Если вы являетесь средним или экспертным специалистом по кодированию VBA (или с любым распространенным языком сценариев), посмотрите код надежного расположения, опубликованный Дэниелом Пайно на DevHut.net в 2010 году:

Пример кода DevHut: надежное расположение с использованием VBScript

Для вашего удобства, вот моя реализация в Excel:


Public Sub TrustThisFolder(Optional FolderPath As String, _ Optional TrustSubfolders As Boolean = True, _ Optional TrustNetworkFolders As Boolean = False, _ Optional sDescription As String) ' Add a folder to the 'Trusted Locations' list so that your project's VBA can ' open Excel files without raising errors like "Office has detected a problem ' with this file. To help protect your computer this file cannot be opened." ' Ths function has been implemented to fail silently on error: if you suspect ' that users don't have permission to assign 'Trusted Location' status in all ' locations, reformulate this as a function returning True or False ' Nigel Heffernan January 2015 ' ' Based on code published by Daniel Pineault in DevHut.net on June 23, 2010: ' www.devhut.net\2010\06\23\vbscript-createset-trusted-location-using-vbscript\ ' **** **** **** **** THIS CODE IS IN THE PUBLIC DOMAIN **** **** **** **** ' UNIT TESTING: ' ' 1: Reinstate the commented-out line 'Debug.Print sSubKey & vbTab & sPath ' 2: Open the Immediate Window and run this command: ' TrustThisFolder "Z:\", True, True, "The user's home directory" ' 3: If "Z:\" is already in the list, choose another folder ' 4: Repeat step 2 or 3: the folder should be listed in the debug output ' 5: If it isn't listed, disable the error-handler and record any errors ' On Error GoTo ErrSub Dim sKeyPath As String Dim oRegistry As Object Dim sSubKey As String Dim oSubKeys ' type not specified. After it's populated, it can be iterated Dim oSubKey ' type not specified. Dim bSubFolders As Boolean Dim bNetworkLocation As Boolean Dim iTrustNetwork As Long Dim sPath As String Dim sDate As String Dim sDesc As String Dim i As Long Const HKEY_CURRENT_USER = &H80000001 bSubFolders = True bNetworkLocation = False If FolderPath = "" Then FolderPath = FSO.GetSpecialFolder(2).Path If sDescription = "" Then sDescription = "The user's local temp folder" End If End If If Right(FolderPath, 1) <> "\" Then FolderPath = FolderPath & "\" End If sKeyPath = "" sKeyPath = sKeyPath & "SOFTWARE\Microsoft\Office\" sKeyPath = sKeyPath & Application.Version sKeyPath = sKeyPath & "\Excel\Security\Trusted Locations\" Set oRegistry = GetObject("winmgmts:\.\root\default:StdRegProv") ' Note: not the usual \root\cimv2 for WMI scripting: the StdRegProv isn't in that folder oRegistry.EnumKey HKEY_CURRENT_USER, sKeyPath, oSubKeys For Each oSubKey In oSubKeys sSubKey = CStr(oSubKey) oRegistry.GetStringValue HKEY_CURRENT_USER, sKeyPath & "\" & sSubKey, "Path", sPath 'Debug.Print sSubKey & vbTab & sPath If sPath = FolderPath Then Exit For End If Next oSubKey If sPath <> FolderPath Then If IsNumeric(Replace(sSubKey, "Location", "")) Then i = CLng(Replace(sSubKey, "Location", "")) + 1 Else i = UBound(oSubKeys) + 1 End If sSubKey = "Location" & CStr(i) If TrustNetworkFolders Then iTrustNetwork = 1 oRegistry.GetDWORDValue HKEY_CURRENT_USER, sKeyPath, "AllowNetworkLocations", iTrustNetwork If iTrustNetwork = 0 Then oRegistry.SetDWORDValue HKEY_CURRENT_USER, sKeyPath, "AllowNetworkLocations", 1 End If End If oRegistry.CreateKey HKEY_CURRENT_USER, sKeyPath & "\" & sSubKey oRegistry.SetStringValue HKEY_CURRENT_USER, sKeyPath & "\" & sSubKey, "Path", FolderPath oRegistry.SetStringValue HKEY_CURRENT_USER, sKeyPath & "\" & sSubKey, "Description", sDescription oRegistry.SetDWORDValue HKEY_CURRENT_USER, sKeyPath & "\" & sSubKey, "AllowSubFolders", 1 End If ExitSub: Set oRegistry = Nothing Exit Sub ErrSub: Resume ExitSub End Sub

Сохраните, пожалуйста, подтверждения в коде, если вы будете использовать его повторно: это отличит вас (и StackOverflow) от других постов и других сайтов, где эксперты (и другие) обмениваются знаниями без подтверждения.

0 голосов
/ 28 декабря 2013

Отправить эту ссылку всем пользователям. Это довольно хороший пример того, как убедиться, что ваш файл открывается с включенными макросами. Это также дает вам несколько разных способов сделать это в зависимости от вашей ситуации.

http://office.microsoft.com/en-us/excel-help/enable-or-disable-macros-in-office-files-HA010354316.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...