 <p>Unless I misunderstand your question, you can just open a file read only. Here is a simply example, without any checks.</p> <p>To get the file path from the user use this function: </p> <pre><code>Private Function get_user_specified_filepath() As String 'or use the other code example here. Dim fd As Office.FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) fd.AllowMultiSelect = False fd.Title = "Please select the file." get_user_specified_filepath = fd.SelectedItems(1) End Function </code></pre> <p>Then just open the file read only and assign it to a variable:</p> <pre><code>dim wb as workbook set wb = Workbooks.Open(get_user_specified_filepath(), ReadOnly:=True) </code></pre>