Reputation: 2419
I'm using excel VBA. I want to press a button that opens another file directly without the effect of "choosing file window".
This is the current code:
Sub loadFile_click()
Workbooks.Open("C:\Users\GIL\Desktop\ObsReportExcelWorkbook.xlsx")
End Sub
In this case, the file is in the same folder as the main file.
Is there any way to do it without entering the file's path?
Upvotes: 16
Views: 101101
Reputation: 433
Open Folder of ActiveWorkBook
Sub OpenFolderofProject()
Dim strMsg As String, strTitle As String
Dim sFolder As String
sFolder = ThisWorkbook.Path
strMsg = "Open WorkBook Folder Location? "
strTitle = "Folder Location:" & sFolder
If MsgBox(strMsg, vbQuestion + vbYesNo, strTitle) = vbNo Then
Else
Call Shell("explorer.exe " & sFolder, vbNormalFocus)
End If
End Sub
Context: Usually your revisions on your project consistently Change, or you have a automaticially generated Workbook with a dynamic name. Whatever the Case. This will know your workbook path location and ask if you want to open that specific folder.
This was very useful for me when i dynamically saved out a bunch of Excels programmatically in the same folder of the workbook. Because instead of closing/minimizing the workbook to go to explorer. I could focus on the project and not lose train of thought.
Upvotes: -1
Reputation: 20044
If the file is in the same folder as the document containing your VBA macro, use
ThisWorkbook.Path
for example:
Workbooks.Open(ThisWorkbook.Path & "\ObsReportExcelWorkbook.xlsx")
(this works even if the document is not the active one any more, or you changed the current directory).
Upvotes: 12
Reputation: 6152
If the file name is fixed you can use the ActiveWorkbook.Path function to return the path of the current workbook:
Dim FileName as string
FileName = ActiveWorkbook.Path & "\myfile.xlsx
Check if you need that extra slash character.
Upvotes: 33
Reputation: 12329
If it is in the same folder, then
Workbooks.Open("ObsReportExcelWorkbook.xlsx")
or
Workbooks.Open(".\ObsReportExcelWorkbook.xlsx")
should work. I just tried both in Excel VBA, with success.
Upvotes: 2