使用VBA将公式分配给Excel单元格

时间:2017-12-21 09:42:31

标签: excel vba excel-vba excel-formula

如何将公式(从网络驱动器上的另一个文件中读取数据而不打开它)分配到另一个Excel文件中的单元格,在同一个驱动器上,但在另一个文件夹中?

最终用户拥有网络驱动器上所有文件夹的访问权限,因此无需用户名和密码。

我是VBA的新手,并尝试使用以下代码但提示找到并打开数据文件:

wso2server.bat

1 个答案:

答案 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)); ")

因此,您可能必须找到一种方法来删除最后的"符号: enter image description here

然后尝试将公式复制到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中使用。然后用变量替换路径并尝试一下。