2016-02-15 69 views
0

我目前正在用VBA編寫一個Programm程序,它從文件夾C:Reports打開特定的excel文件。我需要能夠從這個文件夾中的用戶輸入動態地打開文件,例如;用Excel打開一個文件用Excel輸入VBA

1)用戶得到一個對話框,看到第一個問題「文件的名稱是什麼」,他/她必須鍵入文件名而不看文件的文件夾。他輸入的文件名必須在C:Reports中,否則應該打印出「File not Found」

2)輸入文件名後,他得到另一個關於ID號的問題,這是一個列中的值所需的文件打開包括。如果文件名與文件中的ID匹配,則應打開文件,否則應打印「文件名和ID不匹配」

有沒有人有解決方案?

+0

太棒了! harun24hr thx很多! –

+0

你應該接受我的答案,因爲它適合你。選擇綠色我的答案。 – harun24hr

回答

0

檢查此子。這應該適合你

Sub OpenFileIfDataExist() 
On Error GoTo HarunErrHandler 
Dim strWorkBook As Excel.Workbook 
Dim SearRange As Range 
Dim FSO As Object 
Dim strFileName, strFilePath As String 
Dim strID As String 
Dim lnCheckID As Long 

    strFileName = InputBox("Enter your file name.", "File Name") 
    strFilePath = "C:\Reports\" & strFileName & ".xlsx" 
    Set FSO = CreateObject("scripting.filesystemobject") 


    If FSO.FileExists(strFilePath) = True Then 
     Set strWorkBook = GetObject(strFilePath) 
     Set SearRange = strWorkBook.Sheets(1).Range("A1:A1000") 

      strID = InputBox("Enter ID.", "ID Input") 
      lnCheckID = Application.WorksheetFunction.Match(strID, SearRange, 0) 

      If lnCheckID > 0 Then 
       Workbooks.Open (strFilePath) 
      End If 

    Else 
     MsgBox "File Name does not match" 
    End If 

Exit Sub 
HarunErrHandler: 
MsgBox "File Name and ID does not match.", vbInformation, "Nothing Found" 
End Sub 
+0

你必須爲你想要的列和範圍編輯一點。我使用'Sheet1'作爲工作表,'Range(「A1:A1000」)'作爲搜索範圍。 – harun24hr

+0

記住另一件事,我使用文件擴展名'.xlsx'。如果您的文件擴展名不同(xls,xlsm etx),則更正它。 – harun24hr

+0

工作得很好!非常感謝 –