将单元格范围转换为GrantAccessToMultipleFiles(Excel,VBA)的数组

时间:2016-01-20 07:33:48

标签: vba excel-vba excel

我对VBA(以及本论坛)全新,所以如果这是一个相当基本的问题,我很抱歉。我需要从Excel工作表中的列中获取文件路径,并将它们转换为要在Macro到GrantAccessToMultipleFiles的宏中使用的数组。

我正在工作簿中创建一个数据库,用于检查外部硬盘上是否存在文件(总共约10.000个文件),并且我希望授予excel权限以提前访问这些文件,以避免必须点击数千个在Excel 2016中令人烦恼的Grant Access对话框。

我在Excel工作表中专门设置了一个额外的列来计算文件的文件路径,并在设置宏以检查文件是否存在之前将其转换为文本,我想首先运行GrantAccessToMultipleFiles命令以获取在输入公式之前进入。

我使用以下代码创建了一个宏:https://dev.office.com/blogs/VBA-improvements-in-Office-2016

Sphere

当我通过用文件中的路径替换示例路径来测试它时它确实有效,但我不知道如何从列中自动提取路径并将它们转换为要在宏中使用的数组。

我试过

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"))

1 个答案:

答案 0 :(得分: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和#34;,写下工作表的名称或索引。 请享用! :)