我正在尝试创建一个包含VLOOKUP的宏,但VLOOKUP文件每次都会更改。我希望VLOOKUP中的引用文件是一个变量。理想情况下,宏会提示用户选择他们希望VLOOKUP的文件。到目前为止,我有这个,但它似乎没有工作......("测试"是工作表的名称)。
Sub VLOOKUP()
Application.ScreenUpdating = False
Dim myFilename As String
MsgBox "Please choose file with name to use in VLOOKUP formula.", vbOKOnly, "Choose file"
myFilename = CStr(Application.GetOpenFilename)
Range("M12").FormulaR1C1 = "=VLOOKUP(RC[-11],'[" & myFilename & "]test'!C9:C10,2,0)"
End Sub
然而,单元格中的VLOOKUP没有显示它应该如何。 e.g。
=VLOOKUP(B12,'[G:\OPS\National Pricing Data And Risk\Vehicle Pricing\VP Work\Gareth\Even Newer Toyota Macro Test\[Z401 Toyota Test COMPLETE.xlsx]test]Z401 Toyota Test COMPLETE.xlsx]'!$I:$J,2,0)
我不确定Z401丰田测试COMPLETE.xlsx]的来源。我有什么遗漏/没有正确做的事吗?
编辑:
Sub VLOOKUP()
Application.ScreenUpdating = False
Dim fullPath As String
Dim tmpName As String
Dim tmpPath As String
Dim myFilename As String
fullPath = "G:\OPS\National Pricing Data And Risk\Calculators, Docs, Templates & Guides\Toyota Macros.xlsm"
tmpName = fso.GetFileName(fullPath)
tmpPath = fso.GetParentFolderName(fullPath)
myFilename = tmpPath & "\[" & tmpName & "]"
Range("M12").FormulaR1C1 = "=VLOOKUP(RC[-11],'[" & myFilename & "]test'!C9:C10,2,0)"
End Sub
答案 0 :(得分:1)
Excel中的VLOOKUP不是“保留字”吗?您的功能可能无法正常工作,因为您正在尝试使用已存在的Excel功能。也许尝试调用你的函数“MYVLOOKUP”,看看是否有效。
布赖恩
答案 1 :(得分:1)
Excel不喜欢您格式化文件名的方式。您需要将其拆分为目录和name.ext,以便您可以将其格式化为:
'c:\path\to\file\[filename.ext]worksheetName'!F1
修改强>
我忘记了这在VBA中并不像在其他语言中那样简单。最简单的方法是使用FileSystemObject,但要使用它首先必须引用它。您可以在此stackoverflow答案中查看有关如何添加引用的说明:https://stackoverflow.com/a/1755577/2295754。
这是一个如何使用FileSystemObject的示例,以防您需要比其他stackoverflow答案提供的更多指导。
Dim fso As New FileSystemObject
fullPath = "D:\Ashby\Documents\test2.xlsx"
tmpName = fso.GetFileName(fullPath )
tmpPath = fso.GetParentFolderName(fullPath )
myFilename = tmpPath & "\[" & tmpName & "]"
<强> EDIT2 强>
所以,我上次故意遗漏了myFilename的实际用法,希望你能自己选择。哦,好吧,这是:
Range("M12").FormulaR1C1 = "=VLOOKUP(RC[-11],'" & myFilename & "test'!C9:C10,2,0)"