Если пользователь нажимает кнопку Cancel , тогда функция GetOpenFilename
возвращает логическое значение False
, а не строку "false"
, поэтому вам нужно проверить значение If sFileName = False Then
и объявить его как Variant
.
Если вы открываете рабочую книгу, всегда обращайтесь к ней с переменной, чтобы вы могли легко использовать ее для доступа к рабочей книге
Dim OpenedWb As Workbook
Set OpenedWb = Workbooks.Open(sFileName)
Затем вы можете использовать переменную Wb
для ссылки на рабочую книгу.Вы открыли
OpenedWb.Worksheets("X").Activate
Обратите внимание, что использование .Select
и .Activate
является плохой практикой, и ее следует избегать ( Как избежать использования Select в Excel VBA ).Вместо этого используйте другую ссылку для ссылки на рабочую книгу.
Dim ws As Worksheet
Set ws = OpenedWb.Worksheets("X")
и получите доступ к диапазону, например ws.Range("A1").Value
.
Sub BrowseForFile()
Dim sFileName As Variant 'needs to be variant because cancel returns a boolean False
sFileName = Application.GetOpenFilename(, , "open the file: " )
If sFileName = False Then Exit Sub
MsgBox sFileName
Dim OpenedWb As Workbook
Set OpenedWb = Workbooks.Open(sFileName)
Dim ws As Worksheet
Set ws = OpenedWb.Worksheets("X")
MsgBox ws.Range("A1").Value 'output the value of `A1` in worksheet `X` of workbook `sFileName`
End Sub