VLOOKUP宏的可重用性

问题描述 投票:0回答:2

我正在尝试创建一个包含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没有显示它应该如何。例如

=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
excel vba
2个回答
1
投票

在Excel中,VLOOKUP不是“保留字”吗?您的功能可能无法正常工作,因为您正在尝试使用已存在的Excel功能。也许尝试调用你的函数“MYVLOOKUP”,看看是否有效。

布赖恩


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 & "]"

Aaditi

所以,我上次故意遗漏了myFilename的实际用途,希望你能自己选择。哦,好吧,这是:

Range("M12").FormulaR1C1 = "=VLOOKUP(RC[-11],'" & myFilename & "test'!C9:C10,2,0)"
© www.soinside.com 2019 - 2024. All rights reserved.