Я совершенно не знаком с VBA (и на этом форуме), поэтому приношу свои извинения, если это довольно простой вопрос. Мне нужно получить пути к файлу из столбца в листе Excel и превратить их в массив, который будет использоваться в макросе для GrantAccessToMultipleFiles.Включить диапазон ячеек в массив для GrantAccessToMultipleFiles (Excel, VBA)
Я создаю базу данных в книге, которая проверяет наличие файлов на внешнем жестком диске (всего около 10.000 файлов), и я хочу предоставить предварительное разрешение на доступ к этим файлам заранее, чтобы избежать щелчка в тысячу раз раздражающий диалог доступа к грантам в Excel 2016.
Я выделил дополнительный столбец в листе Excel, чтобы вычислить пути к файлам для файлов и превратить их в текст, прежде чем настраивать макрос, чтобы проверить существование файла, и Я хочу сначала запустить команду GrantAccessToMultipleFiles, чтобы получить доступ до ввода формулы.
Я создал макрос с этим кодом от: https://dev.office.com/blogs/VBA-improvements-in-Office-2016
Sub requestFileAccess()
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates
filePermissionCandidates = Array("/Users/xyz/Desktop/test1.txt", "/Users/xyz/Desktop/test2.txt")
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
End Sub
Когда я проверить его, подставив пример пути с путями из файла он делает работу, но я понятия не имею, как автоматически извлечь пути из столбца и превратить их в массив, который будет использоваться в макросе.
Я попытался с
filePermissionCandidates = Array(Range("V5:V100"))
и некоторые другие комбинации, но безрезультатно.
Если бы кто-нибудь мог указать мне в правильном направлении, которое было бы высоко оценено.
EDIT (только для использования в будущем):
Это правильная версия:
Sub requestFileAccess()
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates
filePermissionCandidates = Application.Transpose(Worksheets("Sheet1").Range("AB7:AB10"))
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
End Sub
Благодарим Витяту за такой быстрый ответ. Да, это должно сработать. Думаю, дело в том, чтобы объявить filePermissionCandidates как вариант. Плакат на другом форуме предложил filePermissionCandidates = Application.Transpose (Range («V6: v200»). Значение) (после объявления как вариант), который я использовал, и он работает. Я проверю ваш на другом наборе файлов (так как теперь у меня уже есть доступ к критическим). Еще раз спасибо! – jan
(: Да, это причина. Вы можете пойти дальше и сделать диапазон гибким. – Vityata
Я только что протестировал ваше предложение, но оно дает мне ошибку времени выполнения. По-моему, для этого почему-то нужно 'Application.Transpose'. – jan