如何在vba中传递excel公式中的excel文件名?

如何在vba中传递excel公式中的excel文件名?,vba,excel,Vba,Excel,我试图制作一个简单的vlookup宏,它从另一个工作簿获取数据,并与自动填充一起执行vlookup 我请求用户输入以选择vlookup将从中查找单元格的文件(目标文件) 问题: 我可以从路径中提取文件名,但是如果我试图直接在公式中传递变量(excel工作簿名称),则无法工作 同样需要指导 到目前为止,我的代码是: Sub Macro1() ' ' Macro1 Macro ' pdf ' ' Keyboard Sh

我试图制作一个简单的vlookup宏,它从另一个工作簿获取数据,并与自动填充一起执行vlookup

我请求用户输入以选择vlookup将从中查找单元格的文件(目标文件)

问题:

我可以从路径中提取文件名,但是如果我试图直接在公式中传递变量(excel工作簿名称),则无法工作

同样需要指导

到目前为止,我的代码是:

Sub Macro1()
       '
        ' Macro1 Macro
         ' pdf
         '
        ' Keyboard Shortcut: Ctrl+w
        '

     Dim fNameAndPath As Variant
     fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Select File To Be Opened")
     If fNameAndPath = False Then Exit Sub
     Workbooks.Open Filename:=fNameAndPath

     Filename = Right(fNameAndPath, Len(fNameAndPath) - InStrRev(fNameAndPath, "\"))
    'MsgBox Mid(filname, 1, InStr(filname, ".") - 1)

     Windows("PDF_Avatar_Geltool.xlsm").Activate
     ActiveCell.FormulaR1C1 = _
     "=VLOOKUP(RC[-1],'[Filename]3G_HW_BDR'!C4:C5,2,0)"
     Windows("3G_Allcells.xlsx").Activate


     Windows("3G_Allcells.xlsx").Activate

End Sub

您当前正在将字符串“filename”传递给公式。您只需要将变量连接到公式中

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[" & Filename & "]3G_HW_BDR'!C4:C5,2,0)"

无论何时在字符串中包含变量,都需要使用符号将其连接到字符串中。

您当前正在将字符串“filename”传递给公式。您只需要将变量连接到公式中

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[" & Filename & "]3G_HW_BDR'!C4:C5,2,0)"
每当在字符串中包含变量时,都需要使用符号将其连接到字符串中。

Range()。Address(External:=True)
返回可在公式中使用的有效外部地址

Dim fNameAndPath As Variant
fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Select File To Be Opened")
If fNameAndPath = False Then Exit Sub

With Workbooks.Open(Filename:=fNameAndPath)
    With .Worksheets("3G_HW_BDR")
        Windows("PDF_Avatar_Geltool.xlsm").Activate
        ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1]," & .Range("C4:C5").Address(Extrenal:=True) & ",2,0)"

    End With
End With

Windows("3G_Allcells.xlsx").Activate
Range().Address(外部:=True)
返回可在公式中使用的有效外部地址

Dim fNameAndPath As Variant
fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Select File To Be Opened")
If fNameAndPath = False Then Exit Sub

With Workbooks.Open(Filename:=fNameAndPath)
    With .Worksheets("3G_HW_BDR")
        Windows("PDF_Avatar_Geltool.xlsm").Activate
        ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1]," & .Range("C4:C5").Address(Extrenal:=True) & ",2,0)"

    End With
End With

Windows("3G_Allcells.xlsx").Activate