worksheet.activate не активируется - PullRequest
0 голосов
/ 11 ноября 2010

Фрагмент кода ниже предназначен для открытия определенного листа определенного файла XL и превращения его в активный лист. Тем не менее, debug.print дает вывод различных листов. Разве objws.activate не должен делать объекты активными листами?

Dim XLApp As New Excel.Application
Dim ObjXL As Excel.Workbook
Dim ObjWS As Excel.Worksheet

Set ObjXL = XLApp.Workbooks.Open(TargetXL)
Set ObjWS = ObjXL.Worksheets(TargetWS)
ObjWS.Activate
Debug.Print ObjWS.Application.ActiveSheet.Name & "," & ObjWS.Name

Ответы [ 2 ]

4 голосов
/ 11 ноября 2010

Ваша строка отладки печатает имя активного листа приложения, который может быть листом в книге, отличной от только что открытой книги.Если вы сначала активируете эту книгу, то активный лист приложения должен стать листом в этой книге.Т.е.

Dim XLApp As New Excel.Application
Dim ObjXL As Excel.Workbook
Dim ObjWS As Excel.Worksheet

Set ObjXL = XLApp.Workbooks.Open(TargetXL)
Set ObjWS = ObjXL.Worksheets(TargetWS)
ObjXL.Activate ' add this line
ObjWS.Activate
Debug.Print ObjWS.Application.ActiveSheet.Name & "," & ObjWS.Name

Вы также можете подумать, действительно ли вам нужно активировать рабочий лист.Если пользователю особенно необходимо просматривать лист после запуска VBA, это является уважительной причиной.Однако, если вам нужно действовать только на листе в вашем коде, вы можете просто ссылаться на все его свойства, используя переменную ObjWS, фактически не активируя ее.

0 голосов
/ 11 ноября 2010

Попробуйте вместо этого выбрать ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...