2016-05-27 11 views
1

私は多かれ少なかれ自動化を行う予定で、Excel VBAの使用を考えています。基本的には、別のワークブックから別のワークブックのデータをフェッチする必要があります。私が試してみました。このため別のブックからのVlookupを使用したときのトラブル

Dim openWb As Workbook 
Dim openWs As Worksheet 

Path = Dir("PathToFile\File.xlsx") 
filepath = "PathToFile" 

Set openWb = Workbooks.Open(filepath & Path) 
Set openWs = openWb.Sheets("Sheet1") 

currentwb.Sheets("Sheet2").Cells.(2, 20).Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1)) 

を私が達成したいどのような「ジョン」に対応する行からの値と「年齢」に対応する列を取得するために基本的です。他の誰かがファイルを変更して問題を起こさないようにするために、ちょうど1つの列ではなく、かなり大きな範囲でMatchを使用しています。

これは私の行の構文エラーを与える:

Value = openWs.VLOOKUP("John",openWs.Range("A1:S30"), openWs.Match("Age", openWs.Range(A1:S1)) 

私はそれが私がVLOOKUP引数の内側に「openWs」と、このような使用方法に関係していることを前提としています。誰かが私が間違っていると思った場所を特定できますか?

私はプログラムが後で新しいパスと新しいファイルパスを毎月持っているので、パスとファイルパスを変数として使用しています。これは私がそれを達成するために知っている最善の方法です(基本的にパスとファイルパスは月の名前私は今日の日付に基づいて交わる年の名前)。

+0

をあなたは 'vlookup'前に' worksheetfunction'を追加する必要がありますが、私はに探してお勧め'見つける'。 – findwindow

答えて

3

それが読み込まれるように、「アプリケーション」とのマッチとVLOOKUPの前で「openWs」のすべてを置き換えます

Value = Application.VLOOKUP("John",openWs.Range("A1:S30"), Application.Match("Age", openWs.Range("A1:S1"))) 
+0

ユーザは 'Match'関数の最後の引数も明示的に設定することができます。 –

+0

VBEにはコンパイラエラーがあるような誤植がないかチェックしてください。 – skkakkar

+1

@Devin Trowbridgeこれは〜Match( "Age"、openWs.Range( "A1:S1")))〜〜〜A1:S1〜 – skkakkar

関連する問題