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

Sah*_*rma 0 excel vba excel-vba

我正在尝试创建一个简单的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
Run Code Online (Sandbox Code Playgroud)

luk*_*e_t 5

您当前正在将字符串"filename"传递给公式.您只需将变量连接到公式中即可.

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

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