2016-01-20 6 views
0

Я совершенно не знаком с 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 

ответ

1

Я был в состоянии генерировать массив из диапазона с помощью следующего кода:

Option Explicit 

Sub requestFileAccess() 

Dim fileAccessGranted   As Boolean 
Dim filePermissionCandidates  As Variant 

filePermissionCandidates = Worksheets("Table1").Range("A1:A5") 
'fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates) 

End Sub 

Вместо «Таблица 1» напишите название своего листа или индекс. Наслаждайтесь! :)

+0

Благодарим Витяту за такой быстрый ответ. Да, это должно сработать. Думаю, дело в том, чтобы объявить filePermissionCandidates как вариант. Плакат на другом форуме предложил filePermissionCandidates = Application.Transpose (Range («V6: v200»). Значение) (после объявления как вариант), который я использовал, и он работает. Я проверю ваш на другом наборе файлов (так как теперь у меня уже есть доступ к критическим). Еще раз спасибо! – jan

+0

(: Да, это причина. Вы можете пойти дальше и сделать диапазон гибким. – Vityata

+0

Я только что протестировал ваше предложение, но оно дает мне ошибку времени выполнения. По-моему, для этого почему-то нужно 'Application.Transpose'. – jan

Смежные вопросы