Как активировать конкретную рабочую книгу и конкретный лист? - PullRequest
7 голосов
/ 08 августа 2011

Как мне активировать другую книгу из текущей книги?У меня есть текущая рабочая книга с dumb.xls и другим именем рабочей книги под названием Tire.xls. Я открыл Tire.xls из dumb.xls, используя worksbooks.open filename:= "name of the file". Он открывается, но проблема в том, что я не могу заставить его работать.

Если я скажу, cells(2,24).value=24 помещает эти значения в ячейку dumb.xls, но я хочу, чтобы это было сделано одним Tire.xls.

activesheet.cells(2,24).value=24 помещает их в Tire.xls.Но как мне активировать книгу с именем?Мне нужно открыть 3-4 книги Excel и выполнить операцию?Как активировать конкретную книгу

Я нашел этот код в Google

     activeworkbook.worksheet("sheetname").activate  ' but not working
     windows("sheetname").activate ' people on google suggested not to use

Его не активируют.Я не знаю, как заставить это работать.Может ли кто-нибудь сказать мне, как мне активировать определенную рабочую книгу и определенный лист другой рабочей книги?

Пример: у меня niko.xls и niko_2.xls открыты как рабочие книги из книги dumb.xls, так что всего 3 рабочих книгии я должен активировать 2-й лист книги niko_2.xls. Как мне это сделать?Может кто-нибудь объяснить мне синтаксис с этим примером?Заранее спасибо

Ответы [ 6 ]

15 голосов
/ 08 августа 2011

Вам не нужно активировать лист (на самом деле вы получите огромный удар по производительности). Поскольку вы объявляете объект для листа, при вызове метода, начинающегося с «wb». Вы выбираете этот объект. Например, вы можете переключаться между рабочими книгами, не активируя ничего подобного здесь:

Sub Test()

Dim wb1 As Excel.Workbook
Set wb1 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test1.xls")
Dim wb2 As Excel.Workbook
Set wb2 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test2.xls")

wb1.Sheets("Sheet1").Cells(1, 1).Value = 24
wb2.Sheets("Sheet1").Cells(1, 1).Value = 24
wb1.Sheets("Sheet1").Cells(2, 1).Value = 54

End Sub
4 голосов
/ 08 августа 2011

Вы должны установить ссылку на книгу, которую вы открываете.Затем вы можете делать с этой книгой все, что захотите, используя ее ссылку.

Dim wkb As Workbook
Set wkb = Workbooks.Open("Tire.xls") ' open workbook and set reference!

wkb.Sheets("Sheet1").Activate
wkb.Sheets("Sheet1").Cells(2, 1).Value = 123

Можно даже установить ссылку на лист, что облегчит жизнь позже:

Dim wkb As Workbook
Dim sht As Worksheet

Set wkb = Workbooks.Open("Tire.xls")
Set sht = wkb.Sheets("Sheet2")

sht.Activate
sht.Cells(2, 1) = 123

Другиеуказал, что .Activate может быть лишним в вашем случае.Вам не нужно строго активировать лист перед редактированием его ячеек.Но если это именно то, что вы хотите сделать, активация не повредит - за исключением небольшого снижения производительности, которое не должно быть заметно, если вы делаете это только один или несколько раз.Однако, если вы активируете много раз, например, в цикле, это значительно замедлит процесс, поэтому следует избегать активации.

0 голосов
/ 25 мая 2017

Вы можете попробовать это.

Workbooks("Tire.xls").Activate

ThisWorkbook.Sheets("Sheet1").Select
Cells(2,24).value=24
0 голосов
/ 25 декабря 2013

попробуйте

Windows("name.xls").Activate
0 голосов
/ 20 августа 2013

Код, который работал для меня:

ThisWorkbook.Sheets("sheetName").Activate
0 голосов
/ 08 августа 2011
Dim Wb As Excel.Workbook
Set Wb = Workbooks.Open(file_path)
Wb.Sheets("Sheet1").Cells(2,24).Value = 24
Wb.Close

Чтобы узнать имя листов для ссылки в Wb.Sheets("sheetname"), вы можете использовать следующее:

Dim sht as Worksheet    
For Each sht In tempWB.Sheets
    Debug.Print sht.Name
Next sht
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...