如何将公式(从网络驱动器上的另一个文件中读取数据而不打开它)分配到另一个Excel文件中的单元格,在同一个驱动器上,但在另一个文件夹中?
最终用户拥有网络驱动器上所有文件夹的访问权限,因此无需用户名和密码。
我是VBA的新手,并尝试使用以下代码但提示找到并打开数据文件:
wso2server.bat
答案 0 :(得分:2)
尝试将NetworkPath
写为公式中的变量:
.Range("C2").Formula = "=SUM(" & Network_Path & "\[Source_File.xlsx]Data'!$B$2:$B$20)"
关于带变量的公式的一般调试,请尝试以下简单技巧:
Public Sub TestMe()
Dim np As String 'do not use "_" in file name FWIW
np = "C:\Users\" 'or something else
Debug.Print "=IFERROR(INDEX('" & np & "[Source_File.xlsx]Data'!A:A; MATCH('Sheet1'!C3;'" & np & "[Source_File.xlsx]Data'!R:R; 0)); "")"
End Sub
然后查看即时窗口中的内容。按 Ctrl + G 将其打开。当前公式的结果是:
=IFERROR(INDEX('C:\Users\[Source_File.xlsx]Data'!A:A; MATCH('Sheet1'!C3;'C:\Users\[Source_File.xlsx]Data'!R:R; 0)); ")
然后尝试将公式复制到Excel文件中,如果有效,那就没问题了。
另一个选择是尝试做相反的事情。例如,在Excel中编写公式,因为它应该编写并确保它有效。然后选择具有公式的单元格并运行以下命令:
Public Sub PrintMeUsefulFormula()
Dim myFormula As String
Dim myParenth As String
myParenth = """"
myFormula = Selection.Formula
myFormula = Replace(myFormula, """", """""")
myFormula = myParenth & myFormula & myParenth
Debug.Print myFormula
End Sub
它将在即时窗口中打印公式,因为它应该在VBA中使用。然后用变量替换路径并尝试一下。