2017-06-28 86 views
-1

我有一個VBA代碼片段,我有用戶選擇一個文件來引用一個vlookup,並將其分配給一個變量UserFile。在代碼的最後,我有一個片段想要引用UserFile中的工作表。如何引用用戶定義的工作簿和工作表excel 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 

我試圖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

相關問題