VLOOKUPmacros的可重用性

我正在尝试创build一个包含VLOOKUP的macros,但每次都会更改VLOOKUP文件。 我希望VLOOKUP中的参考文件是一个variables。 理想情况下,macros将提示用户select一个他们希望从VLOOKUP的文件。 到目前为止,我有这个,但它似乎并没有工作…(“testing”是什么工作表命名)。

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丰田testingCOMPLETE.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 

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

布赖恩

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的实际使用,希望你能自己select。 哦,这是它:

 Range("M12").FormulaR1C1 = "=VLOOKUP(RC[-11],'" & myFilename & "test'!C9:C10,2,0)"