Excel VBA:从未打开的.xlsx文件中获取单元格值

时间:2018-05-28 15:23:33

标签: vba excel-vba excel

所以基本上我想编写自动(在其他文档中)基于其他单元格值计算范围值然后将其导出到模板excel文件的宏。

我有这段代码可以获取应该从中提取数据的文件的路径:

Sub GetFilePath()
Dim objFSO As New FileSystemObject
Dim BBuy, SSell As String

Set myFile = Application.FileDialog(msoFileDialogOpen)
    With myFile
        .Title = "Choose File"
        .AllowMultiSelect = False
            If .Show <> -1 Then
                Exit Sub
            End If
        Fileselected = .SelectedItems(1)
    End With

然后Fileselected的值=&#34; C:\ Users \ ABC \ Desktop \ report sample.xlsx&#34;

如何在= SUMIF公式中引用此Excel文件?

我尝试了类似下面的内容,但没有真正起作用,Google也没有真正的帮助:

BBuy = "Buy"
Fileselected.Formula = "=sumif(A2:A2500, BBuy, N2:N2500)"

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:0)

Heyho,

如果你想引用另一张纸的范围或单元格,你必须尝试如下:

'path[filename.xls]Sheetname'!$A$2:$A$2500

您是否尝试过使用它?

答案 1 :(得分:0)

为了使公式更容易阅读,我宣布了SumIf标准和变量X,它是存储SumIf输出的地方。

Dim MyRange1 as Range
MyRange1 = myFile.Sheets("Your Sheet Name Here").Range("A2:A2500")
Dim MyRange2 as Range
MyRange2 = myFile.Sheets("Your Sheet Name Here").Range("N2:N2500")
Dim BBuy as String
BBuy = "Buy"

Dim X as Variant
X = Application.WorksheetFunction.SumIf((MyRange1, BBuy, MyRange2)

您不必将这些声明为变量,因为您可以在公式中引用它们并将上面的代码减少到一行(2行包括&#34; Dim X作为Variant&#34;)。例如,要替换公式中的范围和标准:

X = Application.WorksheetFunction.SumIf(myFile.sheets("Your Sheet Name Here").Range("A2:A2500), "Buy", myFile.Sheets("Your Sheet Name Here").Range("N2:N2500))

现在您有想要存储在变量&#34; X&#34;中的答案。如果您只想在某处粘贴值,则可以将当前工作簿上的范围设置为等于X.