2017-06-28 3 views
-1

Vlookupに参照するファイルを選択して、これを変数UserFileに割り当てることができるVBAコードのスニペットがあります。コードの後半に、UserFileのシートを参照したいスニペットがあります。ユーザー定義のワークブックとワークシートを参照する方法VBA

私は、ファイルの実際の名前を入れたときにそれが名前のファイルとは反対に、どのように私は(それが毎日変わる)

これは動作しますが、それはそれはUserFileを参照するように動作させることができます動作します

Sub Macro5() 
     Dim MyFile As String 
     UserFile = Application.GetOpenFilename() 

     ActiveCell.Select 
     ActiveCell.FormulaR1C1 = _ 
      "=VLOOKUP(RC[-5],'[M2606170810.xlsx]Availability'!R3C1:R321C24,9,0)" 
     ActiveCell.Select 
     Selection.Copy 
     ActiveCell.Range("A1:A37").Select 
     ActiveSheet.Paste 
    End Sub 

これは(唯一の変化は、VLOOKUP式である)ない:

Sub Macro5() 
    Dim MyFile As String 
    UserFile = Application.GetOpenFilename() 

    ActiveCell.Select 
    ActiveCell.FormulaR1C1 = _ 
     "=VLOOKUP(RC[-5],'[UserFile]Availability'!R3C1:R321C24,9,0)" 
    ActiveCell.Select 
    Selection.Copy 
    ActiveCell.Range("A1:A37").Select 
    ActiveSheet.Paste 
End Sub 

IはReference an excel sheet from another workbook without copying the sheetを試みたが、無駄に。

私はそれが内に配置することができるように、パスとファイル名を分割する必要がありますユーザーのためのオプションを参照して、正しいファイルを選択したい、と流れ

+0

あなたは 'MyFile'を宣言し、' UserFile'をスターターに割り当てます。 –

答えて

2

でこれを追加したいです適切な場所の数式。また、Selectメソッドの使用を避けることもできます。なぜなら、これは本当に必要ではなく、非常に非効率的なためです。試してみてください...

Sub Macro5() 

    Dim UserFile As String, MyPath As String, MyFile As String 

    UserFile = Application.GetOpenFilename(_ 
     FileFilter:="Excel Files (*.xls;*.xlsx), *.xls;*.xls", Title:="Select a file") 

    If UserFile = "False" Then 
     MsgBox "User cancelled...", vbInformation 
     Exit Sub 
    End If 

    MyPath = Left(UserFile, InStrRev(UserFile, "\")) 
    MyFile = Mid(UserFile, InStrRev(UserFile, "\") + 1) 

    ActiveCell.FormulaR1C1 = _ 
     "=VLOOKUP(RC[-5],'" & MyPath & "[" & MyFile & "]Availability'!R3C1:R321C24,9,0)" 

    ActiveCell.Copy Destination:=ActiveCell.Range("A1:A37") 

End Sub 

私は、ダイアログボックスをキャンセルできるようにいくつかの行を追加しました。さらに、GetOpenFilenameメソッドのFileFilterを追加して、ユーザーが正しいファイルタイプ(つまりxlsまたはxlsx)のみを選択できるようにしました。必要に応じて変更します。

+1

これはファイル自体を参照します。私は 'Userfile.Name'または' Userfile.Fullname'を意味すると思います:)。 –

+0

@BrandonBarney 'UserFile'は単なる[n undeclared] [variant /]文字列です。 'UserFile = Application.GetOpenFilename' –

+0

@BrandonBarney私にそれを指摘してくれてありがとう。私はそれに応じて自分の投稿を編集しました。 – Domenic

関連する問題