2016-09-16 1 views
0

私は別のブックからデータを取得し、自動入力と共にvlookupを実行する簡単なvlookupマクロを作成しようとしていますvbaのExcel式でファイル名を渡すには?

私は、vlookupがセルを検索する場所)

問題:

私は式で直接(ワークブック名​​をエクセル)変数を渡すしようとした場合しかし、それは

についてのガイダンスを必要と動作しません、パスからファイル名を抽出することができます同じ

私のコードは、これまでのところ、このです:

Sub Macro1() 
     ' 
     ' Macro1 Macro 
     ' pdf 
     ' 
     ' Keyboard Shortcut: Ctrl+w 
     ' 

    Dim fNameAndPath As Variant 
    fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Select File To Be Opened") 
    If fNameAndPath = False Then Exit Sub 
    Workbooks.Open Filename:=fNameAndPath 

    Filename = Right(fNameAndPath, Len(fNameAndPath) - InStrRev(fNameAndPath, "\")) 
    'MsgBox Mid(filname, 1, InStr(filname, ".") - 1) 

    Windows("PDF_Avatar_Geltool.xlsm").Activate 
    ActiveCell.FormulaR1C1 = _ 
    "=VLOOKUP(RC[-1],'[Filename]3G_HW_BDR'!C4:C5,2,0)" 
    Windows("3G_Allcells.xlsx").Activate 


    Windows("3G_Allcells.xlsx").Activate 

End Sub 

答えて

4

あなたは現在の式に文字列「ファイル名」を渡しています。変数を数式に連結するだけで済みます。

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[" & Filename & "]3G_HW_BDR'!C4:C5,2,0)" 

文字列に変数を含める場合は、アンパサンドを使用して文字列に連結する必要があります。

+0

ありがとうございます!それは私の質問を解決! –

0

Range().Address(External:=True)公式で使用できる有効な外部アドレスを返します。

Dim fNameAndPath As Variant 
fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Select File To Be Opened") 
If fNameAndPath = False Then Exit Sub 

With Workbooks.Open(Filename:=fNameAndPath) 
    With .Worksheets("3G_HW_BDR") 
     Windows("PDF_Avatar_Geltool.xlsm").Activate 
     ActiveCell.FormulaR1C1 = _ 
     "=VLOOKUP(RC[-1]," & .Range("C4:C5").Address(Extrenal:=True) & ",2,0)" 

    End With 
End With 

Windows("3G_Allcells.xlsx").Activate 
+0

これも良いアプローチです!ありがとう! –

関連する問題