2017-01-24 7 views
0

VLOOKUPを含むマクロを作成しようとしていますが、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 
+0

私はあなたがそれを割り当てた後に何が来ていますか?コードにはなぜそれが表示されるのかを示すコードはありません。 –

+0

あなたの投稿を間違えて編集しました。最後の(誤った)式を編集して再入力してください –

+0

編集して再入力 – Gareth

答えて

1

は、Excelで "予約語" をVLOOKUPではないですか?既に存在するExcel関数を使用しようとしているため、関数が機能していない可能性があります。多分あなたの関数 "MYVLOOKUP"を呼び出して、それが機能するかどうかを見てみてください。

ブライアン

+0

彼はセルの式としてその文字列を設定しています – ashbygeek

1

Excelはあなたのファイル名をフォーマットした方法が嫌いです。あなたはこのようにそれをフォーマットすることができるようにディレクトリとNAME.EXTに分割する必要があります。 'c:\path\to\file\[filename.ext]worksheetName'!F1

編集

私は、これはそれが他の言語であるとVBAのように単純ではないことを忘れてしまいました。一番簡単な方法はFileSystemObjectを使うことですが、まずそれを参照する必要があります。このスタックオーバーフローの答えに参照を追加する方法に関する指示を見ることができます:https://stackoverflow.com/a/1755577/2295754

ここでは、他のstackoverflow答えよりも少し指導が必要な場合、FileSystemObjectを使用する方法の例です。

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

私は新人です...どうやってそれをしますか? "directory"という名前の新しい変数を作成し、何かを割り当ててファイル名を付け加える必要がありますか? – Gareth

+0

あなたの質問に答えるために投稿を編集しました – ashbygeek

+0

ありがとうございました。私はそれを試しましたが、私はそれが正しいと確信していません。私はオープニングポストでそれを追加しました、あなたは私が台無しにした場所を見ることができますか? – Gareth