2016-09-16 36 views
0

我試圖做一個簡單的vlookup宏,它從另一個工作簿獲取數據並執行vlookup以及自動填充如何在excel公式中傳遞excel文件名?

我要求用戶輸入從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 

回答

4

您目前正在傳遞字符串「文件名」的公式。你只需要將變量連接到公式中。

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

無論何時在字符串中包含一個變量,您都需要使用&字符串將其連接到字符串中。

+0

謝謝!這解決了我的問題! –

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 
+0

這也是一個很好的方法!謝謝 ! –