Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel vba是否从列中列出的多个工作簿中获取值?_Excel_Vba - Fatal编程技术网

Excel vba是否从列中列出的多个工作簿中获取值?

Excel vba是否从列中列出的多个工作簿中获取值?,excel,vba,Excel,Vba,我有一本工作簿,G列有其他工作簿 Folder\File1.xls Folder\File2.xls Folder\File3.xls Folder\File4.xls 下面的vba代码从所有这些工作簿中的单元格C15获取电子邮件地址,并将其添加到U列,如下所示: Folder\File1.xls Email Folder\File2.xls Email Folder\File3.xls Email Folder\File4.xls

我有一本工作簿,G列有其他工作簿

Folder\File1.xls
Folder\File2.xls
Folder\File3.xls
Folder\File4.xls
下面的vba代码从所有这些工作簿中的单元格C15获取电子邮件地址,并将其添加到U列,如下所示:

Folder\File1.xls          Email
Folder\File2.xls          Email
Folder\File3.xls          Email
Folder\File4.xls          Email
这是我的密码

'//Email copy code

Dim startCell As Range, fileRng As Range
Dim files As Variant, values() As Variant, values2() As Variant
Dim path As String, file As String, arg As String
Dim r As Long, i As Long

'Acquire the names of your files
With ThisWorkbook.Worksheets(1) 'amend to your sheet name
    Set startCell = .Range("G17") 'amend to start cell of file names
    Set fileRng = .Range(startCell, .Cells(.Rows.Count, startCell.Column).End(xlUp))
End With
files = fileRng.Value2

'Size your output array
ReDim values(1 To UBound(files, 1), 1 To 1)


'Populate output array with values from workbooks
For r = 1 To UBound(files, 1)
    'Create argument to read workbook value
    i = InStrRev(files(r, 1), "\")
    path = Left(files(r, 1), i)
    file = Right(files(r, 1), Len(files(r, 1)) - i)
    arg = "'" & path & "[" & file & "]Sheet1'!R15C3"
    'Acquire the value
    values(r, 1) = ExecuteExcel4Macro(arg)

Next


'Write values to sheet
fileRng.Offset(, 20).Value = values
这段代码在我家的windows笔记本电脑上运行。然而,在工作中,我的IT部门禁用了CMD和其他shell函数的使用,我相信这段代码是用来从工作簿中获取值的

因此,此代码不会从列C15中获取值


有人能给我一个解决办法吗?谢谢

这个解决方法怎么样:

arg = path & "[" & file & "]Sheet1'!R15C3"
'Acquire the value
values(r, 1) = arg
'values(r, 1) = ExecuteExcel4Macro(arg)

这样行吗?它生产什么?它应该生产什么?

这似乎不起作用。它应该给我一个来自工作簿单元格C15的电子邮件地址。相反,您的代码为我提供了工作簿路径,请参见下面的“G:\BUYING\Food Specials\2”。规划\3。确认和交付\announces\2017\KW11\Multy[Multy KW11.17.xlsx]Sheet1'!R15C3可以再试一次吗?:)感谢您再次尝试,虽然代码看起来像是在一瞬间打开了cmd窗口,但与之前相同的结果是givenOk,原因之一是代码看起来很像我昨天给您的代码()-您至少应该参考您的源代码;另一方面,2天7个问题,只有两个被接受的答案,这是一个非常糟糕的展示,而不是这个网站是如何运作的。也许你应该对你要求别人做的所有工作表现出一些优雅。